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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
0
20 324
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

Я думаю, что II7 поддерживает привязки, отличные от HTTP (например, TCP).

Piotr Owsiak 30.08.2010 13:52

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

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

Другие вопросы по теме