방법: 포트 공유를 사용하도록 Windows Communication Foundation 서비스 구성
WCF(Windows Communication Foundation) 애플리케이션에서 net.tcp:// 포트 공유를 사용하는 가장 쉬운 방법은 NetTcpBinding을 사용하여 서비스를 노출하는 것입니다.
이 바인딩에서는 이 바인딩을 사용하여 구성하는 서비스에 대해 net.tcp:// 포트 공유를 사용할지 여부를 제어하는 PortSharingEnabled 속성을 제공합니다.
다음 절차에서는 NetTcpBinding 클래스를 사용하여 URI(Uniform Resource Identifier) net.tcp://localhost/MyService에서 엔드포인트를 여는 방법을 보여 줍니다. 코드와 구성 요소를 사용한 방법을 차례로 보여 줍니다.
코드로 NetTcpBinding에서 net.tcp:// 포트 공유를 사용하도록 설정하려면
IMyService
라는 계약을 구현할 서비스를 만든 후MyService
라는 이름을 지정합니다.[ServiceContract] interface IMyService { //Define the contract operations. } class MyService : IMyService { //Implement the IMyService operations. }
<ServiceContract()> _ Friend Interface IMyService 'Define the contract operations. End Interface Friend Class MyService Implements IMyService 'Implement the IMyService operations. End Class
NetTcpBinding 클래스의 인스턴스를 만들고 PortSharingEnabled 속성을
true
로 설정합니다.NetTcpBinding portsharingBinding = new NetTcpBinding(); portsharingBinding.PortSharingEnabled = true;
Dim portsharingBinding As New NetTcpBinding() portsharingBinding.PortSharingEnabled = True
ServiceHost를 만든 다음 포트 공유 사용
MyService
을 사용하고 엔드포인트 주소 URI "net.tcp://localhost/MyService"에서 수신 대기하는 NetTcpBinding에 대해 서비스 엔드포인트를 추가합니다.ServiceHost host = new ServiceHost( typeof( MyService ) ); host.AddServiceEndpoint( typeof( IMyService ), portsharingBinding,"net.tcp://localhost/MyService" );
Dim host As New ServiceHost(GetType(MyService)) host.AddServiceEndpoint(GetType(IMyService), portsharingBinding, "net.tcp://localhost/MyService")
참고 항목
엔드포인트 주소 URI에서 다른 포트 번호를 지정하지 않기 때문에 이 예제에서는 기본 TCP 포트 808을 사용합니다. 전송 바인딩에서 포트 공유가 명시적으로 사용되기 때문에 이 서비스는 다른 프로세스의 다른 서비스와 포트 808을 공유할 수 있습니다. 포트 공유가 허용되지 않고 다른 애플리케이션에서 포트 808을 이미 사용하고 있는 경우 포트를 열면 이 서비스에서 AddressAlreadyInUseException을 throw합니다.
구성을 통해 NetTcpBinding에서 net.tcp:// 포트 공유를 사용하도록 설정하려면
- 다음 예제에서는 구성 요소를 사용하여 포트 공유를 사용하도록 설정하고 서비스 엔드포인트를 추가하는 방법을 보여 줍니다.
<system.serviceModel>
<bindings>
<netTcpBinding name="portSharingBinding"
portSharingEnabled="true" />
</bindings>
<services>
<service name="MyService">
<endpoint address="net.tcp://localhost/MyService"
binding="netTcpBinding"
contract="IMyService"
bindingConfiguration="portSharingBinding" />
</service>
</services>
</system.serviceModel>