服务可以有多个端点吗?
时间:2020-03-05 18:48:21 来源:igfitidea点击:
我们提供的服务具有仅在net.tcp上受支持的某些设置。添加另一个端点的最佳方法是什么?我需要创建一个全新的主机吗?
解决方案
回答
一个服务可能在单个主机中具有多个端点,但是每个端点必须具有地址,绑定和协定的唯一组合。对于IIS托管的服务(即.SVC文件),只需将端点的地址设置为相对URI,并确保Visual Studio或者wsdl.exe生成的客户端在其构造函数中指定了端点的名称。
另请参见MSDN文章"多个端点"。
回答
如果当前使用IIS作为主机,则需要创建一个全新的主机,IIS仅支持HTTP而不支持TCP绑定。但是,如果我们使用的是WAS或者Windows服务,则只需创建一个新的net.tcp端点即可。
回答
我们可以在服务器或者客户端上定义多个端点。
要在客户端上执行此操作,我们只需要使用一个具有不同名称的新端点来编辑app.config文件,然后定义何时创建新客户端。
例如,如果客户端应用程序中有一个端点,例如:
<endpoint address="https://yourdomain.com/WCF/YourService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IYourService" contract="MessagingService.IYourService" name="BasicHttpBinding_IYourService" />
我们通过以下方式致电:
YourServiceClient client = new YourServiceClient();
我们可以使用新名称添加新端点:
<endpoint address="https://yourotherdomain.com/WCF/YourService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IYourService" contract="MessagingService.IYourService" name="BasicHttpBinding_IYourService_ENDPOINT2" />
我们可以通过以下方式致电:
YourServiceClient client = new YourServiceClient("BasicHttpBinding_IYourService_ENDPOINT2");
我刚刚更改了上面的域,但是如果我们创建了一个新的绑定配置部分,则可以更改" bindingConfiguration"值。