Nasıl yapılır: Bağlantı Noktası Paylaşımı Kullanarak Bir Windows Communication Foundation Hizmetini Yapılandırma
Windows Communication Foundation (WCF) uygulamanızda net.tcp:// bağlantı noktası paylaşımını kullanmanın en kolay yolu, kullanarak NetTcpBindingbir hizmeti kullanıma açmaktır.
Bu bağlama, bu bağlamayla yapılandırılan hizmet için net.tcp:// bağlantı noktası paylaşımının etkinleştirilip etkinleştirilmediğini denetleyebilen bir PortSharingEnabled özellik sağlar.
Aşağıdaki yordamda, önce kodda NetTcpBinding ve ardından yapılandırma öğelerini kullanarak net.tcp://localhost/MyService Tekdüzen Kaynak Tanımlayıcısı'nda (URI) bir uç nokta açmak için sınıfının nasıl kullanılacağı gösterilmektedir.
Kodda netTcpBinding üzerinde net.tcp:// bağlantı noktası paylaşımını etkinleştirmek için
adlı
IMyService
bir sözleşme uygulamak için bir hizmet oluşturun ve bunu olarak adlandırabilirsinizMyService
.[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
sınıfının bir örneğini NetTcpBinding oluşturun ve özelliğini olarak
true
ayarlayınPortSharingEnabled.NetTcpBinding portsharingBinding = new NetTcpBinding(); portsharingBinding.PortSharingEnabled = true;
Dim portsharingBinding As New NetTcpBinding() portsharingBinding.PortSharingEnabled = True
ServiceHost"net.tcp://localhost/MyService" uç nokta
MyService
adresi URI'sini dinleyen ve sharing özellikli NetTcpBinding bağlantı noktasını kullanan hizmet uç noktasını oluşturun ve buna ekleyin.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")
Not
Uç nokta adresi URI'sinin farklı bir bağlantı noktası numarası belirtmemesi nedeniyle bu örnekte varsayılan TCP bağlantı noktası 808 kullanılır. Taşıma bağlamasında bağlantı noktası paylaşımı açıkça etkinleştirildiğinden, bu hizmet 808 numaralı bağlantı noktasını diğer işlemlerdeki diğer hizmetlerle paylaşabilir. Bağlantı noktası paylaşımına izin verilmiyorsa ve başka bir uygulama zaten 808 numaralı bağlantı noktasını kullanıyorsa, bu hizmet açıldığında bir AddressAlreadyInUseException oluştururdu.
Yapılandırmada netTcpBinding üzerinde net.tcp:// bağlantı noktası paylaşımını etkinleştirmek için
- Aşağıdaki örnekte, yapılandırma öğelerini kullanarak bağlantı noktası paylaşımının nasıl etkinleştirileceği ve hizmet uç noktasının nasıl ekleneceği gösterilmektedir.
<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>