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