Posted on 2010-03-22 23:40
Frank Xu Lei 阅读(29)
评论(2)
编辑
收藏 所属分类:
SOA and EAI,
WCF4.0新特性体验
今天我来继续学习WCF4.0新特性体验(7):IIS无SVC文件托管WCF服务(IIS hosting without an SVC file )。这个是在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"
%
>
上面的声明通知 .svc 处理程序要在哪个类中查找 WebMethod,该处理程序就会神奇地处理其余所有事情。例如,假设虚拟目录的名称为 'service1',它包含'service1'.svc 以及一个包含该程序集的 bin 子目录。
【3】通道分发器:
这里一个重要的类型就是通道分发器ChannelDispatcher,它会负责把特定的消息与服务实例关联起来,并发特定的消息转发给服务实例。
- 使用绑定创建通道侦听器
- 管理通道侦听器上的通道
- 管理侦听工作
- 管理通道侦听器和通道堆栈
- 控制从通道堆栈接收消息的节奏(也称作限流throttling)
- 管理服务实例的创建、生命周期和数量
- 路由消息到特定的服务实例
- 把接收的消息反序列化为特定的对象
- 使用这个对象来调用服务实例上的方法
- 序列化返回结果到应答消息里
- 路由应答消息到特定的通道堆栈,然后通过通道堆栈发送给客户端
- 处理以上