每个WCF服务的新ServiceHost?

时间:2009-11-10 14:24:22

标签: c# .net windows wcf service

首先,我正在运行一个应该包含很多功能的Windows服务。这将是一个业务层,来自此业务层的结果将通过WCF发送到表示层。

我不知道如何构建所有这些功能。

所以我的问题是:

1。 我应该创建一些Facade模式类来覆盖所有服务类,并将这个Facade类放到一个ServiceHost中。 或者只为每个服务类创建一个ServiceHost实例?喜欢这个

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

2.我的服务类应该是多少粒度?每个enitity或每个聚合根或每个功能块?

此通讯将通过net.pipe运行。

3 个答案:

答案 0 :(得分:5)

这里有一个在单个Windows服务下运行多个服务主机的示例:http://thegrenade.blogspot.com/2009/08/hosting-multiple-wcf-services-under.html

这里有一个相关的问题:Can you host multiple WCF processes in a single windows service?

答案 1 :(得分:1)

让您的界面成为您的指南。定义您计划通过WCF公开的接口。这将定义您需要多少服务类,从而定义您需要多少ServiceHost实例。

答案 2 :(得分:1)

一个ServiceHost只能托管一个服务(实现)类 - 这是给定的,你无法改变它。

但是服务(实现)类可以实现任意数量的服务契约(接口)。

然而,辜负关注分离原则,我没有看到很多令人信服的理由让一个庞大的“SuperDuperServiceClass”实现了船载服务合同 - 我喜欢保留无关的东西彼此分开 - 从长远来看,它更容易管理。

您反对为单个服务提供单个服务主机的理由是什么?