【问题标题】:Ideas for an extensible (addins/plugins) WCF service host?可扩展(插件/插件)WCF 服务主机的想法?
【发布时间】:2010-09-21 13:54:11
【问题描述】:

我正在寻找有关如何构建可扩展 WCF 服务器(具有动态加载的服务)的建议,最好使用 System.Addins 或 MEF。

服务器应托管任何实现最小“插件”API(StartService/StopService/GetStatus?/etc)的 WCF 服务(包含在 DLL 程序集中,在运行时加载)。

This post 是一个好的开始。需要讨论的一些目标和要点:

  • 为每个服务使用/不使用独立的 AppDomain?
  • 如何配置每个服务(端点、传输协议)? XML-config 文件还是更好的选择?
  • 程序集的延迟/延迟加载(当服务请求到达时)?可能的?有用?怎么做?
  • 磁盘上的文件更改时重新加载程序集(对开发环境很有用);
  • 磁盘配置更改时服务重启;

当然,其他想法总是受欢迎的;)

【问题讨论】:

    标签: wcf plugins add-in lazy-loading mef


    【解决方案1】:
    • 是的,为每个服务使用一个独立的AppDomain。您需要AppDomain 隔离,这样您就不会关闭其他正在运行的服务,以防万一发生故障。

    • 提供 WCF 当前所做的所有方式,无论是通过编程还是通过配置。编程访问很困难,因为ServiceHost 实例不可序列化,因此跨应用程序域边界获取信息将是一件痛苦的事情。

    • 我会说这是可能的。但是,这基本上是在复制 Windows Process Activation Service,因此您可能希望开始在那里寻找您的功能。

    • 它对开发很有帮助,但老实说,我不认为它有那么重要。它使您的代码复杂化以获得不太可衡量的收益(IMO)。我宁愿编写一个脚本来停止服务、复制文件并重新启动它,而不是使代码库过于复杂并且总是不得不观察程序集。

    • 现在您正在谈论 IIS。您基本上可以让 IIS 托管您的服务,它会在配置文件更改时回收它。

    话虽如此,WAS 和 IIS 似乎为您提供了大部分您想要的东西(高度可用、隔离的应用程序域、配置等),所以您可能想问为什么要自己做这件事.

    【讨论】:

      猜你喜欢
      • 2020-11-07
      • 1970-01-01
      • 2013-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多