новый ServiceHost для каждого сервиса WCF? - PullRequest
3 голосов
/ 10 ноября 2009

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

Я не знаю, как структурировать всю эту функциональность.

Итак, мои вопросы:

1. Должен ли я создать некий класс шаблонов Facade, который будет охватывать все классы обслуживания, и поместить этот один класс Facade в один ServiceHost. Или просто создать экземпляр ServiceHost для каждого класса обслуживания? Как это

host1 = new ServiceHost(typeof(MyService1));
host2 = new ServiceHost(typeof(MyService2));

2. Насколько гранулярными должны быть мои классы обслуживания? На единицу, на совокупный корень или на какой-то функциональный блок?

Это сообщение будет работать по net.pipe.

Ответы [ 3 ]

5 голосов
/ 10 ноября 2009

Здесь приведен пример запуска нескольких хостов службы под одной службой Windows: http://thegrenade.blogspot.com/2009/08/hosting-multiple-wcf-services-under.html

И связанный с этим вопрос здесь: Можно ли разместить несколько процессов WCF в одной службе Windows?

1 голос
/ 10 ноября 2009

Один ServiceHost может содержать только один класс службы (реализации) - это данность, вы не можете это изменить.

Но класс сервиса (реализации) может реализовывать любое количество сервисных контрактов (интерфейсов).

Однако, следуя принципу разделения интересов, я не вижу много веских причин иметь огромный "SuperDuperServiceClass", который реализует множество сервисных контрактов. друг с другом - облегчает управление в долгосрочной перспективе.

Что вы думаете против того, чтобы у одного сервиса был один хост?

1 голос
/ 10 ноября 2009

Пусть ваши интерфейсы будут вашим руководством. Определите интерфейсы, которые вы планируете предоставлять через WCF. Это определит, сколько классов сервиса вам нужно, и, следовательно, сколько вам нужно экземпляров ServiceHost.

...