WCF开发工具是一个由微软公司开发的功能强大的开发插件。它的应用可以帮助我们实现包括在通信方面的各种功能需求。那么接下来,我们将会为大家分析一下其中一个比较基础的内容,WCF缓存机制的相关概念。#t#
公司主营业务:做网站、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出来宾免费做网站回馈大家。
缓存是很占内存的,缓存也有它的好处,这里就WCF缓存机制分析一个案例,希望大家可以从中得到收获。首先我们看看MSDN中对WCF的Session的说明:它们由调用应用程序显式启动和终止。会话期间传递的消息按照接收消息的顺序进行处理。会话将一组消息相互关联,从而形成对话。该关联的含义是抽象的。
例如,一个基于会话的通道可能会根据共享网络连接来关联消息,而另一个基于会话的通道可能会根据消息正文中的共享标记来关联消息。可以从会话派生的功能取决于关联的性质。不存在与 WCF 会话相关联的常规数据存储区。***一句告诉我们,WCF中的Session是无法像Web应用一样存储附加信息的。经过研究,我们可以通过扩展MessageHeader实现一个附加的数据存储区在Client端每次请求Service时发送到Server端。具体实现如下(以前述需求为例)。
这是一个单件类,Client正常登陆得到Server端回传的UserIdentity实例后可以通过如下代码将其存入WCF缓存机制:
- UserPermissionInfo.GetInstance().SetUserIdentity
(ServerReturnedUserIdentity);
其中ServerReturnedUserIdentity就是Server产生并回传的UserIdentity下面我们扩展MessageHeader将我们自己定义的UserIdentity加入进去,WCF缓存代码如下:
- usingSystem;
- usingSystem.Collections.Generic;
- usingSystem.Text;
- usingSystem.ServiceModel;
- usingSystem.ServiceProcess;
- usingSystem.ServiceModel.Dispatcher;
- usingSystem.ServiceModel.Description;
- usingSystem.ServiceModel.Channels;
- usingSystem.ServiceModel.Configuration;
- namespaceBNCommon.ClientHelper {
- publicclassBNClientMessageInspector:IClientMessageInspector
{ IClientMessageInspector成员- #regionIClientMessageInspector成员
- publicvoidAfterReceiveReply(refMessagereply,objectcorrelationState) { }
- publicobjectBeforeSendRequest(refMessagerequest,IClientChannelchannel) {
- MessageHeaderMessageHeaderMessageHeadermh=MessageHeader.CreateHeader
("UserIdentity","UINS",BNIIClientLayerPlus.UserPermissionInfo
.GetInstance()._UserIdentity);- request.Headers.Add(mh);
- returnnull; }
- #endregion } }
这个类实现了IClientMessageInspector接口,实现该接口可以在Client每次向Server请求前及请求返回后控制Client的行为对发送和接收的数据进行处理。现在我们需要实现BehaviorExtensionElement,IEndpointBehavior将刚刚建立的行为加入Client行为集合,代码如下:
- usingSystem; usingSystem.Collections.Generic;
- usingSystem.Text; usingSystem.ServiceModel;
- usingSystem.ServiceProcess;
- usingSystem.ServiceModel.Dispatcher;
- usingSystem.ServiceModel.Description;
- usingSystem.ServiceModel.Channels;
- usingSystem.ServiceModel.Configuration;
- namespaceBNCommon.ClientHelper {
- publicclassBNClientEndpointBehavior:BehaviorExtensionElement,
IEndpointBehavior {- IEndpointBehavior成员
- #regionIEndpointBehavior成员
- publicvoidAddBindingParameters(ServiceEndpointendpoint,
BindingParameterCollectionbindingParameters) {}- publicvoidApplyClientBehavior(ServiceEndpointendpoint,
ClientRuntimeclientRuntime) {- clientRuntime.MessageInspectors.Add(newBNClientMessageInspector());
- }
- publicvoidApplyDispatchBehavior(ServiceEndpointendpoint,
EndpointDispatcherendpointDispatcher) { }- publicvoidValidate(ServiceEndpointendpoint)
- { return; }
- #endregion
- publicoverrideTypeBehaviorType {
- get...{
- returntypeof(BNClientEndpointBehavior);
- } }
- protectedoverrideobjectCreateBehavior() {
- returnnewBNClientEndpointBehavior();
- } } }
以上就是对WCF缓存机制的基本介绍。
分享题目:深入探讨WCF缓存机制基本概念
URL网址:http://www.gawzjz.com/qtweb2/news9/26059.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联