WCF-寄宿

来源:互联网 发布:软件实施方案模板 编辑:程序博客网 时间:2024/05/04 03:51
  进程是一个容器,包含程序实例运行所需的资源,任何一个程序都需要运行于一个确定的进程中.WCF服务需要运行于一个成为宿主的应用程序,宿主程序为请求监听,消息处理,服务激活以及操作执行提供了一个运行环境.
     我们将利用宿主来承载服务的操作成为服务寄宿.
     服务寄宿的方式大体上分为两种,一种是自定义一个控制台程序,Windows程序或者其他类型的应用程序作为承载服务的宿主,我们将这种方式成为自我寄宿;另一种则是通过操作系统现有的进程激活方式为WCF服务提供宿主(IIS,windows服务等).
      有关服务的核心对象是ServiceHost,当我们创建一个ServiceHost的时候,WCF在后台的核心操作就是创建用于描述被寄宿服务的ServiceDescription对象.WCF服务的本质就是一组相关的终结点列表.所以ServiceDescription的核心部分就是通过只读属性Endpoint是表示的终结点列表.
       当我们定义好相应的配置,通过指定服务类型创建一个ServiceHost的时候,WCF为我们所做的核心工作就是根据服务的类型的定义和配置创建一个用于描述服务的ServiceDescription对象.被创建的ServiceDescription对象反映在ServiceHost的基类ServiceHostBase的只读属性Description上.
       当我们调用ServiceHost对象的Open方法时候,WCF会根据创建的ServiceHost时得到的作为服务的整体描述的ServiceDescription对象来构建整个运行时体系.也正式因为ServiceDescription是构建运行时框架体系的基础,在Service开启之后针对它的任何改变都是没有任何意义的.
      我们平时多用IIS寄宿的方式,稍微介绍一点关于IIS寄宿.WCF的服务寄宿,就是创建或者激活一个进程为WCF服务构建一个运行环境,而IIS本身可以看作一个自动化的进程激活工具,我们通过HTTP协议请求寄宿于IIS的某个资源,比如.aspx,iis会将该请求转发给相应的工作进程.如果该进程不存在,则激活或者创建一个新的工作进程来处理请求.我们也是用同样的方式来处理基于WCF的服务请求.
       当然我们常常选择IIS寄宿也是有原因地.
       第一,IIS自动化的的进行进程激活或关闭.
         第二,自动化的进程回收.
         第三,自动化的进程健康检测
         第四,asp.net动态编译

有关服务的寄宿,我们平时只是发布到IIS上,其余的都没有过多的关注,多了解一下底层做了什么事情,有助于我们对项目整体的理解.
0 0