WCF系列学习笔记4之绑定详解
?
標準綁定
綁定的基本概念:通道模型具有極大的靈活性,可以在協議通道,編碼器,傳輸通道等各個方面進行設置,每次都需要設置一個完整的通道棧是一個較為復雜的事情,從傳輸協議上看,有HTTP,TCP,UDP,P2P,IPC和MSMQ等多種方案,從編碼器上,有二進制編碼,MTOM等編碼方法,在加上消息的安全策略,會話設置的組合會有很多。綁定是一個定制好的通道棧,包含協議通道,傳輸通道和編碼器,從功能上看,一個綁定集成了通信模式,可靠性,安全性,事務傳播和互操作性等設置,標準綁定一共有十二種,下面將一一介紹。
標準綁定:
| 綁定名稱 | 簡要介紹 | 網絡協議 | 可交互性 |
| basicHttpBinding | 基于WS-BasicProfile1.1 的WEB服務 | HTTP/HTTPS | 可交互 |
| wsHttpBinding | 針對改進的WEB服務的綁定,包括WS-Security,WS-Transaction | HTTP/HTTPS | 可交互 |
| wsDualHttpBinding | 提供雙工通信的HTTP綁定 | HTTP | 可交互 |
| WebHttpBinding | 支持REST/POX服務的綁定,使用XML/JSON序列化 | HTTP/HTTPS | 可交互 |
| netTcpBinding | 使用TCP傳輸協議在跨主機的局域網內使用,支持可靠性,事務,安全特性,特別優化支持WCF系統,使用它確保通信雙方都基于WCF構建,不符合SOA原則。 | TCP | 不可交互 |
| netNamedPipeBinding | 支持和NetTCpBinding相同的特性,由于使用命名管道進行通信,所以通信不同跨主機 | ICP | 不可交互 |
| netMsmqBinding | 使用微軟MSMQ協議進行異步脫機的消息交互, | MSMQ | 不可交互 |
| netPeerTcpBinding | 使用P2P在網絡中進行消息交互 | P2P | 不不可交互 |
| msmqIntegrationBinding | 支持WCF消息和MSMQ消息中進行轉換 | MSMQ | 可交互 |
| wsFederationHttpBinding | 支持使用了聯合安全機制的WEB服務 | HTTP/HTTPS | 可交互 |
| Ws2007HttpBinding | 支持2007 年設計的WS標準 | HTTP/HTTPS | 可交互 |
| Ws2007federationHttpBinding | 為支持2007年制定的ws標準 | HTTP/HTTPS | 可交互 |
?
出了功能之外,性能要求也是挑選綁定的重要參數,使用IPC的綁定性能要優于使用TCP的綁定,使用TCP 的綁定要由于HTTP。
?
系統部署在同一臺超級主機上,又便于統一管理和備份,WCF-WCF的交互可以分為下列幾種情況1)跨越主機進程交互,2)快越應用程序但在統一進程內交互,3)在統一應用程序域內交互。
IPC基本概念
IPC是一種通信方法,而非通信協議。全稱是進程間通信,在WIN32系統中,主要利用以下幾種方法實現:
1.使用剪貼板,剪貼板可以在進程之間共享,并且這種機制容易理解,使用也方便,缺點是使用非常頻繁,容易產生資源爭用,同時性能不高。
2. 使用匿名管道和命名管道,管道是進程用來通信的共享內存區域,一個進程相管道重寫入信息,而其他的進程可以從管道中讀出信息,管道是進程之間交流的通道,管道的類型有兩種, 匿名管道和命名管道,匿名管道是不命名的,他最初用于在本地系統中父進程與他啟動的子進程之間的通信,命名管道更高級,它有一個名字表示,以示客戶段和服務端應用程序可以通過它進行彼此通信,而且,WIN32 管道甚至可以在不同系統進程間使用。軟件是連接兩個進程并傳輸數據,一個管道一旦被建立,她就可以向文件一樣被訪問,并且可以使用許多與文件操作同樣的函數,可以使用CreateFile函數獲取一個以打開的管道句柄,或者由另一個進程提供一個句柄,使用WriteFile函數向管道寫入數據,之后這些數據可以被另外進程使用ReadFile函數讀取,管道是系統對象,因此管道句柄不需要時必須使用CloseHandler函數關閉,
3.匿名管道只能單向傳送數據,而命名管道可以實現雙向傳送數據,管道可以比特流形式傳送數據,命名管道可以將數據機和到成為消息的數據塊中,命名管道甚至具有通過網絡連接多個進程的能力。
4.使用郵件槽,廣播式通信,在Win32系統中提供的新方法,可以在不同的主機間交換數據,實現了網絡跨越.
5.使用TCP/IP他具備消息管道的所有功能,但遵守一套通信標準是的不同操作系統之上的應用程序可以互相通信,這種方式用于網絡方面比較好,用于本地進程間交互性能較差。
6. 使用COM/DCOM:通過COM系統代理存根方式進行進程間數據交換,但只能夠表現在對接口含糊調用時傳遞數據,通過DCOM可以在不同的主機間傳送數據。
7.使用內存影射文件:系統內核內存區域開辟一塊內存,然后每個進程把每個內存映射到自己可以訪問的虛內存地址中,對每個進程說,似乎在操作系統的格子的內存區域,而實際上所有的操作被映射到內存區域中。
?
跨主機的WCF-WCF交互的綁定的地址
當服務器部署在不同的服務器上,對于局域網內跨主機的WCF-WCF交互,采用TCP協議進行通信是較為合適的選擇,首先TCP是先面連接的通信協議,其次處于傳輸層,TCP一般被稱為是一種端對端的協議,當一臺計算機需要與另一臺計算機建立連接時,TCP協議會讓他們建立一個連接,發送和接收資料以及終止連接,傳輸控制協議TCP協議利用重發技術和擁塞控制機制,向應用程序提供可靠的通信連接,使他能夠自動適應網上的各種變化。IP協議之保證計算機能夠發送和接收分組資料,而TCP協議則可以提供一個可靠的,可流控制的,全雙工的信息傳輸服務。
?
TCP/IP 通過一個應用程序協議分配一個唯一的16位斷口號,從而使用斷口號來區分應用程序,例如HTTP通信現在已經統一為使用TCP端口80 ,SMTP使用TCP端口25,FTP 使用TCP端口20和21 ,其他使用TCP傳輸協議的應用程序可以按習慣活遵循標準選擇其他可用的斷口號,防火墻一般會配置阻塞TCP通信,部署使用非標準端口的應用程序進程會因為存在公司防火墻和個人防火墻而變得復雜甚至無法實現,通過已得到允許標準的端口進行通信的應用程序可以較少外部攻擊,TCP默認端口為80 ,在HTTP。SYS模型中,許多不同的HTTP應用程序的通信中將多路復用到單個TCP端口,此模型以及稱為Window平臺上的標準,這可以降低部署程序的成本。但是多個HTTP應用程序共享端口的能力早已成為Internet信息服務的一個功能,但是,只有在引入IIS6.0附帶的協議之后,此基礎結構才完全得到廣泛使用,實際上,Http.Sys允許任意進程共享專用于HTTP通信的TCP端口,此功能可以讓HTTP應用程序在統一物理計算機上共存于不同的進程中,同時共享80端口發送和接收所需要的網絡基礎結構。
使用netTcpBinding 是唯一能夠使用TCP協議的使用二進制編碼來提高性能。
?
WebService是一種網絡服務,通過通用的規范,WebService技術須臾使用者訪問網絡上每一個WebService提供的服務.Web服務的消息都是基于Soap協議進行的, 而Soap本身又處于Http/Https協議之上,所以Soap協議可以輕松地穿越防火墻,而同時借助XML的跨平臺特性, Soap協議和具體的實現平臺完全無關,Soap協議是簡單對象訪問協議的縮寫,它致以與提供一個簡單,輕量的用于在分散或分布環境中交換結構化和類型信息的機制,它致規范對消訪問的方式,而不限制具體實現的技術環境,這意味著Soap協議是一種跨技術平臺的協議,它一般由四部分組成:Soap信封,Soap編碼規則,Soap RPc,Soap 綁定。
BasicHttpBinding綁定支持WS-I Basic Web服務,其內容包括SOAP1.1,WSDL1.1和消息安全協議,它提供了和其他系統的兼容性,但是它卻不支持改進的Web服務協議。
與改進的WEB服務進行交互和綁定和地址
與基本的Web服務相比,改進的Web服務添加安全,身份驗證,加密,事務控制,可靠傳輸等,使得Web的功能更加強大,在改進Web服務的交互場景中,綁定和地址都是選擇的重點。
改進Web服務協的概述
改進Web服務協議并沒有顛覆基本的Web服務,而是在其基本上添加了一系列的WS*協議,來支持功能更加豐富的SOAP消息交互,所以從實現上來說,改進Web服務能夠有效地兼容Web服務,
1.?????????????Web-Secirity安全協議:他的定制是使用應用程序構建安全的SOAP消息交互,他很靈活,他被設計用來構成多種安全模型,他為多安全令牌,多信任域,多簽名格式和多加密技術提供支持,他通過利用現有標準和規范來實現安全性,這樣就不必在WS-Security中定義一個完整的安全性解決方案,從身份驗證的角度來說:提供了三種方式:1)用戶名/密碼,2)通過X.509證書的PKI,3)KerBerors方式。
2.?????????????WS-Atomic事務流:在普通的SOAP消息交互中加入事務處理的能力,改進WEB服務協議中定義了WS-Atomic事務流協議,該協議建立在WS-Coordination協議之上,而WS-Coordination定義了激活,注冊服務,事務流協議主要包括兩個事物協議:1)完成協議(completion),完成協議被用來啟動提交/會滾流程,基于注冊協議的每一個事物參數者,事物協調者會先處理易失的兩端提交,在處理持久性的兩端提交,結果最終被發送到事物發起者。2)兩端提交協議,特別針對分布式事務提交的,分為兩個類型,分別為易失兩端提交協議和持久兩端提交協議,接受到提交通知后,協調者開始所有注冊了易失兩端提交協議的參與者的提交準備,所有參與者都必須及時給出回復,在所有易失兩端提交協議參與者的提交準備結束后,協調者將開始所有注冊了持久兩端提交協議的提交準備。
3.?????????????WS-ReliableMessaging協議:他指定的目的是保證消息的可靠傳輸,這里的可靠傳輸精確含義是:1)最多一次,如果沒有發生任何錯誤,那一條消息最多只會被發送一次,2)最少一次:每一條消息必須最少發送一次。3)有序,所有消息必須被有序地發送。
?
使用脫機模式進行消息交互和綁定和地址
在某些場景下,消息交互的一方無法確定另一方是否可訪問,而在大多數交互方式中,如果交互一方出于脫機狀態,交互失敗,脫機模式是指雙方無需同時在線的一種交互模式, 脫機模式交互在WCF中使用MSMQ來實現。
MSMQ是在多個不同的應用程序之間實現相互通信的一種異步傳輸模式,相互通信的應用程序可以分布在相連網絡中的任意位置,他的實現原理是消息的發送者把自己想要發送的信息放入一個容器,然或把它保存在一個系統共用的消息隊列中,本地或者是異步消息接受程序在從該隊列中讀取信息。在消息傳遞機制中,用兩個比較重要的概念,一個是消息,一個是隊列,消息是通信的雙方所需要的傳輸的信息,它可以是各式各樣的媒體,消息最終的理解方式,為iaoxichuandi的雙方實現商定,這樣的好廚師,對數據進行了簡單的加密,而此采用自己定義的格式可以節省通信的傳遞量,消息可以含有發送和接收者的標示,只有指定的用戶能夠看到消息,消息也可以由時間戳,表明制定時間內未到達作廢,消息隊列是發送和接收消息的公共消息存儲體,可以存在內存或無力文件中,消息可以又兩種發送方式,快地方式和可恢復模式,快地方式為了消息的快速傳遞,把消息放在內存中,而可恢復方式擇放在物理磁盤上,消息隊列可以放置在發送方,接受方所在的機器山個,也可以放在其它位置,MSMQ可以創建以下幾種隊列:1)公共隊列,2)專用隊列,3),管理隊列,4)響應隊列,系統本身的隊列有:1)日記隊列,2)死信隊列,3)報告隊列,4)專用系統隊列.
轉載于:https://www.cnblogs.com/shareExperience/archive/2010/05/29/1746914.html
總結
以上是生活随笔為你收集整理的WCF系列学习笔记4之绑定详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dom复制cloneNode节点与插入节
- 下一篇: AVB Digest转换成ASCII码