Может ли служба иметь несколько конечных точек?

У нас есть служба, которая имеет некоторые настройки, которые поддерживаются только через net.tcp. Какой лучший способ добавить другую конечную точку? Мне нужно создать весь новый хост?

Ответы

Ответ 1

Служба может иметь несколько конечных точек внутри одного хоста, но каждая конечная точка должна иметь уникальную комбинацию адреса, привязки и контракта. Для службы, размещенной в IIS (то есть файла .SVC), просто установите адрес конечной точки в URI relative и убедитесь, что ваш созданный клиент Visual Studio или wsdl.exe указывает конечную точку имя в его конструкторе.

См. также статью MSDN Несколько конечных точек.

Ответ 2

У вас может быть несколько конечных точек, определенных как на сервере, так и на клиенте.

Чтобы сделать это на клиенте, вам просто нужно отредактировать файл 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".

Ответ 3

Вам нужно будет создать целый новый хост, если вы в настоящее время используете IIS в качестве своего хоста. IIS поддерживает только HTTP, а не TCP-привязки. Если, однако, вы используете WAS или службу Windows, вы сможете уйти просто создать новую конечную точку net.tcp.

Ответ 4

Мы можем использовать несколько конечных точек для одной и той же услуги. Мы также можем настроить веб-конфигурацию следующим образом

 <service name="MessagePatternDemo.Service1">  
 <endpoint name="ep1" address="/ep1" binding="basicHttpBinding" 
   contract="MessagePatternDemo.IService1"/>  
 <endpoint name="ep2" address="/ep2" binding="wsHttpBinding"  
   contract="MessagePatternDemo.IService1" />  
 <endpoint name="mex" contract="IMetadataExchange" address="mex"  
   binding="mexHttpBinding" />  
 </service>