設(shè)計(jì)高性能的WCF解決方案_第1頁(yè)
設(shè)計(jì)高性能的WCF解決方案_第2頁(yè)
設(shè)計(jì)高性能的WCF解決方案_第3頁(yè)
設(shè)計(jì)高性能的WCF解決方案_第4頁(yè)
設(shè)計(jì)高性能的WCF解決方案_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

設(shè)計(jì)高性能的WCF解決方案第1頁(yè)/共40頁(yè)設(shè)計(jì)高性能的WCF解決方案MauroOttaviani資深軟件開(kāi)發(fā)主管微軟公司第2頁(yè)/共40頁(yè)日程回報(bào)傳輸層,序列化器,及編碼器客戶(hù)端的選項(xiàng)服務(wù)端的選項(xiàng)流傳輸通常的建議第3頁(yè)/共40頁(yè)一些比較與下列.NET技術(shù)具有可比性.NETRemotingSystem.EnterpriseServicesSystem.Messaging/en-us/library/bb310550.aspx速度比以下網(wǎng)絡(luò)服務(wù)更快ASMX(ASP.NET網(wǎng)絡(luò)服務(wù))WSE性能優(yōu)于其它同類(lèi)技術(shù)/en-us/netframework/bb499684.aspx第4頁(yè)/共40頁(yè).NETRemotingvsWCF第5頁(yè)/共40頁(yè)EnterpriseServicesvsWCF第6頁(yè)/共40頁(yè)ASMXvsWCF第7頁(yè)/共40頁(yè)WSEvsWCF第8頁(yè)/共40頁(yè)日程回報(bào)傳輸層,序列化器,及編碼器客戶(hù)端的選項(xiàng)服務(wù)端的選項(xiàng)流傳輸通常的建議第9頁(yè)/共40頁(yè)傳輸層基礎(chǔ)WCF默認(rèn)支持多種傳輸層TCP,HTTP,MSMQ,NamedPipes可以自定義其它傳輸層每一種傳輸層各有不同的考慮因素消息傳輸模式,可接受客戶(hù)端的多寡,互操作性,開(kāi)銷(xiāo)第10頁(yè)/共40頁(yè)傳輸層的比較第11頁(yè)/共40頁(yè)序列化器基礎(chǔ)消息類(lèi)型

==XMLInfoset序列化器是對(duì)象圖與Infosets之間的橋梁WCF自帶了三種序列化器DataContractSerializer(DCS)NetDataContractSerializer(NDCS)XmlSerializer可應(yīng)互操作性的要求使用相應(yīng)的序列化器第12頁(yè)/共40頁(yè)編碼器基礎(chǔ)編碼器是Infoset與報(bào)文格式之間的橋梁WCF自帶了三種編碼器(.NET框架3.0)文本,MTOM,二進(jìn)制.NET框架3.5引入了JSON編碼器通常應(yīng)互操作性的要求來(lái)決定使用何種編碼器二進(jìn)制編碼速度快,但不具備互操作性MTOM用于大量的二進(jìn)制數(shù)據(jù),同時(shí)具備互操作性文本編碼則可滿(mǎn)足大部分互操作性的要求第13頁(yè)/共40頁(yè)編碼器總結(jié)二進(jìn)制編碼顯著快于文本編碼可同時(shí)提供一個(gè)可互操作的端點(diǎn)和一個(gè)不可互操作的端點(diǎn)MTOM與二進(jìn)制編碼相近消息越大,編碼器對(duì)性能的影響也越大協(xié)議本身的開(kāi)銷(xiāo)與實(shí)際吞吐量相比可以忽略不計(jì)消息越小,編碼器對(duì)性能的影響也越小大部分時(shí)間耗費(fèi)在協(xié)議本身第14頁(yè)/共40頁(yè)吞吐量(已規(guī)格化)第15頁(yè)/共40頁(yè)演示序列化器與編碼器葛子昂軟件設(shè)計(jì)工程師微軟中國(guó)研發(fā)集團(tuán)第16頁(yè)/共40頁(yè)日程回報(bào)傳輸層,序列化器,及編碼器客戶(hù)端的選項(xiàng)服務(wù)端的選項(xiàng)流傳輸通常的建議第17頁(yè)/共40頁(yè)WCF客戶(hù)端/代理的基礎(chǔ)Svcutil.exe可以為服務(wù)創(chuàng)建一個(gè)代理類(lèi)型該類(lèi)型實(shí)現(xiàn)了IClientChannel實(shí)例化該類(lèi)型需要額外的開(kāi)銷(xiāo)還可以使用ChannelFactory<T>應(yīng)該使用哪一個(gè)?Svcutil.exe創(chuàng)建的類(lèi)型易于使用,但開(kāi)銷(xiāo)較大ChannelFactory<T>不易使用,但開(kāi)銷(xiāo)較小經(jīng)常被誤用!第18頁(yè)/共40頁(yè)客戶(hù)端/代理總結(jié)銷(xiāo)毀不用的代理會(huì)達(dá)到閾值:可能會(huì)導(dǎo)致客戶(hù)端掛起會(huì)耗盡資源:如套接字不要在每次調(diào)用時(shí)都創(chuàng)建一個(gè)新的代理如果信道是有狀態(tài)的,那么可以重復(fù)使用ChannelFactory“IncreasingMiddle-TierClientPerformance”

