У нас есть сервис, некоторые настройки которого поддерживаются только через 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».
Мы можем использовать несколько конечных точек для одной и той же службы. Мы также можем настроить веб-конфигурацию следующим образом
<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>
Я думаю, что II7 поддерживает привязки, отличные от HTTP (например, TCP).