【问题标题】:WCF remote activation without IIS/WAS没有 IIS/WAS 的 WCF 远程激活
【发布时间】:2009-09-22 12:27:31
【问题描述】:

我需要从客户端在远程计算机上远程生成 WCF 服务。我不能使用 IIS(无 HTTP)或 WAS(无 Windows Server 2008)。

想知道除了这些托管环境之外是否有其他方法可以做到这一点,而无需在负责生成其他 WCF 服务的远程计算机上创建服务。

如果 Windows 服务主机是唯一的方法,有人可以为我指出一篇好的文章或书籍,以获得有效的架构来执行此操作(包括生成的 WCF 服务的生命周期管理)。

谢谢 理子

【问题讨论】:

  • Windows 服务出了什么问题?
  • 没什么,必须做额外的工作来生成其他服务并管理它们,还要部署这个额外的服务。
  • OK- 为什么需要生成这些其他服务?总是跑的有什么问题?
  • 每个处理器需要一个服务,两种服务类型,X 和 Y,有时需要服务 X,有时需要服务 Y。服务应该完成它的工作,然后让处理器再次可用于新的 X 或 Y 服务
  • 听起来 WAS 会这样做,但 Windows Server 2008 无法使用,IIS 6.0 也无法用于普通的旧 HTTP

标签: wcf


【解决方案1】:

如果您不能使用 IIS/WAS,那么您唯一的选择就是自托管。

您可以在 Windows (NT) 服务、控制台应用程序或您喜欢的任何其他应用程序中托管您的 WCF 服务。

重点是:除了会根据需要加载您的服务类的 IIS/WAS 之外,当请求进入并需要处理时,在自托管环境中,您必须启动并运行您的主机应用程序- 这就是为什么 NT 服务似乎至少是生产环境的最佳选择,即使没有人登录到机器上也可以运行这项服务。控制台或其他应用程序需要用户登录,并且该应用程序必须正在运行。

希望这会有所帮助。

马克

【讨论】:

  • 是的,这也是我得出的结论——自托管 Windows 服务是唯一的其他方式。然后,该服务将需要在服务器上本地生成我需要的其他服务。
【解决方案2】:

您可以在 Server 2003 上使用另一种选项 - 在 COM+ 中托管 WCF 服务: http://msdn.microsoft.com/en-us/library/bb735856.aspx

这不像在 Server 2008 上的 WAS 中托管非 HTTP 服务那么容易,但提供了比托管为 NT 服务更好的受支持的监视和部署模型。不过,总的来说,根据我的经验,我认识的大多数人都使用过 NT 服务,因为在 .NET 中生成一个服务相当简单,然后他们执行计数器或类似的东西来在生产中监控它们。

【讨论】:

  • 啊,谢谢,我想知道这个。我对 COM+ 的了解有限,但据我所知,这个选项似乎可能会打开一罐(或两个)蠕虫。
  • 我记得在某处读到 COM+ 不像 IIS/WAS 那样支持“基于消息的激活”。现在找不到链接。
  • 我认为启动和运行这一切所需的麻烦并不比编写自己的 NT 服务要少:-( 这可能只有在你碰巧已经拥有大量 COM+ 服务的情况下才可行....不推荐,恕我直言
  • 将 WF 用于生成服务的服务怎么样?这会有所帮助,还是只会增加额外的开销?
  • 根据我的经验,WF 只会增加开销。获得这项工作的最快和最直接的方法是 NT 服务。刚刚提供了 COM+ 答案,因为您似乎想知道所有选项。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
  • 2018-11-02
  • 2013-10-10
  • 1970-01-01
  • 2013-03-02
  • 1970-01-01
相关资源
最近更新 更多