如何开发WCF服务以自动管理作为Window Service托管的其他相关WCF服务?

时间:2010-02-01 15:22:54

标签: wcf

请帮助我构建我正在进行的项目所需的解决方案。 我已经开发了一些作为Windows服务托管的WCF服务,我做了到目前为止工作正常。现在我被要求开发一个主WCF服务类型,它应该足够智能,可以管理所有其他WCF服务,以防止可能的损坏/错误,并可以修复它们并重新启动。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我在这里做类似的事情。

  • 在主程序中创建一个Dictionary<key, ApplicationDomain>集合
    • Key:每个应用领域都有一些独特之处,例如GuidSystem.Type
  • ApplicationDomain类公开内部属性以访问您的AppDomain代理(继承MarshallByRef类的代理)
  • 将您的WCF主机加载到主程序中,以便您可以访问该集合
  • 每次您的服务获得访问权限时,您只需要获取该密钥,访问您的代理并在服务托管服务商中执行任何操作。

关键点:您的服务必须能够访问所有服务主机。

答案 1 :(得分:0)

由于我们已经编写了一个自定义主机并花了我们多年时间才使它成为真正的应用服务器,因此我将分享一些我们遇到的挑战。如果要管理所有详细信息并将NT服务视为真实服务主机,则创建将WCF服务作为NT服务进行管理的自定义主机是一项非常具有挑战性的任务。挑战始于管理多个Appdomains(每个服务一个),管理服务的状态,启动时间,从IDE部署,最糟糕的是激活。你考虑过如何实现吗?如果您没有此功能,则表示您的所有服务始终处于活动状态且处于内存状态。 IIS和Appfabric做得非常好并且相信我,它实现起来并不容易。另一个具有挑战性的部分是用于管理此主机的UI,以及可以管理多个主机(在不同机器上运行的NT服务)的UI。您需要发现代理实现吗?最后,如果要以相同的方式管理在自定义主机,IIS和App结构中运行的服务,该怎么办? 在进行这样的实现之前要考虑一下,因为范围可能会在您执行时隐藏。