|
根據(jù)功能需求,實(shí)現(xiàn)單獨(dú)的通道來(lái)訪問(wèn)你的商業(yè)邏輯。 by Jonathan Goodyear, MCSD, MCP, CLS 大多數(shù)商業(yè)應(yīng)用程序只通過(guò)Web services給外界提供其功能的一小部分。大多數(shù)應(yīng)用程序的商業(yè)邏輯都是在企業(yè)內(nèi)部互聯(lián)網(wǎng)中的防火墻后的。而且,在外部和內(nèi)部,你總是需要同樣的功能。理想情況下,你不需要在兩個(gè)不同的地方編寫(xiě)這個(gè)重復(fù)的功能——它應(yīng)該保留在一個(gè)集中的商業(yè)邏輯層中。要實(shí)現(xiàn)這一點(diǎn),一種方法就是實(shí)現(xiàn)多個(gè)Web service接口,將它們作為進(jìn)入你的商業(yè)邏輯的通道。我把它們稱(chēng)作Web service “storefronts”。
例如,假設(shè)你在為一個(gè)網(wǎng)站構(gòu)建一個(gè)內(nèi)容管理應(yīng)用程序。在內(nèi)部,你可能需要一些功能來(lái)增加、更新、刪除和讀取網(wǎng)站內(nèi)容。如果你允許其它的網(wǎng)站運(yùn)用你的內(nèi)容,那么在外部你只需要提供讀取功能。為了適當(dāng)?shù)胤庋b你的商業(yè)邏輯,你需要將所有這些相關(guān)的內(nèi)容部件功能添加到一個(gè)叫做ContentWidget的單獨(dú)的集合中(見(jiàn)列表1)。
接下來(lái),你創(chuàng)建兩個(gè)單獨(dú)的Web service接口,叫做InternalContent和ExternalContent。這兩個(gè)Web services都會(huì)引用ContentWidget集合。InternalContent Web service為ContentWidget.Server對(duì)象提供了每個(gè)方法,因?yàn)槟悖ù蟾牛┬枰羞@些方法來(lái)管理你的網(wǎng)站的內(nèi)容(見(jiàn)列表2)。
然而,ExternalContent Web service將只提供GetContentWidget方法來(lái)讀取內(nèi)容,因?yàn)閷?duì)你的網(wǎng)站的內(nèi)容的外部訪問(wèn)目的是單一的(見(jiàn)列表3)。注意,InternalContent和ExternalContent Web services都實(shí)現(xiàn)了GetContentWidget方法。如果你知道你的內(nèi)容管理應(yīng)用程序有權(quán)限訪問(wèn)這兩個(gè)Web services,你就可以從InternalContent Web service刪除GetContentWidget方法,作為替代,你可以調(diào)用ExternalContent Web service來(lái)讀取內(nèi)容,從而就可以刪除所有的多余的代碼。然而你的內(nèi)部應(yīng)用程序并不是總是有權(quán)限訪問(wèn)這兩個(gè)Web services的。
Web services storefront方法的好處就是你可以集中所有的商業(yè)邏輯,同時(shí)也可以控制你給外界提供的功能。需要記住的一個(gè)主要的概念是Web services不能用來(lái)提供商業(yè)邏輯。它們就類(lèi)似一個(gè)ASP.NET Web應(yīng)用程序中的Web窗體。它們只是方便了不同系統(tǒng)間(或人們之間,在Web forms的情況下——見(jiàn)資源)的交互。確信將IIS驗(yàn)證添加到InternalContent Web service,以便限制已提供有效安全屬性的應(yīng)用程序?qū)λ脑L問(wèn)(見(jiàn)資源)。
你也可以用.NET remoting實(shí)現(xiàn)同樣的Web service storefront方法。到你的商業(yè)邏輯的內(nèi)部接口和外部接口是分離的,所以你可以同時(shí)實(shí)現(xiàn)它們。在這個(gè)例子中,我選擇在內(nèi)部和外部都運(yùn)用了Web services,因?yàn)樵谶@種情況下,你的商業(yè)邏輯集合就有很好的機(jī)會(huì)可以與非.NET系統(tǒng)交互。遇到一個(gè).NET remoting應(yīng)用程序并與之交互的可能性是很細(xì)微的(就目前情況來(lái)說(shuō))。
下載Web services storefront的一個(gè)完整的樣例。它包含ContentWidget商業(yè)邏輯集合、兩個(gè)Web service storefront項(xiàng)目、一個(gè)ASP.NET Web應(yīng)用程序、安裝SQL Server表的腳本和存儲(chǔ)、管理內(nèi)容數(shù)據(jù)的存儲(chǔ)過(guò)程。
關(guān)于作者: Jonathan Goodyear是ASPSoft(www.aspsoft.com)的總裁,這是個(gè)位于Orlando,Fla.的一家Internet咨詢(xún)公司。他是位MCSD,是Debugging ASP.NET(New Riders)一書(shū)的作者,你可以在www.debuggingasp.net找到它。你可以通過(guò)jon@aspsoft.com與他聯(lián)系,或者通過(guò)他在www.angryCoder.com上的angryCoder eZine同他聯(lián)系。
|
溫馨提示:喜歡本站的話(huà),請(qǐng)收藏一下本站!