WCF服务端运行时架构体系详解[续篇]
来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 20:25 点击:次
终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行。如果从服务描述的角度来看,操作是一个OperationDescription对象。而服务端分发运行时中的操作则代表的是一个DispatchOperation对象。作为服务描述的一部分,服务所有终结点的所有操作描述(OperationDescription)在ServiceHost创建过程中被创建。而当ServiceHost被正常开始时,这些操作描述最终转换成分发操作(DispatchOperation)。而DispatchRuntime的Operations属性代表了对应终结点的所有分发操作。
目录:一、序列化与反序列二、调用上下文初始化三、参数的检验四、服务实例的释放五、事务六、操作的执行七、参数和返回值的释放八、身份模拟总结
接下来,我们同样从可扩展的角度来分析DispatchOperation,下面的代码片断列出了所有可供扩展的属性。
1:publicsealedclassDispatchOperation
2:{
3: //序列化与反序列化
4: publicboolDeserializeRequest { get; set; }
5: publicboolSerializeReply { get; set; }
6: publicSynchronizedCollection<FaultContractInfo> FaultContractInfos { get; }
7: publicIDispatchMessageFormatter Formatter { get; set; }
8:
9: //执行上下文初始化
10: publicSynchronizedCollection<ICallContextInitializer> CallContextInitializers { get; }
11:
12: //参数检验
13: publicSynchronizedCollection<IParameterInspector> ParameterInspectors { get; }
14:
15: //服务实例释放
16: publicboolReleaseInstanceAfterCall { get; set; }
17: publicboolReleaseInstanceBeforeCall { get; set; }
18:
19: //事务
20: publicboolTransactionAutoComplete { get; set; }
21: publicboolTransactionRequired { get; set; }
22:
23: //操作执行
24: publicIOperationInvoker Invoker { get; set; }
25:
26: //参数/返回值的释放
27: publicboolAutoDisposeParameters { get; set; }
28:
29: //身份模拟
30: publicImpersonationOption Impersonation { get; set; }
31:}
一、序列化与反序列
我们所示的服务操作的执行最终体现在执行服务实例的某个相应的操作方法。而调用方法需要传入参数,而参数是一个个实实在在的基于某种类型的对象。但是在这之前,所有的服务调用信息被封装在消息中(对应于Message对象)。那么,在真正执行方法调用之前首要的任务就是从请求消息中提取相应的信息并将其反序列化成方法的输入参数。在另
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>