|
这个是在WCF4.0中提供的一个新特性。在这一节里,我会介绍WCF服务实例化的机制,其中介绍两个主要的类型通道分发器和服务宿(ChannelDispatcher和ServiceHost)。它们与服务激活的关系。最后给出详细的开发过程。 【1】基本概念: Fileless Hosting也就是IIS hosting WCF Service without an SVC file ,中文意思,也就是无svc文件托管WCF服务。 【2】服务实例化: 我们知道在4.0之前的版本,创建IIS托管的WCF服务程序,默认都会生成一个对应的svc文件。这个和Asp.net Web服务的ASMX文件作用类似,也就是设置一些重要的功能,比如code-behind.代码后置。在svc文件里,我们可以看到一些主要的信息: <%@ ServiceHost Language="C#" Debug="true" Service="Service" CodeBehind="~/App_Code/Service.cs" %> 【3】通道分发器: 这里一个重要的类型就是通道分发器ChannelDispatcher,它会负责把特定的消息与服务实例关联起来,并发特定的消息转发给服务实例。 使用绑定创建通道侦听器 ChannelDispatcher、EndpointDispatcher、DispatchRuntime和DispatchOperation类型不可以在ServiceHost 或ServiceHostBase的实例上下文环境之外使用。事实上,如果我们尝试单独使用的话,ChannelDispatcher会抛出一个InvalidOperationException异常。在接收程序里,ServiceHost位于调用堆栈的顶部,而且它封装了ChannelDispatcher、EndpointDispatcher、DispatchRuntime和DispatchOperation类型的复杂性。ServiceHost类型定义了一个容易使用的API,它简化了侦听终结点的工作。在运行时,ServiceHost类型最终要调用通道侦听器、通道堆栈、ChannelDispatcher、EndpointDispatcher、DispatchRuntime和DispatchOperation。本质上,ServiceHost类型借助本书里介绍的类型来构造一个完整的消息接收程序,因此,开发者不需要再去实现复杂的底层机制。 【5】无svc文件服务激活的原理: 在WCF4.0里,通过提供一种虚拟的服务类型映射机制来实现WCF服务的激活。我们可以在配置文件里指定服务类型和相对地址之间的映射关系。这就使得我们可以在不是要.svc文件的情况下,在WAS/IIS里托管WCF服务程序。 关于服务激活,这里一个重要的类型就是serviceActivation。我们可以定义服务类型和相对地址之间的映射关系。在配置文件里serviceActivations节点属于serviceHostingEnvironment>。一个简单的服务类型和相对地址之间的映射如下:
这种通过配置设置的激活映射,支持http和非http协议。我们需要在相对地址relatativeAddress 里扩展文件名,例如.svc、.xoml 或.xamlx。我们也可以定义自己的处理扩展组件,然后在这里配置,那么WCF也会做类似的映射。为了避免冲突,我们在配置文件里定义的<serviceActivations>会代替svc的内容。也就是配置文件的设置优先级会比较高。 【6】开发过程详解: 【6.1】创建一个WCF服务项目: 这里就是用Visual Studio直接创建一个默认的WCF服务程序,也就是IIS托管的项目类型。服务契约和服务类型的定义非常简单: public class Service : IService 【6.2】配置服务激活选项: 这里要配置服务激活相关的选项: <serviceHostingEnvironment> 【6.3】IIS部署: 这里我们使用的是IIS6(IIS7的部署可能存在差别,但是基本操作是类似的),来部署WCF服务,过程很简单。 编译,并发布WCF服务程序。 ![]() 【6.4】运行结果 这里直接启动IE,可以在浏览器里查看到服务的信息。如果启用服务元数据页面,可以查看到服务的WSDL信息。页面如下: ![]() 【7】总结 1)IIS7托管的时候,记住要指定WCF Handle。 2)这里对于IIS支持,IIS6目前只支持,http绑定,而对于IIS7,可以利用WAS支持其它的非Http绑定。 3)IIS托管的时候,注意指定ASP.NET的版本:4,不是2.0,不然会出错误。 4)最后给出例子代码,共大家参考:
|








骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价