成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

WCF行為擴展為程序開發提供極大便利

開發 開發工具
在開發人員進行一個程序開發的過程中,需要運用不同的方式來完成他們的需求,其中就需要擴展的應用。下面就介紹一下WCF行為擴展的相關應用。

WCF服務中,我們可以對行為進行擴展,來滿足我們在程序開發中的各種需求。WCF以其靈活的可擴展架構為開發者提供了方便,其中對WCF行為擴展或許是應用中最為常見的。自定義對行為的擴展并不復雜,但仍有許多細節需要注意。#t#

在服務端,一般是對DispatchRuntime和DispatchOperation進行擴展,擴展點包括了對參數和消息的檢查,以及操作調用程序, 它們對應的接口分別為IParameterInspector,IDispatchMessageInspector以及 IOperationInvoker。而在客戶端,則是對ClientRuntime和ClientOperation進行擴展,擴展點包括對參數和消息 的檢查,對應的接口分別為IParameterInspector和IClientMessageInspector。

這些接口類型均被定義在 System.ServiceModel.Dispatcher命名空間下,其中IParameterInspector接口可以同時作用在服務端和客戶端。對這些接口的實現,有點類似于AOP的實現,可以對方法調用前和調用后注入一些額外的邏輯,所以通常會將這些擴展稱為偵聽器。例如IParameterInspector接口,就定義了如下方法:

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

WCF行為擴展在調用服務對象的目標方法前,會調用BeforeCall方法,而在調用后則會調用AfterCall方法。例如我們可在方法調用前檢驗計算方法的參數是否小于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. }  

WCF行為擴展對消息的檢查區分了服務端和客戶端,接口方法根據消息傳遞的順序剛好相反[注]。我們可以通過接口方法對消息進行處理,例如打印消息的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行為擴展的相關介紹。

責任編輯:曹凱 來源: IT168
相關推薦

2009-11-06 14:08:06

WCF行為擴展

2009-03-16 09:16:13

行為擴展WCF.NET

2010-02-26 10:46:12

WCF行為擴展

2011-06-30 09:54:57

Java.NETAzure

2014-11-14 14:40:21

亞馬遜Cocos引擎

2015-09-23 19:15:14

2016-01-31 17:45:31

2010-03-02 09:24:22

WCF變更行為

2010-03-02 14:41:00

WCF行為控制

2015-11-25 11:00:48

谷歌Chrome瀏覽器

2010-02-25 09:36:28

WCF行為控制

2010-03-01 14:50:30

WCF行為類型

2014-09-25 08:17:26

2009-10-15 20:46:12

LifeSize Pa網真LifeSize

2014-11-26 10:23:34

數據中心SDN

2009-11-06 14:25:56

WCF接口

2009-02-09 18:11:33

Hypervisor虛擬化微軟

2021-04-26 10:04:43

AirDrop漏洞數據泄漏

2011-02-15 09:05:35

重寫程序

2024-06-05 08:51:14

Python動態創建類工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产福利资源在线 | 狠狠狠干 | 精品成人免费视频 | 国产精品国产成人国产三级 | 中文字幕免费在线 | 国产精品成av人在线视午夜片 | 亚洲一区二区不卡在线观看 | 精品乱人伦一区二区三区 | 一区二区三区精品视频 | 久久这里只有精品首页 | 日干夜操 | 成人福利影院 | 免费一级欧美在线观看视频 | 999久久久久久久久 国产欧美在线观看 | 亚洲免费婷婷 | 日韩精品一区二区三区中文在线 | 黄色三级免费网站 | 国产精品久久国产精品99 | 国产精品免费在线 | 精品一区精品二区 | 久久精品视频在线观看 | 北条麻妃视频在线观看 | 国产高清亚洲 | 亚洲视频在线观看 | 欧美一级在线 | 亚洲国产成人精品女人久久久 | 国产精品日韩欧美一区二区 | 婷婷综合在线 | 国产成人免费视频网站高清观看视频 | 91中文视频| 日韩欧美电影在线 | 国产精品久久免费观看 | 亚洲精品视频播放 | 国产三区精品 | 成人av一区二区三区 | 在线免费av电影 | 国产精品久久久久久久久久 | 欧美在线a | 国产人成精品一区二区三 | 国产精品久久久久久妇女 | 中文字幕在线观看www |