WCF 初识(一)
WCF的前世今生
在.NETFramework 2.0以及前版本中,微軟發(fā)展了Web Service(SOAP with HTTP communication),.NET Remoting(TCP/HTTP/Pipeline communication)以及基礎(chǔ)的Winsock等通信支持。
?
由于各個(gè)通信方法的設(shè)計(jì)方法不同,而且彼此之間也有相互的重疊性(例如.NET Remoting可以開(kāi)發(fā)SOAP, HTTP通信),對(duì)于開(kāi)發(fā)人員來(lái)說(shuō),不同的選擇會(huì)有不同的程序設(shè)計(jì)模型,而且必須要重新學(xué)習(xí),讓開(kāi)發(fā)人員在用戶有許多不便。
同時(shí),服務(wù)導(dǎo)向架構(gòu)(Service-Oriented Architecture)也開(kāi)始盛行于軟件工業(yè)中,因此微軟重新查看了這些通信方法,并設(shè)計(jì)了一個(gè)統(tǒng)一的程序開(kāi)發(fā)模型,對(duì)于數(shù)據(jù)通信提供了最基本最有彈性的支持,這就WCF( Windows Communication Foundation)。
?
WCF是Microsoft為構(gòu)建面向服務(wù)的應(yīng)用提供的分布式通信編程框架,由.NET Framework 3.0開(kāi)始引入,是.NET Framework 3.5的重要組成部分。根據(jù)微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運(yùn)行面向服務(wù)(Service Oriented)應(yīng)用程序的統(tǒng)一框架。它使得開(kāi)發(fā)者能夠建立一個(gè)跨平臺(tái)的安全、可信賴、事務(wù)性的企業(yè)級(jí)互聯(lián)應(yīng)用解決方案,且能與已有系統(tǒng)兼容協(xié)作。
?
WCF是微軟分布式應(yīng)用程序開(kāi)發(fā)的集大成者,它整合了.Net平臺(tái)下所有的和分布式系統(tǒng)有關(guān)的技術(shù),如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息隊(duì)列。以通信(Communiation)范圍而論,它可以跨進(jìn)程、跨機(jī)器、跨子網(wǎng)、企業(yè)網(wǎng)乃至于?Internet;
以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。
WCF可以支持的協(xié)議包括TCP,HTTP,跨進(jìn)程以及自定義,安全模式則包括SAML,?Kerberos,X509,用戶/密碼,自定義等多種標(biāo)準(zhǔn)與模式。也就是說(shuō),在WCF框架下,開(kāi)發(fā)基于SOA的分布式系統(tǒng)變得容易了,微軟將所有與此相關(guān)的技術(shù)要素都包含在內(nèi),掌握了WCF,就相當(dāng)于掌握了叩開(kāi)SOA大門(mén)的鑰匙。
?
WCF的優(yōu)勢(shì)
- l? 統(tǒng)一性
WCF涵蓋了之前微軟推出的所有用于分布式開(kāi)發(fā)的技術(shù),包括Remoting、Web Services、WSE、MSMQ等,并以一種統(tǒng)一的編程模式來(lái)實(shí)現(xiàn)。
- l? 互操作性
WCF最基本的通信機(jī)制是SOAP(Simple Object Access Protocol 簡(jiǎn)易對(duì)象訪問(wèn)協(xié)議),這就保證了系統(tǒng)之間的互操作性,也能夠?qū)崿F(xiàn).NET客戶端與.NET服務(wù)端的通信,提供了分布式事務(wù)的支持。
- l? 安全性和可靠性
WCF在安全性上,它完全遵循了WS-*的標(biāo)準(zhǔn),在SOAP 的header中增加了WS-ReliableMessaging允許可信賴的端對(duì)端通信。而建立在WS-Coordination和WS- AtomicTransaction之上的基于SOAP格式交換的信息,則支持兩階段的事務(wù)提交(two-phase commit transactions)。
- l? 兼容性
WCF充分的考慮到了與舊有系統(tǒng)的兼容性。安裝WCF并不會(huì)影響原有的技術(shù)如ASMX和.Net Remoting。即使對(duì)于WCF和ASMX而言,雖然兩者都使用了SOAP,但基于WCF開(kāi)發(fā)的應(yīng)用程序,仍然可以直接與ASMX進(jìn)行交互。
?
WCF與其他分布式技術(shù)對(duì)比表
| 特性 | Web Service | .NET Remoting | Enterprise Services | WSE | MSMQ | WCF |
| 具有互操作性的Web服務(wù)(跨平臺(tái)) | 支持 | ? | ? | ? | ? | 支持 |
| .NET到.NET的通信 | ? | 支持 | ? | ? | ? | 支持 |
| 分布式事務(wù) | ? | ? | 支持 | ? | ? | 支持 |
| 支持WS標(biāo)準(zhǔn)(安全可靠性) | ? | ? | ? | 支持 | ? | 支持 |
| 消息隊(duì)列 | ? | ? | ? | ? | 支持 | 支持 |
?
WCF的體系結(jié)構(gòu)
?
WCF主要構(gòu)成
?
?
Endpoint
Endpoint是WCF實(shí)現(xiàn)通信的核心要素。一個(gè)WCF Service由一個(gè)Endpoint集合組成,每個(gè)Endpoint就是用于通信的入口,客戶端和服務(wù)端通過(guò)Endpoint交換信息。
Endpoint由三部分組成:Address,Binding,Contract。便于記憶,我們往往將這三部分稱為是WCF的ABC。
Address
Address通過(guò)一個(gè)URI唯一地標(biāo)識(shí)一個(gè)Endpoint,并告訴潛在的WCF service的調(diào)用者如何找到這個(gè)Endpoint。
Binding
Binding實(shí)現(xiàn)在Client和Service通信的所有底層細(xì)節(jié)。比如Client與Service之間傳遞的Message是如何編碼的—— text/XML, binary,MTOM;這種Message的傳遞是采用的哪種Transport——TCP, Http, Named Pipe, MSMQ; 以及采用怎樣的機(jī)制解決Secure Messaging的問(wèn)題——SSL,Message Level Security。
Contract
Contract的主要的作用是定義通信協(xié)議,具體Service提供了哪些方法。
Behavior
Behavior: Behavior的主要作用是定制Endpoint在運(yùn)行時(shí)的一些必要的Behavior。比如Service回調(diào)Client的Timeout;Client采用的Credential type;以及是否支持Transaction等。
WCF構(gòu)建流程
(1)、定義服務(wù)協(xié)定。 服務(wù)協(xié)定指定服務(wù)的簽名、服務(wù)交換的數(shù)據(jù)和其他協(xié)定要求的數(shù)據(jù)
(2)、實(shí)現(xiàn)協(xié)定。 若要實(shí)現(xiàn)服務(wù)協(xié)定,請(qǐng)創(chuàng)建實(shí)現(xiàn)協(xié)定的類并指定運(yùn)行時(shí)應(yīng)具有的自定義行為。
(3)、通過(guò)指定終結(jié)點(diǎn)和其他行為信息來(lái)配置服務(wù)
(4)、承載服務(wù)
(5)、生成客戶端應(yīng)用程序。
?
引用鏈接:
1,WCF系列學(xué)習(xí)5天速成?http://www.cnblogs.com/huangxincheng/category/340145.html
2,WCF入門(mén)學(xué)習(xí)【Sheldon_Lou】http://www.cnblogs.com/sheldon-lou/category/648478.html
3,無(wú)廢話WCF系列教程?http://www.cnblogs.com/iamlilinfeng/category/415833.html
4,WCF編程?http://www.cnblogs.com/zxj159/category/604460.html
5,WCF入門(mén)【停留的風(fēng)】http://www.cnblogs.com/yank/category/568085.html
6,WCF初探【wangweimutou】http://www.cnblogs.com/wangweimutou/tag/WCF/
7,WCF【指尖流淌】http://www.cnblogs.com/zhijianliutang/category/277163.html
8,WCF【xfrog】---重點(diǎn)?http://www.cnblogs.com/xfrog/tag/WCF/
轉(zhuǎn)載于:https://www.cnblogs.com/birdwawe/p/4583003.html
總結(jié)
- 上一篇: 工作日志WebRoot--编辑页关于处理
- 下一篇: 处理大数据