日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
WCF行為擴展正確內(nèi)容應(yīng)用技巧分享

WCF中的一些行為應(yīng)用在實際應(yīng)用中是一個非常重要的知識點。我們今天將會針對WCF行為擴展的相關(guān)內(nèi)容做一個詳細的介紹,希望對此又需要的朋友們可以通過本文介紹的內(nèi)容充分掌握這一應(yīng)用技術(shù)。#t#

在當(dāng)涂等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,營銷型網(wǎng)站建設(shè),外貿(mào)網(wǎng)站制作,當(dāng)涂網(wǎng)站建設(shè)費用合理。

WCF以其靈活的可擴展架構(gòu)為開發(fā)者提供了方便,其中對行為的擴展或許是應(yīng)用中最為常見的。自 定義對WCF行為擴展并不復(fù)雜,但仍有許多細節(jié)需要注意。在服務(wù)端,一般是對DispatchRuntime和DispatchOperation進行擴展, 擴展點包括了對參數(shù)和消息的檢查,以及操作調(diào)用程序,它們對應(yīng)的接口分別為 IParameterInspector,IDispatchMessageInspector以及IOperationInvoker。而在客戶端,則是對ClientRuntime和ClientOperation進行擴展,擴展點包括對參數(shù)和消息的檢查,對應(yīng)的接口分別為 IParameterInspector和IClientMessageInspector。這些接口類型均被定義在 System.ServiceModel.Dispatcher命名空間下,其中IParameterInspector接口可以同時作用在服務(wù)端和客戶 端。

對這些接口的實現(xiàn),有點類似于AOP的實現(xiàn),可以對方法調(diào)用前和調(diào)用后注入一些額外的邏輯,所以通常會將這些WCF行為擴展稱為偵聽器。例如IParameterInspector接口,就定義了如下方法:

 
 
 
  1. void AfterCall(string operationName, object[] outputs, 
    object returnValue, object correlationState);   
  2. object BeforeCall(string operationName, object[] inputs); 

在調(diào)用服務(wù)對象的目標(biāo)方法前,會調(diào)用BeforeCall方法,而在調(diào)用后則會調(diào)用AfterCall方法。例如我們可在方法調(diào)用前檢驗計算方法的參數(shù)是否小于0,如果小于0則拋出異常:

 
 
 
  1. public class CalculatorParameterInspector:IParameterInspector  
  2. {  
  3. public void BeforeCall(string operationName, object[] inputs)  
  4. {  
  5. int x = inputs[0] as int;  
  6. int y = inputs[1] as int;  
  7. if (x <0 || y < 0)  
  8. {  
  9. throw new FaultException("The number can not be less than zero.");  
  10. }  
  11. return null;  
  12. }  
  13. public void AfterCall(string operationName, object[] outputs, 
    object returnValue, object correlationState)  
  14. {  
  15. //empty;  
  16. }  

 

對消息的檢查區(qū)分了服務(wù)端和客戶端,接口方法根據(jù)消息傳遞的順序剛好相反[注]。我們可以通過接口方法對消息進行處理,例如打印消息的Header:

 
 
 
  1. public class PrintMessageInterceptor : IDispatchMessageInspector  
  2. {  
  3. #region IDispatchMessageInspector Members  
  4. public object AfterReceiveRequest(ref System.ServiceModel.Channels.
    Message request, IClientChannel channel, InstanceContext instanceContext)  
  5. {  
  6. MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue);  
  7. request = buffer.CreateMessage();  
  8. Console.WriteLine("After Receive Request:");  
  9. foreach (MessageHeader header in request.Headers)  
  10. {  
  11. Console.WriteLine(header);  
  12. }  
  13. Console.WriteLine(new string('*', 20));  
  14. return null;  
  15. }  
  16. public void BeforeSendReply(ref System.ServiceModel.Channels.
    Message reply, object correlationState)  
  17. {  
  18. MessageBuffer buffer = reply.CreateBufferedCopy(Int32.MaxValue);  
  19. reply = buffer.CreateMessage();  
  20. Console.WriteLine("Before Send Request:");  
  21. foreach (MessageHeader header in reply.Headers)  
  22. {  
  23. Console.WriteLine(header);  
  24. }  
  25. Console.WriteLine(new string('*', 20));  
  26. }  
  27. #endregion  

 

WCF提供了四種類型的行為:服務(wù)行為、終結(jié)點行為、契約行為和操作行為。 這四種WCF行為擴展分別定義了四個接口:IServiceBehavior,IEndpointBehavior,IContractBehavior以及 IOperationBehavior。雖然是四個不同的接口,但它們的接口方法卻基本相同,分別為 AddBindingParameters(),ApplyClientBehavior()以及ApplyDispatchBehavior()。注 意,IServiceBehavior由于只能作用在服務(wù)端,因此并不包含ApplyClientBehavior()方法。


新聞名稱:WCF行為擴展正確內(nèi)容應(yīng)用技巧分享
URL分享:http://www.dlmjj.cn/article/djisdge.html