|
前一篇:WCF客戶端運(yùn)行時架構(gòu)體系詳解[上篇]
當(dāng)基于某個終結(jié)點(diǎn)創(chuàng)建的ChannelFactory<TChannel>被開啟的之后,位于服務(wù)模型層的客戶端運(yùn)行時框架被成功構(gòu)建。站在編程的角度看ChannelFactory<TChannel>,它就是一個創(chuàng)建用于服務(wù)調(diào)用的服務(wù)代理對象的工廠。由于服務(wù)調(diào)用需要借助于服務(wù)代理來完成,我們很有必要從整個客戶端運(yùn)行架構(gòu)層面來了解服務(wù)代理和基于服務(wù)代理的服務(wù)調(diào)用是如何實(shí)現(xiàn)的。
目錄
一、服務(wù)代理是一個透明代理
二、服務(wù)調(diào)用的流程
操作選擇
輸入?yún)?shù)檢驗(yàn)
序列化請求消息
請求消息的發(fā)送和回復(fù)消息的接收
回復(fù)消息的檢驗(yàn)
反序列化回復(fù)消息
檢驗(yàn)返回值(或者ref/out參數(shù))
一、服務(wù)代理是一個透明代理
如果你閱讀了《WCF技術(shù)剖析(卷1)》第8章《客戶端(Client)》,你應(yīng)該知道通過ChannelFactory<TChannel>創(chuàng)建的服務(wù)代理對象是一個“透明代理(Transparent Proxy)”對象。而這可以通過調(diào)用RemotingServices的靜態(tài)方法IsTransparentProxy來檢驗(yàn)。為此我寫了如下一段簡單的檢驗(yàn)程序,而輸出的結(jié)果證實(shí)了“服務(wù)代理是透明代理”的結(jié)論。
using (ChannelFactory<ICalculate> channelFactory = new ChannelFactory<ICalculate>("calculateservice")){
ICalculate calculator = channelFactory.CreateChannel();
bool isTransparentProxy = RemotingServices.IsTransparentProxy(calculator);
Console.WriteLine("Service porxy is a transparent proxy? {0}.", isTransparentProxy ?"Yes" : "No");
}
NET技術(shù):WCF客戶端運(yùn)行時架構(gòu)體系詳解[下篇],轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。