Что нужно учитывать при вызове одной службы WCF из другой - PullRequest
6 голосов
/ 02 августа 2011

Мы переносим набор сервисов WSE на платформу WCF.

Новые сервисы WCF вызываются через защищенный HTTP. (https)

Я хочу вызвать контракт на обслуживание одной службы WCF от другой. Обе службы в основном размещаются в одном и том же IIS, но могут находиться на отдельном сервере IIS.

  1. Нужно ли мне позаботиться о некоторых вещах (о которых я сейчас точно не знаю) в этом сценарии?
  2. Есть ли специальный механизм вызова в этом случае?
  3. Меняется ли вызывающий механизм, когда вызов является синхронным и когда он асинхронный?
  4. Можете ли вы предложить какой-либо тип привязки, который легко доступен в этом случае?

Ответы [ 3 ]

4 голосов
/ 02 августа 2011

1.) Если службы находятся в одной коробке, используйте именованные каналы, если у вас нет веских причин не общаться друг с другом. В то время как WCF не заботится о том, что вы делаете, пока адрес, привязка и контракт совпадают (видите, что я там делал?), .NET будет, когда дело доходит до создания сетевых подключений. Чем меньше вы используете, тем лучше. (см. http://msdn.microsoft.com/en-us/library/fb6y0fyc.aspx для более подробной информации)

2.) Как указано в # 1, если они говорят в одном окне, используйте именованные каналы, если нет веской причины не делать этого.

3.) Можете ли вы рассказать немного подробнее о том, что вы подразумеваете под этим или что вы планируете делать? Многое из этого построено для вас, поэтому, если вы знакомы с реализацией асинхронных методов и использованием асинхронных обратных вызовов, краткий ответ - да, он отличается от синхронного вызова операции, но этого и следовало ожидать. Или вы имеете в виду IsOneWay = true? В этом случае механизм вызова такой же, но может быть несколько других ошибок (например, сбоев)

4.) Именованные каналы в одном окне, BasicHttp в противном случае (если вам не нужны какие-либо дополнительные функции из WS).

1 голос
/ 02 августа 2011

но они могут находиться на отдельном сервере IIS

В этом случае вы либо не можете использовать проверку подлинности Windows (если вы ее использовали), либо вам нужно настроить некоторые специальныеделегирует вещи в домен, чтобы он работал.Аутентификация Windows не будет «перепрыгивать» между разными серверами. Вот некоторая информация об этом , по этой теме много читают.

Если они остаются на одном сервере или вы не используете проверку подлинности Windows, то это не должнобыть проблемой.

Меняется ли вызывающий механизм, когда вызов является синхронным и когда он асинхронный?

Не должно иметь значения, это все равно на стороне службы.Я скажу, что если клиент вызывает X, а X вызывает Y, X может также вызвать Y синхронно, потому что он не может вернуться к клиенту, пока Y не завершится.(Если X вызывает Y и Z, тогда X делает асинхронные вызовы более разумными.)

Можете ли вы предложить какой-либо тип привязки, который в этом случае легко доступен?

Если вы ранее использовали WSE, то BasicHttpBinding станет наиболее близким к тому, что вы делали, и будет довольно знакомым в том, что он выводит.С ним также проще всего работать.

0 голосов
/ 02 августа 2011

Не должно быть ничего особенного, потому что метод службы WCF вызывает другую службу WCF. Служба WCF не «заботится» о том, какие другие типы приложений вызывают ее методы, если они используют правильный договор на обслуживание, договор на данные, конечную точку и параметры привязки.

Просто убедитесь, что оба сервисных метода возвращаются быстро и не вызывают блокировку выполнения на длительные периоды времени.

...