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

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
WCF客戶端處理詳細(xì)步驟解析

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

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括江海網(wǎng)站建設(shè)、江海網(wǎng)站制作、江海網(wǎng)頁(yè)制作以及江海網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,江海網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到江海省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

WCF,在客戶端自動(dòng)生成的實(shí)例中 是從ClientBase.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要對(duì) basicHttpBinding所有的綁定元素進(jìn)行遍歷。默認(rèn)情況下,不啟用https,則傳輸元素使用HttpTransportBindingElement,該對(duì)象重寫B(tài)uildChannelFactory,返回值是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這個(gè)方法很有意思,默認(rèn)的實(shí)現(xiàn)是通用BindingContext。將當(dāng)前Binding對(duì)象中的所有元素(BindingElementCollection對(duì)象的實(shí)例),one by one 的進(jìn)行遍歷,每次移走一個(gè),取出,然后再次調(diào)用BuildChannelFactory

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

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

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

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

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


網(wǎng)站標(biāo)題:WCF客戶端處理詳細(xì)步驟解析
分享網(wǎng)址:http://www.dlmjj.cn/article/cccppco.html