偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

WCF通道形狀相關(guān)內(nèi)容深度剖析

開發(fā) 開發(fā)工具
WCF通道形狀作為一種對通道進(jìn)行分類的重要依據(jù)之一,對我們的實際應(yīng)用起到了非常重要的作用。在這里我們將會針對這一內(nèi)容做一個詳細(xì)介紹。

WCF開發(fā)插件的應(yīng)用在一定程度上大大提高了開發(fā)人員的開發(fā)效率,尤其是在通信方面的操作,提供了一個簡單的操作方法。在這里我們將會針對WCF通道形狀的相關(guān)內(nèi)容,為大家詳細(xì)講解這方面的知識。#t#

WCF通道形狀是我們對通道進(jìn)行分類的重要依據(jù)之一。概念上,一個通道形狀對應(yīng)于一個或多個消息交換模式(MEPs)。為了說明問題,考慮一下發(fā)送者和接收者使用請求/應(yīng)答模式來交換消息的情況。在請求/應(yīng)答模式里,發(fā)送者發(fā)送消息給接收者,接收者回復(fù)消息給發(fā)送者,請求消息和應(yīng)答消息之間的關(guān)系是固定的。因為通道是發(fā)送者和接收者交換消息的物理途徑,發(fā)送者和接收者必須建立它們自己的通道。當(dāng)發(fā)送者和接收者通過請求/應(yīng)答模式來交換消息的時候,發(fā)送者和接收者必須理解請求/應(yīng)答模式的規(guī)則。在結(jié)構(gòu)上來說,這意味著發(fā)送者上的通道要定義發(fā)送消息和接收消息的成員。此外,發(fā)送者和接收者需要定義關(guān)聯(lián)請求消息和應(yīng)答消息的成員。

咋一看,發(fā)送者和接收者有著相同的角色。例如,發(fā)送者和接收者都可以發(fā)送和接收消息。邏輯上的區(qū)別就是發(fā)送和接收消息過程中的順序不同。這意味著發(fā)送者和接收者上的通道會略有不同。這些不同點體現(xiàn)在發(fā)送者和接收者通道里定義的成員上。WCF通道形狀是我們命名和劃分這些不同點的方式。因為.NET接口是鑒別.NET類型成員的天然方式,所以它們也是區(qū)別通道形狀的最佳方式。

WCF類型系統(tǒng)定義了幾個描述不同WCF通道形狀的接口,這些接口與消息交換模式一一對應(yīng)。消息交換模式(MEP)、發(fā)送者和接受之間的對應(yīng)關(guān)系。這些接口都定義在System.ServiceModel.Channels命名空間下。

 

實際上,消息程序需要把多個消息關(guān)聯(lián)到一起。例如,一個交易系統(tǒng)(發(fā)送者)也許要發(fā)送關(guān)于一個交易訂單或者產(chǎn)品的多個消息到財務(wù)系統(tǒng)(接收者)。這個關(guān)聯(lián)的邏輯邊界就是會話(session)。當(dāng)?shù)谝淮慰紤]這些會話的時候,很容易理解為接收者會根據(jù)發(fā)送者來關(guān)聯(lián)這些消息。這樣一來,很自然地就會猜想,同時處理5個發(fā)送者請求的接收者將會把消息關(guān)聯(lián)到一個特定的發(fā)送者上,正像ASP.NET程序處理來自于多個瀏覽器的請求消息一樣。在WCF應(yīng)用程序里,這些耦合過于緊密以至于不能滿足過多的消息需求。例如,一個交易系統(tǒng)(發(fā)送者)或許發(fā)送多個訂單有關(guān)的消息,財務(wù)系統(tǒng)(接收者)也許要根據(jù)需訂單實例而不是交易系統(tǒng)(發(fā)送者)來關(guān)聯(lián)這些消息。

WCF會話是一個通道級別的構(gòu)造。因為這個概念也就是為了關(guān)聯(lián)消息,每個通道都自己關(guān)聯(lián)消息的方式。例如,TCP/IP通道能夠根據(jù)接收消息的socket來關(guān)聯(lián)同一個會話里的消息。與之相對的是,實現(xiàn)了WS-ReliableMessaging規(guī)范的通道,可以在消息頭里使用ID屬性來關(guān)聯(lián)同一個會話里的消息,所以,這也就不需要依賴具體的socket或者傳輸結(jié)構(gòu)了,就可以實現(xiàn)同一個會話里消息的關(guān)聯(lián)。

所有支持會話的通道的一個共同特性就是它們可以擁有自己的標(biāo)識符,WCF基礎(chǔ)結(jié)構(gòu)里的不同模塊都可以使用這個標(biāo)識符來關(guān)聯(lián)消息。概念上看,通道需要實現(xiàn)System.ServiceModel.Channels.ISessionChannel<T>接口來會支持會話。ISessionChannel<T>的泛型參數(shù)必須實現(xiàn)System.ServiceModel.Channels.ISession接口。下面代碼展示了這些接口里的成員:

 

  1. public interface ISession {  
  2. String Id { get; }  
  3. }  
  4. public interface ISessionChannel<T> where T: ISession {  
  5. T Session { get; }  

 

如代碼所示,接口暴露了一個名為Id的成員,這個成員表示一個會話標(biāo)識符。在WCF里,實現(xiàn)了ISessionChannel<T>接口的通道類型被稱為會話通道。為了連貫性考慮,WCF里把會話作為通道形狀的一個變量考慮。換句話說,IDuplexChannel接口包含一個名為IDuplexSessionChannel的變量。從WCF通道形狀的角度來看,IDuplexSessionChannel與IDuplexChannel的通道形狀不同,盡管它們都能夠?qū)崿F(xiàn)雙工通信。兩者真正的區(qū)別在于IDuplexSessionChannel實現(xiàn)了ISessionChannel<T>接口。表6-3列舉了WCF類型系統(tǒng)里的會話通道形狀.

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

2010-02-25 17:57:26

WCF服務(wù)合同

2010-02-26 09:50:57

WCF傳輸安全機(jī)制

2010-03-02 18:01:07

WCF自定義消息篩選器

2010-01-27 16:56:42

Android內(nèi)核

2010-01-28 16:19:39

Android She

2010-06-17 16:12:43

WAP協(xié)議

2010-02-01 09:18:49

C++函數(shù)指針

2010-07-20 13:07:13

SQL Server存

2010-01-28 16:30:16

Android數(shù)據(jù)傳遞

2010-01-22 18:24:28

VB.NET重構(gòu)

2009-08-28 15:16:18

C#泛型集合

2010-01-07 14:26:37

VB.NET變量

2010-06-08 17:30:56

IPv6協(xié)議棧

2010-01-07 11:38:25

VB.NET鍵盤事件

2010-04-02 16:53:34

Oracle內(nèi)存結(jié)構(gòu)

2010-02-03 15:40:11

C++地址運算符

2010-03-25 11:30:25

2010-01-13 16:15:47

VB.NET消息隊列

2010-04-08 10:02:15

Oracle體系結(jié)構(gòu)

2009-11-26 14:33:58

Cisco路由器IOS
點贊
收藏

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