首先,我正在运行一个应该包含很多功能的Windows服务。这将是一个业务层,来自此业务层的结果将通过WCF发送到表示层。
我不知道如何构建所有这些功能。
所以我的问题是:
1。 我应该创建一些Facade模式类来覆盖所有服务类,并将这个Facade类放到一个ServiceHost中。 或者只为每个服务类创建一个ServiceHost实例?喜欢这个
host1 = new ServiceHost(typeof(MyService1));
host2 = new ServiceHost(typeof(MyService2));
2.我的服务类应该是多少粒度?每个enitity或每个聚合根或每个功能块?
此通讯将通过net.pipe运行。
答案 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”实现了船载服务合同 - 我喜欢保留无关的东西彼此分开 - 从长远来看,它更容易管理。
您反对为单个服务提供单个服务主机的理由是什么?