Может ли служба иметь несколько конечных точек?
У нас есть служба, которая имеет некоторые настройки, которые поддерживаются только через 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>