다음을 통해 공유


Visual Studio의 Windows Communication Foundation Services 및 WCF Data Services

Visual Studio는 분산 애플리케이션을 만들기 위한 Microsoft 기술인 WCF(Windows Communication Foundation) 및 WCF Data Services를 사용하기 위한 도구를 제공합니다. 이 문서에서는 Visual Studio 관점에서 서비스를 소개합니다. 전체 설명서는 WCF Data Services 4.5를 참조하세요.

WCF(Windows Communication Foundation)는 안전하고 안정적이며 거래되고 상호 운용 가능한 분산 애플리케이션을 만들기 위한 통합 프레임워크입니다. ASMX 웹 서비스, .NET Remoting, Enterprise Services(DCOM(분산 구성 요소 개체 모델) 및 MSMQ(Microsoft Message Queue)와 같은 이전 프로세스 간 통신 기술을 대체합니다. WCF는 통합 프로그래밍 모델에서 이러한 모든 기술의 기능을 결합합니다. 이 방법은 분산 애플리케이션 개발 환경을 간소화합니다.

WCF Data Services

WCF Data Services는 Open Data(OData(Open Data Protocol)) 프로토콜 표준의 구현입니다. WCF Data Services를 사용하면 테이블 형식 데이터를 REST API 집합으로 노출할 수 있습니다. 이 API를 사용하면 표준 HTTP 명령(예GET: , POSTPUTDELETE)을 사용하여 데이터를 반환할 수 있습니다. 서버 쪽에서 ASP.NET Web API 는 새 OData 서비스를 만들기 위해 WCF Data Services를 대체합니다. WCF Data Services 클라이언트 라이브러리는 Visual Studio(프로젝트>서비스 참조)에서 .NET 애플리케이션에서 OData 서비스를 사용하는 데 계속 적합합니다. 자세한 내용은 WCF Data Services 4.5를 참조하세요.

WCF 프로그래밍 모델

WCF 프로그래밍 모델은 WCF 서비스와 WCF 클라이언트라는 두 엔터티 간의 통신을 기반으로 합니다. 프로그래밍 모델은 .NET의 네임스페이 System.ServiceModel 스에 캡슐화됩니다.

WCF 서비스

WCF 서비스는 서비스와 클라이언트 간의 계약을 정의하는 인터페이스를 기반으로 합니다. 서비스는 ServiceContractAttribute 속성으로 표시되며 다음 코드에 나와 있습니다.

[ServiceContract]
public interface IService1

WCF 서비스에서 노출하는 함수 또는 메서드를 특성으로 OperationContractAttribute 표시하여 정의합니다.

[OperationContract]
string GetData(string value);

복합 형식을 특성으로 DataContractAttribute 표시하여 직렬화된 데이터를 노출할 수도 있습니다. 그러면 클라이언트에서 데이터 바인딩이 가능합니다.

인터페이스와 해당 메서드가 정의되면 인터페이스를 구현하는 클래스에 캡슐화됩니다. 단일 WCF 서비스 클래스는 여러 서비스 계약을 구현할 수 있습니다.

WCF 서비스는 엔드포인트라고 하는 항목을 통해 사용할 수 있습니다. 엔드포인트는 서비스와 통신할 수 있는 유일한 방법을 제공합니다. 다른 클래스와 마찬가지로 직접 참조를 통해 서비스에 액세스할 수 없습니다.

엔드포인트는 주소, 바인딩 및 계약으로 구성됩니다. 주소는 URL, FTP(파일 전송 프로토콜) 주소 또는 네트워크 또는 로컬 경로와 같은 서비스가 있는 위치를 정의합니다. 바인딩은 서비스와 통신하는 방법을 정의합니다. WCF 바인딩은 Windows 인증 또는 사용자 이름 및 암호와 같은 보안 메커니즘을 사용하여 HTTP 또는 FTP와 같은 프로토콜을 지정하기 위한 다양한 모델을 제공합니다. 계약에는 WCF 서비스 클래스에서 노출하는 작업이 포함됩니다.

단일 WCF 서비스에 대해 여러 엔드포인트를 노출할 수 있습니다. 이 방법을 사용하면 다른 클라이언트가 서로 다른 방식으로 동일한 서비스와 통신할 수 있습니다. 예를 들어 은행 서비스는 직원을 위한 엔드포인트 하나와 외부 고객을 위한 엔드포인트를 제공할 수 있습니다. 여기서 각각 다른 주소, 바인딩 또는 계약을 사용합니다.

WCF 클라이언트

WCF 클라이언트는 애플리케이션이 WCF 서비스와 통신할 수 있도록 하는 프록시 및 서비스에 대해 정의된 엔드포인트와 일치하는 엔드포인트로 구성됩니다. 프록시는 app.config 파일의 클라이언트 쪽에서 생성되며 서비스에서 노출되는 형식 및 메서드에 대한 정보를 포함합니다. 여러 엔드포인트를 노출하는 서비스의 경우 클라이언트는 필요에 가장 적합한 엔드포인트를 선택하여 HTTP를 통해 통신하고 Windows 인증을 사용할 수 있습니다.

WCF 클라이언트를 만든 후 다른 개체와 마찬가지로 코드에서 서비스를 참조합니다. 예를 들어 앞에서 보여 준 메서드를 GetData 호출하려면 다음 예제와 유사한 코드를 작성합니다.

private void button1_Click(System.Object sender, System.EventArgs e)
{
    ServiceReference1.Service1Client client = new
        ServiceReference1.Service1Client();
    string returnString;

    returnString = client.GetData(textBox1.Text);
    label1.Text = returnString;
}

Visual Studio의 WCF 도구

Visual Studio는 WCF 서비스와 WCF 클라이언트를 모두 만드는 데 도움이 되는 도구를 제공합니다. 자세한 내용은 연습: Windows Forms에서 간단한 WCF 서비스 만들기를 참조하세요.

WCF 서비스 만들기 및 테스트

WCF Visual Studio 템플릿을 기초로 사용하여 사용자 고유의 서비스를 빠르게 만들 수 있습니다. 그런 다음 WCF 서비스 자동 호스트 및 WCF 테스트 클라이언트를 사용하여 서비스를 디버그하고 테스트할 수 있습니다. 이러한 도구는 빠르고 편리한 디버그 및 테스트 주기를 제공하며, 초기 단계에서 호스팅 모델에 커밋해야 하는 요구 사항을 제거합니다.

WCF 템플릿

WCF Visual Studio 템플릿은 서비스 개발을 위한 기본 클래스 구조를 제공합니다. WCF 서비스 라이브러리 프로젝트, WCF 서비스 웹 사이트 및 WCF 서비스 항목 템플릿을 포함하여 여러 WCF 템플릿을 새 프로젝트 추가 대화 상자에서 사용할 수 있습니다.

템플릿을 선택하면 서비스 계약, 서비스 구현 및 서비스 구성에 대한 파일이 추가됩니다. 필요한 모든 특성이 이미 추가되어 간단한 "Hello World" 유형의 서비스를 만들 수 있으며 코드를 작성할 필요가 없습니다. 실제 서비스에 대한 함수와 메서드를 제공하는 코드를 추가할 수 있지만 템플릿은 기본 기반을 제공합니다.

자세한 내용은 WCF Visual Studio 템플릿을 참조하세요.

WCF 서비스 호스트

WCF 서비스 프로젝트에 대한 Visual Studio 디버거( F5 선택)를 시작하면 WCF 서비스 호스트 도구가 자동으로 서비스를 로컬로 호스트하기 시작합니다. 이 도구는 WCF 서비스 프로젝트의 서비스를 열거하고, 프로젝트의 구성을 로드하고, 찾은 각 서비스에 대한 호스트를 인스턴스화합니다.

이 도구를 사용하면 개발 중에 추가 코드를 작성하거나 특정 호스트에 커밋하지 않고도 WCF 서비스를 테스트할 수 있습니다. 자세한 내용은 WCF 서비스 호스트(WcfSvcHost.exe)를 참조하세요.

WCF 테스트 클라이언트

WCF 테스트 클라이언트 도구를 사용하면 테스트 매개 변수를 입력하고, 입력을 WCF 서비스에 제출하고, 서비스의 응답을 볼 수 있습니다. 이 도구는 WCF 서비스 호스트와 결합할 때 편리한 서비스 테스트 환경을 제공합니다. 도구의 위치는 Visual Studio 설치 폴더 아래에 있는 Common7\IDE 입니다.

F5를 선택하여 WCF 서비스 프로젝트를 디버그하면 WCF 테스트 클라이언트가 열리고 구성 파일에 정의된 서비스 엔드포인트 목록이 표시됩니다. 매개 변수를 테스트하고 서비스를 시작하고 이 프로세스를 반복하여 서비스를 지속적으로 테스트하고 유효성을 검사할 수 있습니다. 자세한 내용은 WCF 테스트 클라이언트(WcfTestClient.exe)를 참조하세요.

Visual Studio에서 WCF 서비스에 액세스

Visual Studio는 서비스 참조 추가 대화 상자에서 추가하는 서비스에 대한 프록시 및 엔드포인트를 자동으로 생성하여 WCF 클라이언트를 만드는 작업을 간소화합니다. 필요한 모든 구성 정보가 app.config 파일에 추가됩니다. 대부분의 경우 서비스를 인스턴스화하여 사용하기만 하면 됩니다.

서비스 참조 추가 대화 상자에서 서비스의 주소를 지정하거나 솔루션에 정의된 서비스를 검색합니다. 시스템은 서비스에서 제공하는 서비스 및 작업 목록을 반환합니다. 코드에서 서비스를 참조하기 위한 네임스페이스를 정의할 수도 있습니다.

서비스 참조 구성 대화 상자에서 서비스에 대한 구성을 사용자 지정합니다. 서비스의 주소를 변경하고, 액세스 수준, 비동기 동작 및 메시지 계약 유형을 지정하고, 형식 재사용을 구성할 수 있습니다.

서비스 엔드포인트

일부 WCF 서비스는 클라이언트가 서비스와 통신할 수 있는 여러 엔드포인트를 노출합니다. 서비스는 사용자 이름 및 암호 보안이 있는 HTTP 바인딩을 사용하는 엔드포인트 하나와 Windows 인증과 함께 FTP를 사용하는 두 번째 엔드포인트를 노출할 수 있습니다. 첫 번째 엔드포인트는 애플리케이션에서 방화벽 외부에서 서비스에 액세스하는 데 사용되는 반면 두 번째 엔드포인트는 인트라넷에서 사용할 수 있습니다.

이 시나리오에서는 서비스 참조에 endpointConfigurationName 대한 생성자를 사용하여 매개 변수를 지정합니다.

비고

이 문서의 지침은 Visual Studio에서 사용할 수 있는 IDE(대화형 개발 환경)의 최신 버전을 보여 줍니다. 컴퓨터에 일부 사용자 인터페이스 요소에 대한 다른 이름 또는 위치가 표시될 수 있습니다. 다른 버전의 Visual Studio 또는 다른 환경 설정을 사용할 수 있습니다. 자세한 내용은 IDE 개인 설정참조하세요.

서비스 엔드포인트 선택

다음 단계에 따라 서비스 엔드포인트를 선택합니다.

  1. 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 서비스 참조 추가를 선택하여 WCF 서비스에 대한 참조를 추가합니다.

  2. 코드 편집기에서 서비스 참조에 대한 생성자를 추가합니다. 서비스 참조의 네임스페이스를 ServiceReference로 교체하고, 서비스 이름을 Service1Client로 교체하십시오.

    ServiceReference.Service1Client proxy = new ServiceReference.Service1Client(
    

  1. 코드를 입력하면 생성자에 대한 오버로드가 포함된 IntelliSense 목록이 표시됩니다. 오버로드 함수endpointConfigurationName As String를 선택합니다.

  2. 오버로드를 선택한 후, 사용하려는 엔드포인트 서비스의 이름인 <ServiceEndpoint>을(를) ="<ServiceEndpoint>"에 입력합니다.

    팁 (조언)

    사용 가능한 엔드포인트의 이름은 app.config 파일에 정의됩니다.

WCF 서비스에 사용 가능한 엔드포인트 찾기

WCF 서비스에 사용 가능한 엔드포인트를 찾으려면 다음 단계를 수행합니다.

  1. 솔루션 탐색기에서 서비스 참조가 포함된 프로젝트의 app.config 파일을 마우스 오른쪽 단추로 클릭한 다음 열기를 선택합니다. 파일이 코드 편집기에서 열립니다.

  2. 파일에서 <Client> 태그를 검색합니다.

  3. <Client> 태그 섹션에서 .로 시작하는 중첩 태그를 검색합니다<Endpoint>.

    서비스 참조가 여러 엔드포인트를 제공하는 경우 두 개 이상의 <Endpoint> 태그가 있습니다.

  4. <EndPoint> 태그 정의에서 매개 변수(name="<ServiceEndpoint>"서비스의 엔드포인트 이름을 나타내는 위치<ServiceEndpoint>)를 찾습니다. 이 값은 서비스 참조에 대한 생성자의 오버로드에 endpointConfigurationName As String 전달할 수 있는 서비스 엔드포인트의 이름입니다.

서비스 메서드를 비동기적으로 호출

WCF 서비스의 대부분의 메서드는 동기 또는 비동기적으로 호출할 수 있습니다. 메서드를 비동기적으로 호출하면 메서드가 호출되는 동안 애플리케이션이 계속 작동할 수 있습니다. 이 방법은 시스템이 느린 연결을 통해 작동하는 경우에 유용합니다.

프로젝트에 서비스 참조가 추가되면 기본 구성은 메서드를 동기적으로 호출하는 것입니다. 서비스 참조 구성 대화 상자에서 메서드를 비동기적으로 호출하도록 동작을 변경할 수 있습니다.

이 옵션은 서비스별로 설정됩니다. 서비스에 대한 하나의 메서드가 비동기적으로 호출되는 경우 모든 메서드를 비동기적으로 호출해야 합니다.

비고

이 문서의 지침은 Visual Studio에서 사용할 수 있는 IDE(대화형 개발 환경)의 최신 버전을 보여 줍니다. 컴퓨터에 일부 사용자 인터페이스 요소에 대한 다른 이름 또는 위치가 표시될 수 있습니다. 다른 버전의 Visual Studio 또는 다른 환경 설정을 사용할 수 있습니다. 자세한 내용은 IDE 개인 설정참조하세요.

메서드를 비동기적으로 호출

서비스 메서드를 비동기적으로 호출하려면 다음 단계를 수행합니다.

  1. 솔루션 탐색기에서 서비스 참조를 선택합니다.

  2. 프로젝트>구성 서비스 참조를 선택합니다.

  3. 서비스 참조 구성 대화 상자에서 비동기 작업 생성 확인란을 선택합니다.

서비스가 반환한 데이터를 바인딩하기

다른 데이터 원본을 컨트롤에 바인딩하는 것처럼 WCF 서비스에서 반환된 데이터를 컨트롤에 바인딩할 수 있습니다. WCF 서비스에 대한 참조를 추가할 때 서비스에 데이터를 반환하는 복합 형식이 포함된 경우 데이터 원본 창에 자동으로 추가 됩니다 .

WCF 서비스에서 반환하는 데이터 필드에 컨트롤 바인딩

WCF 서비스에서 반환하는 단일 데이터 필드에 컨트롤을 바인딩하려면 다음 단계를 사용합니다.

  1. 데이터>데이터 원본 표시를 선택합니다. 데이터 원본 창이 열립니다.

  2. 데이터 원본 창에서 서비스 참조에 대한 노드를 확장합니다. 서비스 표시에서 반환되는 모든 복합 형식입니다.

  3. 형식 노드를 확장하고 형식의 데이터 필드를 봅니다.

  4. 필드를 선택하고 드롭다운 목록을 확장하여 데이터 형식에 사용할 수 있는 컨트롤 목록을 확인합니다.

  5. 바인딩할 컨트롤 유형을 선택합니다.

  6. 필드를 폼에 드래그하여 놓습니다. 컨트롤은 BindingSource 구성 요소 및 BindingNavigator 구성 요소와 함께 폼에 추가됩니다.

  7. 4~6단계를 반복하고 다른 필드를 바인딩합니다.

WCF 서비스에서 반환하는 복합 형식에 컨트롤 바인딩

WCF 서비스에서 반환하는 복합 형식에 컨트롤을 바인딩하려면 다음 단계를 수행합니다.

  1. Select 데이터>데이터 원본 표시. 데이터 원본 창이 열립니다.

  2. 데이터 원본 창에서 서비스 참조에 대한 노드를 확장합니다. 서비스 표시에서 반환되는 모든 복합 형식입니다.

  3. 형식에 대한 노드를 선택하고 드롭다운 목록을 확장하여 사용 가능한 옵션 목록을 확인합니다.

  4. DataGridView를 선택하고 그리드에서 데이터를 보거나 세부 정보를 선택하고 개별 컨트롤을 사용하여 데이터를 봅니다.

  5. 노드를 폼으로 끌어다 놓습니다. 컨트롤은 BindingSource 구성 요소 및 BindingNavigator 구성 요소와 함께 양식에 추가됩니다.

기존 형식을 다시 사용하도록 서비스 구성

서비스 참조가 프로젝트에 추가되면 서비스에 정의된 모든 형식이 로컬 프로젝트에 생성됩니다. 대부분의 경우 이 방법은 서비스에서 일반적인 .NET 형식을 사용하거나 공유 라이브러리에 형식이 정의되는 경우 중복 형식을 만듭니다.

이 문제를 방지하기 위해 참조된 어셈블리의 형식은 기본적으로 공유됩니다. 하나 이상의 어셈블리에 대해 형식 공유를 사용하지 않도록 설정하려면 서비스 참조 구성 대화 상자에서 설정을 변경합니다.

한 어셈블리에서 형식 공유 사용 안 함

다음 단계를 수행하여 단일 어셈블리에서 형식 공유를 사용하지 않도록 설정할 수 있습니다.

  1. 솔루션 탐색기에서 서비스 참조를 선택합니다.

  2. 프로젝트>구성 서비스 참조를 선택합니다.

  3. 서비스 참조 구성 대화 상자에서 지정된 참조된 어셈블리에서 형식 다시 사용 확인란을 선택합니다.

  4. 형식 공유를 사용하도록 설정할 각 어셈블리의 확인란을 선택합니다. 어셈블리에 대한 형식 공유를 사용하지 않도록 설정하려면 확인란을 선택 취소된 상태로 둡니다.

모든 어셈블리에서 형식 공유 사용 안 함

다음 단계를 사용하여 모든 어셈블리에서 형식 공유를 사용하지 않도록 설정할 수도 있습니다.

  1. 솔루션 탐색기에서 서비스 참조를 선택합니다.

  2. 프로젝트>구성 서비스 참조를 선택합니다.

  3. 서비스 참조 구성 대화 상자에서 참조된 어셈블리에서 형식 다시 사용 확인란의 선택을 취소합니다.

유사한 개념 살펴보기

다음 문서에서는 WCF 서비스 및 WCF 데이터 서비스와 관련된 개념 및 절차를 설명합니다.

제목 설명
연습: Windows Forms에서 기본 WCF 서비스 만들기 Visual Studio에서 WCF 서비스를 만들고 사용하는 단계별 데모를 제공합니다.
연습: WPF 및 Entity Framework를 사용하여 WCF 데이터 서비스 만들기 Visual Studio에서 WCF Data Services를 만들고 사용하는 방법에 대한 단계별 데모를 제공합니다.
WCF 개발 도구 사용 Visual Studio에서 WCF 서비스를 만들고 테스트하는 방법을 설명합니다.
방법: WCF 데이터 서비스 참조 추가, 업데이트 또는 제거 서비스 참조 추가 대화 상자를 사용하여 솔루션에서 WCF Data Services를 검색하는 방법을 설명합니다.
서비스 참조 문제 해결 서비스 참조에서 발생할 수 있는 몇 가지 일반적인 오류와 이를 방지하는 방법을 제공합니다.
WCF 서비스 디버그 WCF 서비스를 디버깅할 때 발생할 수 있는 일반적인 디버깅 문제 및 기술에 대해 설명합니다.
연습: n 계층 데이터 애플리케이션 만들기 형식화된 데이터 세트를 만들고 TableAdapter 및 데이터 세트 코드를 여러 프로젝트로 분리하기 위한 단계별 지침을 제공합니다.
서비스 참조 구성 대화 상자를 검토하십시오 서비스 참조 구성 대화 상자의 사용자 인터페이스 요소에 대해 설명합니다.