對WCF消息詳細(xì)介紹說明
WCF消息是基于消息機制的,一些功能的實現(xiàn)如尋址,加密等在消息中都會體現(xiàn)的***,在WCF消息中的通道就像車間的流水線,而消息就作為這個流水線上待加工的產(chǎn)品。每經(jīng)過一個處理位置,相應(yīng)的通道都會對消息對不同的操作處理。
而要實現(xiàn)截獲消息的目的,通??梢杂幸韵聨追N辦法:
1 路由截獲法
2 自定義Binding法
3 實現(xiàn)IMessageInspector接口法
4 跟蹤診斷法#t#
四種方法,實現(xiàn)的難度和得到的效果不盡相同。下面逐一闡述實現(xiàn)方式。
1、WCF消息路由截獲法
此種方法,有可以分為兩種
a)采用現(xiàn)有tcp消息跟蹤工具。
b) 利用wcf中的路由功能做自定義的路由。
其中常見的現(xiàn)成tcp消息跟蹤工具,我所常用的是以下兩個:
a) tcpTrace
b) soap toolkit 3.0中所帶工具 soap trace utility
兩款工具工作原理一致,都如下圖所示:
通過這兩個工具截獲Message的方法,很多朋友們已經(jīng)熟練使用。比如很早的時候Artech就在其blog文章中介紹過tcpTrace的使用,文章為:[原創(chuàng)]我的WCF之旅(9):如何在WCF消息中使用tcpTrace來進行Soap Trace。所以具體使用方法,我就不再贅述。只總結(jié)一點,在使用tcpTrace或者soap trace utility 的時候,listen port指定的是路由的監(jiān)聽地址,同時也應(yīng)該是client端設(shè)置的via地址。而destination port要設(shè)置的服務(wù)的監(jiān)聽地址。在上面的途中,listen port 應(yīng)該為 8019, 而Destination port為8020
除了使用現(xiàn)成的工具來做路由,WCF消息本身也支持路由功能。實現(xiàn)原理和上圖一致。唯一不同的是中間的路由器可以由自己用WCF技術(shù)編寫。這樣一來就更靈活一些。做了一個非常簡單的demo,主要適用于request/reply的交互模式。