调用上下文-hta8533-md-007yy_使用说明书_v1.1_20170302
54.12调用上下文客户端激活的对象能够保存某一具体客户端的状态。使用客户端激活的对象时,服务器需要为每个客户端分配资源。而使用服务器激活的SingleCall对象时,每个实例调用都会创建一个新的实例。由于单一调用对象不保存客户的状态,因此在服务器上不占用资源。在管理状态时,可以在客户端保存状态,对象的状态信息随每一次方法调用发送给服务器。要实现这样的状态管理,因为可以使用调用上下文自动完成,所以不必改变所有方法签名,使它包括附加参数,附加参数把状态传递给服务器。调用上下文随逻辑线程一起流动,并和每一个方法调用一起传递。逻辑线程从主调线程开始,经过从主调线程中开始的所有方法调用,并且通过不同的上下文、不同的应用程序域和不同的进程。使用CallContext.SetData()方法可以把数据赋予调用上下文。该对象可以用作SetData()方法的数据,但是这些对象所属的类必须实现ILogicalThreadAffinative接口。使用CallContext.GetData()方法也可以在同一逻辑线程(但有可能是不同的物理线程)中得到同样的数据。使用CallContextData类为调用上下文的数据创建一个新的C#类库。CallContextData类用于把一些数据随每一次方法调用从客户端传递给服务器。与调用上下文一起传递的类必须实现System.Runtime.Remoting.Messaging.ILogicalThreadAffinative接口。该接口没有方法,它只是运行库的一个标记,作用是指定CallContextData类的实例应该与逻辑线程一起流动。此外,CallContextData类也必须使用Serializable特性标记,以便通过信道传输它: using System; using System.Runtime.Remoting.Messaging; namespace Wrox.ProCSharp.Remoting { [Serializable]
97.07MB
文件大小:
评论区