C# Language
Windows Communication Foundation
수색…
소개
Windows Communication Foundation (WCF)은 서비스 지향 응용 프로그램을 작성하기위한 프레임 워크입니다. WCF를 사용하면 데이터를 한 서비스 끝점에서 다른 끝점으로 비동기 메시지로 보낼 수 있습니다. 서비스 끝점은 IIS에서 호스팅되는 지속적으로 사용할 수있는 서비스의 일부이거나 응용 프로그램에서 호스팅되는 서비스 일 수 있습니다. 메시지는 XML로 전송 된 단일 문자 나 단어처럼 간단 할 수도 있고 이진 데이터 스트림처럼 복잡 할 수도 있습니다.
시작 샘플
이 서비스는 메타 데이터로 공개적으로 노출되는 서비스 계약에서 수행하는 작업을 설명합니다.
// Define a service contract.
[ServiceContract(Namespace="http://StackOverflow.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
}
서비스 구현은 다음 예제 코드와 같이 적절한 결과를 계산하여 반환합니다.
// Service class that implements the service contract.
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
}
이 서비스는 다음 예제 구성 에서처럼 구성 파일 (Web.config)을 사용하여 정의 된 서비스와 통신하기위한 끝점을 제공합니다.
<services>
<service
name="StackOverflow.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- ICalculator is exposed at the base address provided by
host: http://localhost/servicemodelsamples/service.svc. -->
<endpoint address=""
binding="wsHttpBinding"
contract="StackOverflow.ServiceModel.Samples.ICalculator" />
...
</service>
</services>
프레임 워크는 기본적으로 메타 데이터를 노출하지 않습니다. 따라서 서비스는 ServiceMetadataBehavior를 켜고 http : //localhost/servicemodelsamples/service.svc/mex 에서 메타 데이터 교환 (MEX) 끝점을 표시 합니다 . 다음 구성에서는이를 보여줍니다.
<system.serviceModel>
<services>
<service
name="StackOverflow.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
...
<!-- the mex endpoint is explosed at
http://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!--For debugging purposes set the includeExceptionDetailInFaults
attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
클라이언트는 ServiceModel Metadata Utility Tool (Svcutil.exe)에 의해 생성 된 클라이언트 클래스를 사용하여 지정된 계약 유형을 사용하여 통신합니다.
클라이언트 디렉토리의 SDK 명령 프롬프트에서 다음 명령을 실행하여 입력 된 프록시를 생성하십시오.
svcutil.exe /n:"http://StackOverflow.ServiceModel.Samples,StackOverflow.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
서비스와 마찬가지로 클라이언트는 구성 파일 (App.config)을 사용하여 통신하려는 끝점을 지정합니다. 클라이언트 엔드 포인트 구성은 다음 예제와 같이 서비스 엔드 포인트의 절대 주소, 바인딩 및 계약으로 구성됩니다.
<client>
<endpoint
address="http://localhost/servicemodelsamples/service.svc"
binding="wsHttpBinding"
contract="StackOverflow.ServiceModel.Samples.ICalculator" />
</client>
클라이언트 구현은 클라이언트를 인스턴스화하고 다음 예제 코드와 같이 유형이 지정된 인터페이스를 사용하여 서비스와 통신을 시작합니다.
// Create a client.
CalculatorClient client = new CalculatorClient();
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
//Closing the client releases all communication resources.
client.Close();