每个WCF服务都需要一个新的ServiceHost吗?

3
首先,我正在运行一个应包含大量功能的Windows服务。将有一个业务层,并且从该业务层得出的结果将通过WCF发送到演示层。
我不知道如何构建所有这些功能。
因此,我的问题是:
1. 我应该创建一种覆盖所有服务类并将此Facade类放置到一个ServiceHost中的Facade模式类吗? 还是为每个服务类创建一个ServiceHost实例?像这样
host1 = new ServiceHost(typeof(MyService1));
host2 = new ServiceHost(typeof(MyService2));

2.我的服务类应该多细粒度?每个实体、每个聚合根还是每个功能块?

这个通信将在 net.pipe 上运行。


我最近遇到了类似的问题。我使用了门面模式来包含所有服务。 - Benny
3个回答

5

1

让你的接口成为你的指南。定义你计划通过 WCF 公开的接口。这将定义你需要多少个服务类,因此也就确定了你需要多少个 ServiceHost 实例。


1

一个ServiceHost只能托管一个服务(实现)类 - 这是确定的,您无法更改。

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

然而,为了遵循关注点分离原则,我并不认为有许多令人信服的理由来拥有一个巨大的“SuperDuperServiceClass”,该类实现了大量的服务契约 - 我喜欢将毫不相关的东西分开 - 这使得长期管理更容易。

你反对只为单个服务使用一个服务主机的理由是什么?


如果两个不同的服务接口涵盖了(但仅部分地涵盖了)相同的操作,但这些操作向客户端返回不同的值,那会怎么样呢?这实际上会使这个解决方案无法使用,或者我漏掉了什么吗? - rbaleksandar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接