WCF服务端运行时架构体系详解[续篇]

  终结点分发器在自己的运行时中对请求消息的处理最终肯定体现在相应操作的执行。如果从服务描述的角度来看,操作是一个OperationDescription对象。而服务端分发运行时中的操作则代表的是一个DispatchOperation对象。作为服务描述的一部分,服务所有终结点的所有操作描述(OperationDescription)在ServiceHost创建过程中被创建。而当ServiceHost被正常开始时,这些操作描述最终转换成分发操作(DispatchOperation)。而DispatchRuntime的Operations属性代表了对应终结点的所有分发操作。

目录:
一、序列化与反序列
二、调用上下文初始化
三、参数的检验
四、服务实例的释放
五、事务
六、操作的执行
七、参数和返回值的释放
八、身份模拟
总结

  接下来,我们同样从可扩展的角度来分析DispatchOperation,下面的代码片断列出了所有可供扩展的属性。

public sealed class DispatchOperation
{
//序列化与反序列化
public bool DeserializeRequest { get; set; }
public bool SerializeReply { get; set; }
public SynchronizedCollection<FaultContractInfo> FaultContractInfos { get; }
public IDispatchMessageFormatter Formatter { get; set; }

//执行上下文初始化
public SynchronizedCollection<ICallContextInitializer> CallContextInitializers { get; }

//参数检验
public SynchronizedCollection<IParameterInspector> ParameterInspectors { get; }

//服务实例释放
public bool ReleaseInstanceAfterCall { get; set; }
public bool ReleaseInstanceBeforeCall { get; set; }

//事务
public bool TransactionAutoComplete { get; set; }
public bool TransactionRequired { get; set; }

//操作执行
public IOperationInvoker Invoker { get; set; }

//参数/返回值的释放
public bool AutoDisposeParameters { get; set; }

//身份模拟
public ImpersonationOption Impersonation { get; set; }
}

NET技术WCF服务端运行时架构体系详解[续篇],转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。