您好,登錄后才能下訂單哦!
這篇文章主要講解了“WCF緩存機制怎么理解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“WCF緩存機制怎么理解”吧!
緩存是很占內存的,緩存也有它的好處,這里就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) { MessageHeaderMessageHeadermh=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緩存機制怎么理解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。