Подтвердить что ты не робот

Что такое канал Factory в .NET?

Что такое канал Factory и почему вы его используете?

4b9b3361

Ответ 1

Если вы использовали Visual Studio Add Service Reference или инструмент svcutil.exe, вы, вероятно, никогда не увидите ChannelFactory.

В принципе, создание прокси-сервера на стороне клиента для службы WCF - это двухэтапный процесс:

  • создайте соответствующий ChannelFactory<T> для вашего конкретного контракта на обслуживание
  • учитывая этот канал factory, создайте фактический канал связи между клиентом и службой

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

  • создайте ChannelFactory<IMyService> один раз, это довольно сложная и трудоемкая операция, поэтому если это вообще возможно, попробуйте сделать это только тогда, когда это действительно необходимо, а затем кешируйте канал factory для последующего повторного использования

  • создайте фактический канал, используя канал factory, когда вам нужно связаться с сервером

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

Ответ 2

Класс ChannelFactory используется для создания канала между клиентом и службой без использования прокси. В некоторых случаях у вас может быть служба, тесно связанная с клиентским приложением. В таком случае вы можете напрямую ссылаться на DLL интерфейса и использовать ChannelFactory для вызова ваших методов, использующих это.

Я предлагаю вам также понять разницу между Proxy и Channel factory. это поможет вам понять точное использование Channel Factory.

Ответ 3

У меня есть Unittest, где я хочу протестировать службу Windows. Эта служба Windows содержит ServiceHost. Как мне проверить, работает ли этот ServiceHost и прослушивает ли входящие сообщения?

Я могу создать отдельный клиент для этого, но я хотел интегрированный Unittest, который проверил все это.

У меня уже было 3 таймера в службе Windows. Когда я запускаю Unittest, я проверяю службу Windows, но также могу ли я отправлять сообщения в службу. Для этого Unittest я использую "Канал". Мне не нужно указывать веб-сервис (= прокси).