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

Categories:

Updated: