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

WCF客戶端處理詳細(xì)步驟解析

開發(fā) 開發(fā)工具
WCF客戶端處理的步驟主要可以分為五步,我們需要弄清楚每個(gè)步驟的基本意義,抓住重要的連接點(diǎn),從總體上去掌握WCF客戶端處理流程。

WCF框架的的功能比較強(qiáng)大,對(duì)于開發(fā)人員來說,是一款非常有用的開發(fā)框架。可以幫助我們實(shí)現(xiàn)跨平臺(tái)的高可靠性的解決方案。在這里就先了解一下WCF客戶端處理的一些相關(guān)步驟。#t#

WCF,在客戶端自動(dòng)生成的實(shí)例中 是從ClientBase<of T>.Channel屬性開始的,最終要?jiǎng)?chuàng)建T的透明代理,然后調(diào)用。
以BasicHttpBinding為例,WCF客戶端處理的主要步驟如下:

1 根據(jù)傳入的Binding和EndpointAddress生成ServiceEndpoint

2 再根據(jù)ServiceEndpoint的類型生成ServiceChannelFactory 類的實(shí)例 ,當(dāng)前BasicHttpBinding 生成的應(yīng)該是ServiceChannelFactoryOverRequest類的實(shí)例, 對(duì)應(yīng)的IChannelBinder是RequestChannelBinder 。

注:
basicHttpBinding.BuildChannelFactory<IRequestChannel>要對(duì) basicHttpBinding所有的綁定元素進(jìn)行遍歷。默認(rèn)情況下,不啟用https,則傳輸元素使用HttpTransportBindingElement,該對(duì)象重寫B(tài)uildChannelFactory<IRequestChannel>,返回值是HttpChannelFactory 。

RequestChannelBinder對(duì)象最重要的字段是channel,對(duì)應(yīng)的值是HttpChannelFactory.CreateChannel(),返回的值是HttpChannelFactory.HttpRequestChannel 。

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


4. 生成T的透理代理ServiceChannelProxy,將ServiceChannel做為參數(shù)傳入ServiceChannelProxy,構(gòu)造。

5.在調(diào)用透明代理相應(yīng)的方法時(shí),調(diào)用ServiceChannelProxy.Invoke(), 如果是Service,調(diào)用ServiceChannel.Call(),此時(shí)實(shí)質(zhì)是調(diào)用ServiceChannel封裝的IChannelBinder(當(dāng)前是RequestChannelBinder)的call。

6 調(diào)用RequestChannelBinder.Request(),注意步驟2***一句,此時(shí)channel是HttpChannelFactory.HttpRequestChannel
HttpChannelFactory.HttpRequestChannel創(chuàng)建 HttpChannelRequest的請(qǐng)求,然后調(diào)用HttpChannelRequest.SendRequest發(fā)送消息 ,其實(shí)質(zhì)就是封裝一個(gè)HttpWebRequest,將Message發(fā)送到服務(wù)器端address里,根,webservice的最終原理是一樣的。

因此,要抓住幾個(gè)關(guān)系點(diǎn),從總體上把握WCF客戶端處理的流程

(1 ServiceChannelFactory 類的實(shí)例是什么類型

(2 IChannelBinder接口的實(shí)現(xiàn)是什么類型

(3 IChannelBinder.Channel是什么

BindingElement.BuildChannelFactory<TChannel>這個(gè)方法很有意思,默認(rèn)的實(shí)現(xiàn)是通用BindingContext。將當(dāng)前Binding對(duì)象中的所有元素(BindingElementCollection對(duì)象的實(shí)例),one by one 的進(jìn)行遍歷,每次移走一個(gè),取出,然后再次調(diào)用BuildChannelFactory<TChannel>

協(xié)議通道元素 (安全)
BasicHttpSecurity security;
配置 basicHttpBinding 綁定的安全設(shè)置。

消息編碼綁定元素
MtomMessageEncodingBindingElement mtomEncoding;
指定消息傳輸優(yōu)化機(jī)制 (MTOM) 消息所使用的編碼和版本管理的綁定元素。
TextMessageEncodingBindingElement textEncoding;
指定用于基于文本的 SOAP 消息的字符編碼與消息版本管理。

此時(shí),BindingElementCollection中有以上元素,先從集合中移出一個(gè),
調(diào)用一次BuildChannelFactory<TChannel>
HttpTransportBindingElement httpTransport 重寫了BuildChannelFactory<TChannel> 返回 HttpChannelFactory
其它的綁定元素基本上調(diào)BindingElement的,是直接跳到下一個(gè)。

所以, BasicHttpBinding.BuildChannelFactory<IRequestChannel>()返回的是HttpChannelFactory 。

以上就是WCF客戶端處理全部步驟介紹。

責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-25 16:20:02

WCF客戶端

2010-02-24 16:39:27

WCF客戶端處理

2010-02-23 15:12:25

WCF客戶端

2015-06-03 09:27:05

JavaScript客戶端檢測(cè)技術(shù)

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

2010-09-29 15:05:44

DHCP客戶端故障

2009-11-09 15:49:01

WCF異步調(diào)用

2010-02-22 11:10:17

WCF獲取客戶端IP

2009-11-05 13:08:44

WCF客戶端配置

2009-12-21 15:53:56

WCF獲取客戶端IP

2010-02-23 09:58:21

WCF客戶端驗(yàn)證

2011-09-09 09:44:23

WCF

2010-07-06 15:21:25

UDP客戶端

2009-12-21 10:19:05

Silverlight

2010-02-24 16:17:09

WCF獲取客戶端IP

2009-12-21 10:09:26

WCF創(chuàng)建客戶端服務(wù)對(duì)

2009-12-02 14:37:17

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美一级三级在线观看 | 国产精品成人一区二区三区 | 国产在线一区二区三区 | 毛片网站在线观看 | 国内精品视频在线观看 | 中文字幕日韩欧美 | 欧美中文字幕一区二区三区亚洲 | 久久r精品| 久久国产视频一区 | 2019天天干夜夜操 | 国产精品电影在线观看 | 欧美一级片在线观看 | av大片| 日韩无 | 日日操夜夜操天天操 | 亚洲一区精品在线 | 久久精品中文 | 国产成人免费在线观看 | 二区三区在线观看 | 亚洲一区二区精品视频 | 亚洲欧洲成人在线 | 麻豆精品国产免费 | 久久黄色网 | 成人精品一区二区 | 中文字幕亚洲欧美日韩在线不卡 | 人妖av| 蜜桃精品视频在线 | 欧美三级不卡 | 国产精品自产av一区二区三区 | 91国内外精品自在线播放 | 国产精品久久一区二区三区 | 久久久久久久久国产 | 国产成人免费视频网站视频社区 | 91综合网| 亚洲国产精品视频一区 | 99久久精品一区二区成人 | 爱爱视频在线观看 | 丁香五月网久久综合 | av网站在线播放 | 国产夜恋视频在线观看 | 久久99视频精品 |