WCF之Host宿主

  • Self_hosting自托管宿主.
    • 过程:手动创建Host实例,把服务端点添加到Host实例上,把服务接口与Host关联.
    • 一个Host只能指定一个服务类型,但是可以添加多个服务端点,也可以打开多个Host.其中,Typeof(..)就是配置中的<Service Name=..>.
    • 在通常的企业应用中,我们很少会采用自宿主方式托管服务,这是因为这种方式必须要在应用程序运行下,客户端才能够调用服务,且并不便于随时启动和停止服务。除了不具有易用性与易管理性之外,在可靠性、性能等诸多方面受到很多限制。但由于它简单、易于实现,因而往往用于开发期间的调试或演示环境。
    • 自托管宿主支持所有的绑定.
  • 事件/服务.
    • 行为:宿主与服务的交流互操作.OnOpen/Host.Description.Behaviors.Add(…)).
  • IIS/WAS宿主.
    • IIS提供宿主的实例,只需在.SVC文件中声明一个服务类型(@ServiceHost Service=…)就可以了,Self-hosting为一个可执行程序,其端点可以直接设置,但是IIS/WAS端点与.svc文件相关联.
    • IIS的宿主,是通过内核的http.sys监听.所以只能处理Http请求.
    • 服务分到不同的APP Domain 中,一次的恶意攻击,只会影响一个服务实例,而对于self-hosting,导致程序崩溃.
    • WASIIS7的扩展.可以处理各种格式的文件.
  • Windows应用程序.
    • Form/WPF带有UI的宿主,安装在客户端主机上,在客户端主机上暴露服务.
    • 因为此种服务需要对宿主进行一些UI操作.服务Host需要手动打开,如果在非UI线程上打开,服务操作会在新线程上,如果在UI线程上,自动加入该UI线程.
    • 要注意线程上下文的同步.
  • Windows服务.
    • 用于无人值守的主机,也可以部署到客户端主机上,主机启动时,宿主环境初始化,发生错误时重启.
    • 它便于管理者方便地启动或停止服务,且在服务出现故障之后,能够重新启动服务。
    • 我们还可以通过Service Control Manager(服务控制管理器),将服务设置为自动启动方式,省去了服务的管理工作。
    • 此外,Windows Services自身还提供了一定的安全性以及检测机制和日志机制。
    • 如果在企业应用中要使用WCF技术,最佳的宿主方式就是Windows Services,尤其是服务器的操作系统不是Vista的情况之下。
    • 它便于服务的管理,能够维持服务长时期的运行,同时它还支持所有的绑定,因而受到的限制最小。
    • 然而,这种方式唯一的缺点却是对宿主的部署相对比较复杂,必须通过.NET提供的Installutil.exe工具完成对服务宿主的安装(也可以通过安装包的自定义操作完成)。若要完成对服务宿主的安装,我们还需要创建它的安装程序.
posted @ 2014-06-11 09:44  robynhan  阅读(482)  评论(0编辑  收藏  举报