總結(jié)WCF自承載優(yōu)缺點(diǎn)
自承載您的服務(wù)這個(gè)概念你聽(tīng)過(guò)嗎?我在網(wǎng)上看過(guò)關(guān)于這方面的介紹,我來(lái)總結(jié)一下WCF自承載的優(yōu)缺點(diǎn)。承載 WCF 服務(wù)最靈活、最便捷的方法就是進(jìn)行自承載。要能夠自承載服務(wù),必須滿足兩個(gè)條件。***,需要 WCF 運(yùn)行時(shí);第二,需要可以承載 ServiceHost 的托管 .NET 應(yīng)用程序。您需要自己動(dòng)手編寫(xiě)啟動(dòng)和停止宿主的代碼。
下面是WCF自承載的優(yōu)點(diǎn):
◆易用性:只需幾行代碼即可使服務(wù)運(yùn)行。
◆靈活性:通過(guò) ServiceHost<T> 的 Open() 和 Close() 方法,可以輕松控制服務(wù)的生存期。
◆易調(diào)試性:可以使用熟悉的調(diào)試方式對(duì)自承載環(huán)境中承載的 WCF 服務(wù)進(jìn)行調(diào)試,而不必連接到單個(gè)應(yīng)用程序來(lái)激活服務(wù)。
◆易部署性:通常,部署簡(jiǎn)單 Windows 應(yīng)用程序與使用 xcopy 一樣容易。您不必在服務(wù)器場(chǎng)和類(lèi)似地方部署復(fù)雜的方案,即可部署簡(jiǎn)單的 Windows 應(yīng)用程序來(lái)充當(dāng) WCF ServiceHost。
◆支持所有綁定和傳輸:自承載并不限制您僅能使用現(xiàn)有的綁定和傳輸技術(shù)。在 Windows XP 和 Windows Server 2003 上,IIS 限制您只能使用 HTTP。
下面WCF自承載的缺點(diǎn):
◆可用性受到限制:服務(wù)只有在應(yīng)用程序運(yùn)行時(shí)才能被訪問(wèn)。
◆功能受到限制:自承載的應(yīng)用程序在對(duì)高可用性、易管理性、可靠性、可恢復(fù)性、版本控制和部署方案的支持方面受到一定限制。至少,現(xiàn)有的 WCF 無(wú)法提供這些支持,因此在自承載的情況中,您必須自己實(shí)現(xiàn)這些功能;例如,默認(rèn)情況下 IIS 提供了這些功能中幾項(xiàng)。
換句話說(shuō),對(duì)于企業(yè)級(jí)方案來(lái)說(shuō)不應(yīng)考慮自承載方式。自承載適用于企業(yè)項(xiàng)目的開(kāi)發(fā)或演示階段。此外,當(dāng)您希望用戶桌面應(yīng)用程序進(jìn)行相互通信或在點(diǎn)對(duì)點(diǎn)情況下,可以對(duì)服務(wù)進(jìn)行自承載。本書(shū)第 12 章對(duì)此進(jìn)行了描述。
#T#為了在實(shí)際工作環(huán)境中更好地說(shuō)明自承載,本章提供了一個(gè) WinForms 應(yīng)用程序,該程序所承載的服務(wù)用于跟蹤 QuickReturns Ltd. 案例研究中證券商發(fā)布的報(bào)價(jià)。在此方案中,有兩個(gè)不同的WinForms 應(yīng)用程序。一個(gè)是證券商管理器應(yīng)用程序,證券商可以使用該程序發(fā)布報(bào)價(jià)并進(jìn)行證券交易。另一個(gè)程序是單獨(dú)的 WinForms 應(yīng)用程序,用于跟蹤發(fā)布的報(bào)價(jià)。如列表,該程序公開(kāi)一個(gè)服務(wù),所公開(kāi)的服務(wù)實(shí)現(xiàn)了 ITradeTrackingService 約定,從而實(shí)現(xiàn)對(duì)報(bào)價(jià)的跟蹤。證券商管理器應(yīng)用程序會(huì)在成功通過(guò) TradeService 發(fā)布報(bào)價(jià)后調(diào)用該服務(wù)。
- using System.ServiceModel;
 - using QuickReturns.StockTrading.ExchangeService.DataContracts;
 - namespace QuickReturns.StockTrading.TradeTrackingService.Contracts
 - {
 - [ServiceContract()]
 - interface ITradeTrackingService
 - {
 - [OperationContract()]
 - void PublishQuote(Quote quote);
 - }
 - }
 















 
 
 

 
 
 
 