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

WCF客戶端處理具體實現方法淺析

開發 開發工具
我們在這篇文章中會通過一個比較簡單的示例來為大家詳細介紹一下WCF客戶端處理的相關應用方法,希望能給大家帶來一些幫助。

WCF的客戶端處理方法是一個比較基礎的應用操作,我們需要在實際編程中去不斷的積累這方面的經驗,來達到一種應用熟練的程度。今天我們就會為大家詳細介紹一下WCF客戶端處理的相關方法。#t#

WCF客戶端處理的自動生成實例中 是從ClientBase<of T>.Channel屬性開始的,最終要創建T的透明代理,然后調用。 以BasicHttpBinding為例,客戶端請求的主要步驟如下:

1 根據傳入的Binding和EndpointAddress生成ServiceEndpoint

2 再根據ServiceEndpoint的類型生成ServiceChannelFactory 類的實例。當前BasicHttpBinding 生成的應該是ServiceChannelFactoryOverRequest類的實例,對應的IChannelBinder是RequestChannelBinder

注:
basicHttpBinding.BuildChannelFactory<IRequestChannel>要對 basicHttpBinding所有的綁定元素進行遍歷。默認情況下,不啟用https,則傳輸元素使用HttpTransportBindingElement,該對象重寫BuildChannelFactory<IRequestChannel>,返回值是HttpChannelFactory

RequestChannelBinder對象最重要的字段是channel,對應的值是HttpChannelFactory.CreateChannel(),返回的值是HttpChannelFactory.HttpRequestChannel

3 生成ServiceChannel,將ServiceChannelFactoryOverRequest和RequestChannelBinder做為參數傳入ServiceChannel。構造函數為ServiceChannel(ServiceChannelFactory factory, IChannelBinder binder)

4. 生成T的透理代理ServiceChannelProxy,將ServiceChannel做為參數傳入ServiceChannelProxy,構造

5.在調用透明代理相應的方法時,調用ServiceChannelProxy.Invoke(),如果是Service,調用ServiceChannel.Call(),此時實質是調用ServiceChannel封裝的IChannelBinder(當前是RequestChannelBinder)的call,

6 調用RequestChannelBinder.Request(),注意步驟2***一句,此時channel是HttpChannelFactory.HttpRequestChannel HttpChannelFactory.HttpRequestChannel創建HttpChannelRequest的請求,然后調用HttpChannelRequest.SendRequest發送消息。其實質就是封裝一個HttpWebRequest,將Message發送到服務器端address里,根,webservice的最終原理是一樣的。因此,要抓住幾個關系點,從總體上把握客戶端請求的流程

(1 ServiceChannelFactory 類的實例是什么類型

(2 IChannelBinder接口的實現是什么類型

(3 IChannelBinder.Channel是什么

BindingElement.BuildChannelFactory<TChannel>

這個方法很有意思,默認的實現是通用BindingContext

將當前Binding對象中的所有元素(BindingElementCollection對象的實例),one by one 的進行遍歷,每次移走一個,取出,然后再次調用BuildChannelFactory<TChannel>

舉個例子

對于BasicHttpBinding對象來說,封裝了

傳輸綁定元素

HttpsTransportBindingElement httpsTransport;

指定 HTTPS 傳輸以傳輸消息的綁定元素。

HttpTransportBindingElement httpTransport;

用于指定 HTTP 傳輸以傳輸消息的綁定元素

協議通道元素 (安全)

BasicHttpSecurity security;

配置 basicHttpBinding 綁定的安全設置。

消息編碼綁定元素

MtomMessageEncodingBindingElement mtomEncoding;

指定消息傳輸優化機制 (MTOM) 消息所使用的編碼和版本管理的綁定元素。

TextMessageEncodingBindingElement textEncoding;

指定用于基于文本的 SOAP 消息的字符編碼與消息版本管理。此時,BindingElementCollection中有以上元素,先從集合中移出一個, 調用一次BuildChannelFactory<TChannel>
HttpTransportBindingElement httpTransport 重寫了BuildChannelFactory<TChannel> 返回 HttpChannelFactory。其它的綁定元素基本上調BindingElement的,是直接跳到下一個,所以,
BasicHttpBinding.BuildChannelFactory<IRequestChannel>()返回的是HttpChannelFactory。

以上就是我們為大家介紹的WCF客戶端處理的相關方法。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-25 16:20:02

WCF客戶端

2009-12-22 10:29:59

WCF客戶端處理

2009-11-25 13:21:30

PHP作為memcac

2009-07-15 17:33:08

Swing客戶端

2009-11-05 13:00:25

WCF客戶端

2009-12-07 18:26:36

WCF客戶端

2009-12-22 18:18:11

WCF客戶端編程

2009-12-08 16:47:06

WCF IP

2009-12-21 10:09:26

WCF創建客戶端服務對

2009-08-21 15:36:41

服務端與客戶端

2009-12-22 18:43:00

WCF異步調用

2009-08-21 17:53:25

C#網絡編程客戶端程序

2009-11-09 15:49:01

WCF異步調用

2010-02-22 11:10:17

WCF獲取客戶端IP

2009-11-05 13:08:44

WCF客戶端配置

2009-12-21 15:53:56

WCF獲取客戶端IP

2011-08-25 13:42:57

IP隧道IPIPGRE

2010-02-23 09:58:21

WCF客戶端驗證

2010-05-10 17:34:17

Oracle 客戶端配

2011-09-09 09:44:23

WCF
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天人人精品 | 久草网免费 | 精品无码三级在线观看视频 | 亚洲电影第1页 | 欧美亚洲一区二区三区 | 成人国产网站 | 国产欧美精品 | 日本高清视频在线播放 | 黄色欧美 | 日韩中文一区二区三区 | 久久一区二区av | 亚洲一区二区三区免费视频 | 欧美日韩综合一区 | 亚洲精品乱码久久久久v最新版 | 精品久久影院 | 人人性人人性碰国产 | 日韩国产一区二区三区 | 亚洲国产成人av | 免费在线一区二区三区 | 日韩在线一区二区三区 | 久久精品一 | 伊人影院在线观看 | 丁香综合 | 精品国产乱码久久久久久影片 | 久草新在线 | 影音先锋男 | 精品国产一区二区三区观看不卡 | 99爱在线视频 | 国产一区日韩在线 | 伊人国产精品 | 精品在线观看一区二区 | 亚洲成人一区二区 | 中文字幕乱码视频32 | 日本成人三级电影 | 精品视频999 | 91大神在线看 | 欧美精品91爱爱 | 中文字幕乱码一区二区三区 | 久久久久久国模大尺度人体 | 亚洲激情网站 | 亚洲色欧美另类 |