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

WCF客戶端處理詳細步驟解析

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

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

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

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的最終原理是一樣的。

因此,要抓住幾個關系點,從總體上把握WCF客戶端處理的流程

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

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

(3 IChannelBinder.Channel是什么

BindingElement.BuildChannelFactory<TChannel>這個方法很有意思,默認的實現是通用BindingContext。將當前Binding對象中的所有元素(BindingElementCollection對象的實例),one by one 的進行遍歷,每次移走一個,取出,然后再次調用BuildChannelFactory<TChannel>

協議通道元素 (安全)
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客戶端

2010-02-23 15:12:25

WCF客戶端

2010-02-24 16:39:27

WCF客戶端處理

2015-06-03 09:27:05

JavaScript客戶端檢測技術

2009-11-05 13:00:25

WCF客戶端

2009-12-07 18:26:36

WCF客戶端

2009-12-22 18:18:11

WCF客戶端編程

2010-09-29 15:05:44

DHCP客戶端故障

2009-12-08 16:47:06

WCF IP

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-09-09 09:44:23

WCF

2010-02-23 09:58:21

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創建客戶端服務對

2009-12-02 14:37:17

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品在线看| 五月激情婷婷六月 | 午夜成人在线视频 | 一区二区三区不卡视频 | 日日夜夜精品免费视频 | 蜜桃av人人夜夜澡人人爽 | 五月婷婷色 | 欧美在线观看一区 | 日本一区二区三区在线观看 | 国产精品日韩欧美一区二区 | 伊人久久综合 | 久久精品一级 | 亚洲综合视频 | 日本一卡精品视频免费 | 精品国产18久久久久久二百 | 国产午夜精品一区二区三区四区 | 天天干人人 | a级片在线观看 | 久久久久久久综合色一本 | 免费国产一区二区视频 | 国产精品久久久久久婷婷天堂 | 国精久久 | 中文字幕精品一区久久久久 | 亚洲精品一区二区三区在线 | 精品一区二区三区四区五区 | 亚洲第一区久久 | 在线第一页 | 香蕉国产在线视频 | 一级特黄a大片 | 毛片一区 | 欧美日韩一区二区三区四区 | 亚洲瑟瑟| 久久久精品视频免费 | 天堂网中文字幕在线观看 | eeuss国产一区二区三区四区 | 亚洲精品国产成人 | 色综合视频 | 国产一区视频在线 | 黄视频网址 | 欧美日一区二区 | 中文字幕高清在线 |