服务可以有多个端点吗?

时间: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"值。