【问题标题】:new ServiceHost for every WCF service?每个 WCF 服务的新 ServiceHost?
【发布时间】:2009-11-10 14:24:21
【问题描述】:

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

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

所以我的问题是:

1。 我是否应该创建某种门面模式类来覆盖所有服务类并将这个门面类放到一个服务主机上。 或者只是为每个服务类创建一个 ServiceHost 实例?像这样

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

2.我的服务类应该有多细?每个实体或每个聚合根或每个功能块?

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

【问题讨论】:

  • 我最近遇到了类似的问题。我使用 Facade 来包含所有服务

标签: c# .net windows wcf service


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      但是,按照关注点分离原则,我没有看到很多令人信服的理由来拥有一个巨大的“SuperDuperServiceClass”来实现大量的服务合同 - 我喜欢保留无关紧要的东西彼此分开 - 从长远来看更容易管理它。

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

      【讨论】:

      • 如果两个不同的服务接口覆盖(但只是部分)相同的操作,但这些操作返回不同的值给客户端怎么办?这实际上会使该解决方案无法使用,还是我遗漏了什么?
      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多