WCF Несколько конечных точек и IServices - PullRequest
5 голосов
/ 30 мая 2011

Я просто пытаюсь разобраться с использованием WCF, и я брожу, если кто-нибудь может сказать мне, если у меня есть правильная идея с конечными точками.

Я работал над видео на MSDN, итеперь я бродить о способе настройки службы WCF.Сценарий таков, если у меня есть несколько IServices, например, таких, что у меня есть IThis и IThat, и клиенту требуется доступ и для обоих (примечание: они будут использовать net.tcp),

  • Он обрабатывает запросы к базе данных и,

  • Он обрабатывает вычисления независимо от базы данных,

Я предполагаю, что мне нужно определить отдельные конечные точки для него иЭто то, на что ссылаются в клиенте отдельно.Или я бы создал общую службу IThisAndThat, на которую ссылается клиент, и которая содержит функциональные возможности для обоих типов?

Или есть другие способы разработки и обработки служб WCF с несколькими IServices?Пока я спрашиваю, вы можете определить базовый адрес для TCP или только HTTP?

~ Спасибо всем, любая помощь или указатели будут великолепны.

Ответы [ 2 ]

4 голосов
/ 30 мая 2011

Я предполагаю, что я должен определить отдельные конечные точки для него и Это то, что упоминается в клиент отдельно. Или я бы создал общее IThis и это обслуживание, которое получает ссылку в клиенте и содержит функциональность для обоих

Вы можете сделать оба:

  • вы можете создать отдельную службу реализацию класс - один для IThis, другой для IThat
  • или вы можете создать один класс реализации службы, который реализует IThis и IThat

Выбор за вами полностью.

Для каждого класса обслуживания реализации вы можете определить любое количество конечных точек, которое хотите иметь. Таким образом, если у вас есть ThisService, реализующий IThis, вы можете определить для него HTTP и конечную точку TCP, а также у вас есть ThatService, который реализует IThat, для которого вы определяете конечную точку TCP. Это полностью зависит от вас.

НО: вы можете определить свои конечные точки только для каждой услуги реализация класса - если у вас есть ThisAndThatService, реализующий оба договора на обслуживание, вы не можете определить 3 конечные точки для IThis и два разных для IThat - конечные точки, которые вы определяете, относятся к услуге реализация класс.

Пока я спрашиваю, можете ли вы определить базу адрес для tcp или только http?

Да, безусловно - вы можете определить базовый адрес для каждой из различных схем адресации (http, net.tcp, net.msmq, net.pipe и т. Д.).

1 голос
/ 30 мая 2011

Некоторые основы:

Каждая служба имеет одну или несколько конечных точек.Конечные точки специфичны для соответствующей службы, т. Е. Каждая конечная точка может принадлежать только одной услуге и не может совместно использоваться службами.

Конечная точка определяет точку входа в службу - она ​​включает в себя адрес, привязку и контракт, которые могутможет использоваться клиентом.

Разные конечные точки должны иметь разные адреса, а может иметь разные привязки и контракты (т. е. они не обязаны).Как правило, разные конечные точки имеют разные привязки, то есть транспортный протокол.Они могут иметь разные контракты, если определенные клиенты должны иметь доступ только к определенным операциям.

Наконец, ваша служба должна реализовывать все контракты, предоставляемые различными конечными точками.

Вот очень краткоеи прямая страница MSDN, которая описывает эти понятия.http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/9f4391e9-8b9f-4181-a081-860d42b992a9/

В Интернете много информации о WCF, и есть чему поучиться.Лучше всего взглянуть на некоторые учебные пособия или руководства, которые сосредоточены на том, что вы пытаетесь сделать.

...