Может ли служба иметь несколько конечных точек?
У нас есть сервис, который имеет некоторые настройки, которые поддерживаются только через net.tcp. Какой лучший способ добавить другую конечную точку? Нужно ли создавать новый хост?
4 ответа
Служба может иметь несколько конечных точек на одном хосте, но каждая конечная точка должна иметь уникальную комбинацию адреса, привязки и контракта. Для службы, размещенной на IIS (то есть файла.SVC), просто задайте для адреса конечной точки относительный URI и убедитесь, что ваш сгенерированный клиент Visual Studio или wsdl.exe указывает имя конечной точки в своем конструкторе.
См. Также статью MSDN Несколько конечных точек.
У вас может быть несколько конечных точек, определенных на сервере или на клиенте.
Чтобы сделать это на клиенте, вам просто нужно отредактировать файл 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".
Вам потребуется создать новый хост, если вы в настоящее время используете IIS в качестве хоста - IIS поддерживает только HTTP, а не TCP-привязки. Однако, если вы используете WAS или службу Windows, вы сможете просто создать новую конечную точку net.tcp.
Мы можем использовать несколько конечных точек для одного и того же сервиса. Мы также можем настроить веб-конфигурацию следующим образом
<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>