在Windows服务中托管WCF服务的框架

问题描述:

有谁知道一个框架可以让我在Windows服务中轻松托管和配置WCF服务吗?在Windows服务中托管WCF服务的框架

本来我已经开发,其中一台主机的应用程序包含每个服务宿主一个Windows服务,以使管理员可以在服务小程序单独管理这些服务的系统。

然而,其他系统上线来与越来越多的WCF服务,将需要举办这样的,人们越来越担心,这会变得过于复杂通过服务小应用程序来管理。

来自上方的要求,我们需要配置Windows服务中托管了哪些服务,启动和停止他们的要求,并允许易于部署的能力。

我相信在服务范围内,我们可以托管一个管理WCF服务,这将允许我们控制其他服务的行为,但是如果有人已经为此创建了框架,我非常乐意使用该轮子已经发明了。

+0

我一直在忙,而且给了一个额外的一天还有希望有人提供了一个更合适的解决办法,但是,现在,它似乎没有人已经解决了,我一直在给定的问题我将不得不实现我自己的框架 – 2009-11-11 22:34:05

似乎这个应用程序匹配一些你在找什么。它可以动态托管wcf服务并具有用于管理它的UI。

alt text http://www.wcfstorm.com/wcf/Data/Sites/1/WcfStormHost/wcfstormHost-Main.png 应用:http://www.wcfstorm.com/wcf/getting-started-with-wcfstormhost.aspx

+0

神奇,以前没有听说过,谢谢 – 2010-08-03 09:26:50

好,托管在Windows NT服务的WCF服务是不是真的那么难 - 所以我不认为有一个大大的“框架”适用于该...

基本上,你需要

  • 声明一个变量ServiceHost每个WCF服务要主持
  • 在NT服务的OnStart()方法覆盖,实例化,并在OnStop()实现方法具打开服务主机
  • d服务主机再次关闭服务主机

这就是所有的问题 - 那么在这种情况下,您希望将哪个方面委托给框架?您还有哪些其他方面或问题需要处理?

如果您想影响单个NT服务中的单独服务实例,则必须检查NT Service类的OnCustomCommand方法重写。

从外面看,你可以创建一个ServiceController,然后调用ExecuteCommand该控制器上。不幸的是,你只能发送一个int作为参数。

所以我想在这种情况下,你必须定义如每个服务的“服务常数”,例如const int MyService1 = 10; const int MyServive2 = 20;,然后使用该基本服务常量来启动WCF服务,该基本常量+ 1来停止它,或沿着这些行。

+0

这就是我目前所拥有的,但我们希望从单个Windows服务托管多个服务,但动态管理在该服务中运行的是哪个WCF服务 – 2009-11-10 14:04:15

+0

啊好吧,所以您希望能够向NT服务发信号以关闭或重新启动托管的WCF服务?听起来好像是个好主意,但我认为没有任何框架(还没有) - 由您来创建并与WCF世界分享! – 2009-11-10 14:20:43

+0

创建在具有关闭其他主机的功能的相同服务中运行的“管理”或“管理员”主机。这应该是诀窍... – Kwal 2009-11-10 14:45:53

这归结为个人意见。我发现通过标准MMC管理单元控制一百种不同的服务没有问题。它还允许网络管理员使用WMI,PowerShell,商业工具等为整个域集中管理它们。如果您推出自己的管理系统,则放弃这种简单的集中控制。

至于部署,只需创建一个自定义动作一气呵成安装所有的服务。