簡(jiǎn)單WCF應(yīng)用原理分析
WCF應(yīng)用還是很廣泛的,我們?cè)诓恢挥X(jué)中就會(huì)用到這門技術(shù),現(xiàn)在我們就它的一些性能分析一下吧。WCF設(shè)計(jì)出來(lái)完全是為了與其他系統(tǒng)的交互。這包括可以運(yùn)行在其他操作系統(tǒng)和平臺(tái)上的應(yīng)用。因?yàn)閃CF專注在消息本性使得這個(gè)成為可能。
創(chuàng)新的是,建立在WCF之上的應(yīng)用可以通過(guò)TCP, HTTP, Named Pipes, 和MSMQ與其他支持WS-*、Basic Profile (BP)、XML消息的應(yīng)用。開發(fā)者可以自由編寫擴(kuò)展WCF功能的組件,這包括編寫定制擴(kuò)展功能,允許WCF與那些需要使用二進(jìn)制消息編碼的系統(tǒng)通信(像大型機(jī)應(yīng)用系統(tǒng))。
#T#傳統(tǒng)上,與其他平臺(tái)(像java)的交互需求已經(jīng)很大程度上規(guī)定了我們的應(yīng)用系統(tǒng)設(shè)計(jì)。過(guò)去,如果我們想與另外的平臺(tái)通信,我們要么使用ASMX要么編寫自己的交互層。WCF就不同。從交互的角度來(lái)看,WCF是個(gè)單一的技術(shù),它能夠可以與早期的幾種不同的技術(shù)交互。WCF 通過(guò)兼容WS-*、支持Rest架構(gòu)和POX消息風(fēng)格兌現(xiàn)了真正的互操作的承諾。
性能
分布式應(yīng)用一般都會(huì)有性能成本;這個(gè)成本一般會(huì)由這個(gè)技術(shù)的特性來(lái)低效。比如,對(duì)于2個(gè).NET Framework應(yīng)用來(lái)說(shuō),.NET Remoting是個(gè)相對(duì)高效的通信方式。但是他不能與非.NET Framework應(yīng)用交互。ASMX,換句話說(shuō),沒(méi)有Remoting那么高效,但它可以與非.NET Framework的應(yīng)用交互。從端對(duì)端的角度來(lái)說(shuō),MSMQ效率不高,但是隊(duì)列的特性可以彌補(bǔ)發(fā)送消息的應(yīng)用的效率問(wèn)題。換個(gè)方式,產(chǎn)生、發(fā)送、傳輸和接受一個(gè)MSMQ消息總時(shí)間成本是可以忽略不計(jì)的,但是MSMQ的持久性和可靠性讓發(fā)送消息的應(yīng)用可以保證程序不需要產(chǎn)生和發(fā)送消息,并且等待消息或者接受消息。在發(fā)送消息的應(yīng)用里,網(wǎng)絡(luò)影響是總體在吞吐量上總體增加。這個(gè)技術(shù)的缺點(diǎn)就是它不能與其它的消息隊(duì)列系統(tǒng)交互。(有一個(gè)方式連接MSMQ和IBM 的MQSeries)??傮w來(lái)看,分布式系統(tǒng)使用的分布式技術(shù)已經(jīng)影響到系統(tǒng)的性能。
相反地,WCF應(yīng)用可以提供不同層次的互操作習(xí)慣和性能。例如,與基于Java的Web服務(wù)通信相比,WCF應(yīng)用與其他WCF應(yīng)用通信的時(shí)候可以更高效。
擴(kuò)展性
公共語(yǔ)言運(yùn)行時(shí)(CLR)深藏奧妙。例如,JIT編譯器,驗(yàn)證子系統(tǒng)和垃圾收集器幾乎是***的。微軟已經(jīng)發(fā)布了部分關(guān)于這些子系統(tǒng)工作的信息。但是子系統(tǒng)不可以被第三方系統(tǒng)取代。例如,所有的.NET Framework程序都受到垃圾收集器的管理。我們可以而且應(yīng)該知道如何編寫代碼才能高效地利用垃圾收集器的特性。然而,沒(méi)有微軟之外的人可以寫出使用帶自己編寫的垃圾收集器的CLR的.NET Framework應(yīng)用程序。
相反地,WCF沒(méi)有什么神奇的。不要讓這個(gè)歪曲了你對(duì)這個(gè)平臺(tái)能力的認(rèn)識(shí)。與之相反,在大的標(biāo)準(zhǔn)衡量它的可擴(kuò)展的設(shè)計(jì),WCF都是異常強(qiáng)大和符合預(yù)期的。WCF被設(shè)計(jì)來(lái)與自定義的傳輸、通道、綁定、編碼和架構(gòu)模式一起工作。第4章,“WCF 101”描述許多WCF的擴(kuò)展點(diǎn)。
配置性
一個(gè)值得炫耀的WCF特性就是它可支持XML文件的完善的配置功能。使用這個(gè)特性,可以在XML文件里配置傳輸、地址、行為和綁定。如果配置文件更新,可以不需要修改任何代碼就可以改變 WCF應(yīng)用的行為。從管理的角度來(lái)看非常有吸引力,因?yàn)檫@可以讓非開發(fā)人員來(lái)移植、維護(hù)和修改應(yīng)用的行為而不需要卷入到開發(fā)工作中。合理的使用,會(huì)大大減少開發(fā)團(tuán)隊(duì)的壓力和工作負(fù)荷。如果濫用,會(huì)帶來(lái)無(wú)法預(yù)期的后果。