一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

WCF客戶端運(yùn)行時(shí)架構(gòu)體系詳解[上篇]

  客戶端調(diào)用WCF服務(wù)的方式不外乎有兩種:其一、通過代碼生成工具(比如SvcUtil.exe)導(dǎo)入服務(wù)的元數(shù)據(jù)生成服務(wù)代理相關(guān)的類型;其二、通過ChannelFactory<TChannel>創(chuàng)建服務(wù)代理對象。對于前者,生成的服務(wù)代理是一個(gè)繼承自ClientBase<TChannel>的類型。對于這樣一個(gè)服務(wù)代理對象,其內(nèi)部本質(zhì)上還是借助于ChannelFactory<TChannel>創(chuàng)建真正用于進(jìn)行服務(wù)調(diào)用的代理對象。對于WCF客戶端應(yīng)用編程接口來說,ChannelFactory<TChannel>是一個(gè)核心類型。

目錄
一、創(chuàng)建ChannelFactory<TChannel>
二、客戶端架構(gòu)體系
      信道初始化
      消息檢驗(yàn)
      操作和操作選擇
三、 客戶端操作(ClientOperation)

  一、創(chuàng)建ChannelFactory<TChannel>

  服務(wù)調(diào)用的本質(zhì)實(shí)際上是針對服務(wù)的某個(gè)終結(jié)點(diǎn)的調(diào)用,說得具體地應(yīng)該是:客戶端通過相匹配的終結(jié)點(diǎn)調(diào)用服務(wù)的終結(jié)點(diǎn)。終結(jié)點(diǎn)具有ABC(Address, Binding, Contract)三要素,這里所說的“相匹配”的終結(jié)點(diǎn)具體體現(xiàn)在這三要素的匹配上。而服務(wù)調(diào)用最終體現(xiàn)在消息交換上,接下來我們從消息交換的角度來談?wù)勂ヅ浣K結(jié)點(diǎn)在服務(wù)調(diào)用的必要性。

  • 地址(Address):地址作為調(diào)用服務(wù)的唯一標(biāo)識并代表了服務(wù)所在的位置,客戶端終結(jié)點(diǎn)必須具有一個(gè)正確的地址才能確保請求的消息被發(fā)送到正確的目的地;
  • 綁定(Binding):作為信道層的締造者,綁定最終創(chuàng)建了用于實(shí)現(xiàn)消息處理和傳輸?shù)男诺罈???蛻舳吮仨毦哂幸粋€(gè)與服務(wù)端一致的信道棧,才能確保消息的一致性處理。具體來說,客戶端必須具有與服務(wù)端一致的傳輸信道,才能確保消息能夠被正常地傳輸?shù)椒?wù)端。如果服務(wù)端具有采用一個(gè)基于HTTP協(xié)議的傳輸信道進(jìn)行請求的監(jiān)聽,客戶端就不能使用一個(gè)基于TCP的傳輸信道。服務(wù)端和客戶端必須具有一個(gè)相同的消息編碼信道才能確保被一方編碼的消息能夠被另一個(gè)解碼。如果服務(wù)端采用基于文本的消息編碼信道,客戶端采用的消息編碼信道就不能是基于二進(jìn)制的。此外,幾乎所有的WS-*規(guī)范在WCF的實(shí)現(xiàn)都是通過自定義信道來控制消息交換來完成的,所以這也要求客戶端和服務(wù)端必須具有對等的信道設(shè)置;
  • 契約(Contract):契約最終決定了基于某個(gè)操作的服務(wù)調(diào)用應(yīng)該采用的消息交換模式,以及參與消息交換的消息本身所具有的結(jié)構(gòu)。為了讓客戶端和服務(wù)端就此達(dá)成一致,必要要求雙方采用等效的契約。

  用于創(chuàng)建服務(wù)代理對象的ChannelFactory<TChannel>對象本身就是基于某個(gè)具體的客戶端終結(jié)點(diǎn)創(chuàng)建的。你可以通過編程的方式(構(gòu)造函數(shù))指定終結(jié)點(diǎn)的三要素,也可以將此三要素定義在配置文件中,通過終結(jié)點(diǎn)配置名稱(構(gòu)造函數(shù)的endpointConfigurationName參數(shù))來創(chuàng)建ChannelFactory<TChannel>。下面的代碼片斷給出了相關(guān)定義。

public abstract class ChannelFactory : CommunicationObject, IChannelFactory, ICommunicationObject, IDisposable
{
  public ServiceEndpoint Endpoint { get; }
}
public class ChannelFactory<TChannel> : ChannelFactory, IChannelFactory<TChannel>, IChannelFactory, ICommunicationObject
{
  //其他成員
  public ChannelFactory(string endpointConfigurationName);
  protected ChannelFactory(Type channelType);
  public ChannelFactory(Binding binding, EndpointAddress remoteAddress);
  public ChannelFactory(Binding binding, string remoteAddress);
  public ChannelFactory(string endpointConfigurationName, EndpointAddress remoteAddress);
}

NET技術(shù)WCF客戶端運(yùn)行時(shí)架構(gòu)體系詳解[上篇],轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产美女精品 | 色老板在线视频观看 | 国产精品中文字幕在线 | 色老板最新地址 | 亚洲日本中文字幕在线2022 | 99在线国产视频 | 亚洲日本网站 | 成人亚洲视频 | 亚洲精品国产精品国自产 | 色多多网站 | 狠狠色婷婷狠狠狠亚洲综合 | 狠狠亚洲婷婷综合色香五 | 日本道综合一本久久久88 | 91短视频在线高清hd | 国产极品精频在线观看 | 91热国内精品永久免费观看 | 性亚洲无删减 | 伊香蕉 | 久久首页 | 最新欧美精品一区二区三区 | 久久99精品久久久久久久不卡 | 国产乱色 | 国产精自产拍久久久久久蜜 | 免费在线色视频 | 欧美性v视频播放 | 青草碰人人澡人人澡 | 午夜国产高清精品一区免费 | 97影院理论午夜论不卡 | 欧美一级淫片a免费播放口aaa | 欧美人体极品大胆露私 | 欧美成人二区 | 婷婷久久综合 | 亚洲一区二区三区精品视频 | 亚洲第一区二区快射影院 | 亚洲精品午夜aaa级久久久久 | 国产成人99精品免费观看 | 欧美视频在线观看网站 | 亚洲一区免费在线 | 四虎永久网址在线观看 | 国产成人一区二区三区影院免费 | 日本久久精品 |