Binding
Binding ?
바인딩은 WCF 서비스의 Endpoint 연결에 필요한 통신 세부 정보(프로토콜, 인코딩 방식 등)를 지정하는데 사용되는 개체이다. 바인딩에 들어가는 정보는 매우 복잡할 수 있고 일부 설정이 다른 설정과 호환되지 않을 수 있기에 WCF에서 제공하는 시스템 제공 바인딩을 사용하는 것이 쉬운 방법이다. 바인딩을 정의할 때는 코드에 작성하는 것보다 구성파일(Web.config)에 작성하면 서비스관리자가 서비스 응용프로그램을 다시 컴파일하지 않고도 매개 변수를 변경하여 적용할 수 있기 때문에 이점이 많다.
시스템 제공 바인딩
- BasicHttpBinding: ASP.NET 웹 서비스 기반 서비스 등 웹 서비스에 연결하는데 적합한 HTTP 프로토콜 바인딩
- WSHttpBinding: WS-* 프로토콜을 수행하는 endpoint 연결에 적합한 바인딩
- NetNamedPipeBinding: .NET Framework을 사용하여 동일한 컴퓨터의 다른 WCF endpoint에 연결하는데 적합한 바인딩
- NetMsmqBinding: .NET Framework을 사용하여 다른 WCF endpoint와의 연결을 위해 메세지큐를 만드는데 적합한 바인딩
- NetTcpBinding: HTTP 바인딩 보다 높은 성능을 제공 하며 로컬 네트워크에서 사용 하기에 적합한 바인딩
바인딩 지정
서비스에서 바인딩 지정
BasicHttpBinding과 NetTcpBinding을 사용하는 서비스를 만들었다고 가정하자. 서비스의 구성파일(Web.config)은 아래와 같이 구성할 수 있다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="SampleService.Service1">
<endpoint binding="basicHttpBinding" contract="SampleService.IService1" bindingConfiguration="basicHttpBindingConfig" />
</service>
<service name="SampleService.Service2">
<endpoint binding="netTcpBinding" contract="SampleService.IService2" bindingConfiguration="netTcpBindingConfig" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBindingConfig" maxBufferPoolSize="67108864" maxBufferSize="8388608" maxReceivedMessageSize="8388608" />
</basicHttpBinding>
<netTcpBinding>
<binding name="netTcpBindingConfig" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="67108864" maxBufferSize="8388608" maxReceivedMessageSize="8388608">
<security mode="None">
<transport clientCredentialType="None" />
<message clientCredentialType="None" />
</security>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
클라이언트에서 바인딩 지정
클라이언트 어플리케이션의 구성파일(app.config)에서도 바인딩을 지정해야 이용할 수 있다.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding />
<netTcpBinding />
</bindings>
<client>
<endpoint
name=""
address="http://172.17.31.4:8372/Service1.svc"
binding="basicHttpBinding"
contract="SampleService.IService1" />
<endpoint
name=""
address="net.tcp://172.17.31.4:8374/Service2.svc"
binding="netTcpBinding"
contract="SampleService.IService2" />
</client>
</system.serviceModel>
</configuration>
[참고]
https://docs.microsoft.com/ko-kr/dotnet/framework/wcf/bindings-overview