/en-us/library/aa738757.aspx如果進(jìn)行緩存,那么還要考慮對(duì)伸縮性的影響異步,異步,異步!第19頁(yè)/共40頁(yè)代理的吞吐量第20頁(yè)/共40頁(yè)演示客戶(hù)端的使用葛子昂軟件設(shè)計(jì)工程師微軟中國(guó)研發(fā)集團(tuán)第21頁(yè)/共40頁(yè)代碼:在代理內(nèi)進(jìn)行緩存第22頁(yè)/共40頁(yè)日程回報(bào)傳輸層,序列化器,及編碼器客戶(hù)端的選項(xiàng)服務(wù)端的選項(xiàng)流傳輸通常的建議第23頁(yè)/共40頁(yè)服務(wù)基礎(chǔ)服務(wù)是異步的不要浪費(fèi)CPU資源ServiceModel做了一些保守的限制<ServiceThrottlingBehavior/>MaxConcurrentSessions==10MaxConcurrentCalls==16InstanceContext被設(shè)定為PerCall考慮同步的開(kāi)銷(xiāo)綁定指定了閑置超時(shí)ReceiveTimeout:可防御客戶(hù)端不及時(shí)關(guān)閉連接第24頁(yè)/共40頁(yè)演示服務(wù)的使用葛子昂軟件設(shè)計(jì)工程師微軟中國(guó)研發(fā)集團(tuán)第25頁(yè)/共40頁(yè)日程回報(bào)傳輸層,序列化器,及編碼器客戶(hù)端的選項(xiàng)服務(wù)端的選項(xiàng)流傳輸通常的建議第26頁(yè)/共40頁(yè)流傳輸?shù)幕A(chǔ)大型數(shù)據(jù)的傳輸經(jīng)驗(yàn)法則:當(dāng)數(shù)據(jù)量大于1M時(shí)考慮使用流只能用于HTTP,TCP和NamedPipe傳輸層既可傳入服務(wù),也可從服務(wù)中傳出,或雙向設(shè)定綁定的TransferMode.Streamed在契約中使用System.IO.Stream設(shè)定MaxReceivedMessageSize默認(rèn)設(shè)定為64k第27頁(yè)/共40頁(yè)流傳輸?shù)恼{(diào)控Windows和WCF會(huì)對(duì)內(nèi)容進(jìn)行緩存即便是流傳輸?shù)那闆r下也是如此WCF提供了用Nagle算法來(lái)控制緩存的支持ConnectionBufferSize指定本地緩存的大小MaxOutputDelay在本地緩存數(shù)據(jù)的最長(zhǎng)時(shí)間AllowOutputBatching在WCF內(nèi)部啟用批處理第28頁(yè)/共40頁(yè)演示流傳輸葛子昂軟件設(shè)計(jì)工程師微軟中國(guó)研發(fā)集團(tuán)第29頁(yè)/共40頁(yè)日程回報(bào)傳輸層,序列化器,及編碼器客戶(hù)端的選項(xiàng)服務(wù)端的選項(xiàng)流傳輸通常的建議第30頁(yè)/共40頁(yè)常見(jiàn)的陷阱不銷(xiāo)毀無(wú)用的代理每次調(diào)用都創(chuàng)建一個(gè)新的代理在沒(méi)有必要的時(shí)候啟用安全性(Web)NetTcp/NetPipe/WSHttp默認(rèn)情況下開(kāi)啟使用ServerThrottle的默認(rèn)設(shè)定<ServiceThrottlingBehavior/>MaxConcurrentSessions==10MaxConcurrentCalls==16契約中使用了流傳輸,而綁定中卻仍然使用緩存必要時(shí)采用流傳輸:內(nèi)存的使用,較大的負(fù)荷負(fù)荷較小時(shí)采用緩存更快第31頁(yè)/共40頁(yè)可用的工具SvcConfigEditor:可方便地顯示所有設(shè)定SvcTraceViewer:對(duì)追蹤數(shù)據(jù)進(jìn)行診斷性能計(jì)數(shù)器VisualStudioTeamSuite中的性能工具Netmon:可分析線上的數(shù)據(jù)及其行為3.1版已開(kāi)放下載/netmonETW(Xperf)/en-us/library/aa363668.aspx/events/storage-developer2007/presentations/BWorthington_Capturing_Comprehensive_Storage_Workload.pdf第32頁(yè)/共40頁(yè)最佳實(shí)踐不要猜想:測(cè)量!實(shí)際負(fù)荷具有很大的影響部署會(huì)造成很大的差異其它應(yīng)用程序爭(zhēng)奪資源網(wǎng)絡(luò)拓樸可能導(dǎo)致延遲安全性(活動(dòng)目錄,x509&CRLs)對(duì)主要的用戶(hù)場(chǎng)景從頭至尾進(jìn)行測(cè)量若只對(duì)場(chǎng)景的某一部分進(jìn)行測(cè)量,則一定要謹(jǐn)慎第33頁(yè)/共40頁(yè)性能調(diào)整檢查表(1)傳輸層NetPipe,NetTcp,BasicHttp,WSHttp代理重用ServiceChannel,重用ChannelFactory.安全性傳輸層,WS-*+MessageCredentials,完全WS-*編碼器文本編碼,MTOM,二進(jìn)制編碼,JSON壓縮編碼,非WCF自帶(GZipStream)第34頁(yè)/共40頁(yè)性能調(diào)整檢查表(2)運(yùn)行方式自主運(yùn)行,在IIS內(nèi)運(yùn)行在Vista/2008Server下,IIS7內(nèi)運(yùn)行時(shí)可支持NetTcp/NetPipe限額/閾值在提高限額/閾值的同時(shí),使其保持盡可能地小實(shí)例化/并發(fā)Singleton/Multiple事務(wù)OleTx,WS-AT隊(duì)列使用批處理第35頁(yè)/共40頁(yè)答惑解疑Q&A第36頁(yè)/共40頁(yè)參考資源APerformanceComparisonofWindowsCommunicationFoundation(WCF)withExistingDistributedCommunicationTechnologies/en-us/library/bb310550.aspxIncreasingMiddle-TierClientPerformance/en-us/library/aa738757.aspxNetmon3.0.NETStockTraderSampleApplication/en-us/netframework/bb499684.aspxETW(Xperf)/en-us/library/aa

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論