duwamish?7是微軟的乙個基於asp.net的分布式應用程式範例。?
?????由於工作上的原因,本人不得不對其研究一二。有所心得,不敢獨樂,故於此與眾位分享之。一併**asp.net,萬望眾位達人不吝賜教,。?
?????btw?在msdn.net中有其結構與流程詳解,本人在此基礎上總結心得,並對其中不甚明了之處做一補充,若有疑問可查閱之。?
?????duwamish的若干個核心檔案:?
??????
?????web/web.config?//?應用程式配置檔案?
??web/pagebase.cs?//?web窗體頁基類,供aspx派生,其中定義了需要頁面間共享的資料(如使用者、訂單資訊,用屬性定義)?
??web/modulebase.cs?//?web控制項基類,供module/*.ascx派生,其中定義了所有模組所需要的應用程式路徑和其他共享資訊(用屬性定義)?
??duwamish?7是乙個很小的應用(相對於更多的商業應用),但是微軟仍然將它的結構、框架、層次定義得十分複雜,使人不得不對其產生由衷的敬仰:?p?
?????複雜麼?說起來也並非難以掌握。?
?????使用者介面——web?
??業務外觀——businessfacade?
??業務規則——businessrules?
??資料訪問——dataaccess?
?????如此而已,乙個嚴謹、清晰、易於維護的web應用大都如此。我們以乙個使用者登入過程為例**其資料流程。?
?????web/secure/logon.aspx接受使用者登入表單提交,觸發logon.logonbutton_click事件(web/secure/logon.aspx.cs中204行)?
?????web/secure/logon.aspx.cs中243行:?
?????custdata?=?(new?customersystem()).getcustomerbyemail(logonemailtextbox.text,?logonpasswordtextbox.text);?
?????businessfacade中customersystem類(business/facade/customersystem.cs)實現「使用者賬號訪問介面」邏輯?
?????其中businessfacade.getcustomerbyemail()(business/facade/customersystem.cs中45行)定義「通過email讀取使用者資訊」介面?
?????business/facade/customersystem.cs中58行:?
?????using?(dataaccess.customers?customersdataaccess?=?new?dataaccess.customers())?
??????
??dataaccess中customers類(dataaccess/customers.cs)實現「使用者賬號資料訪問」邏輯?
?????其中customers.loadcustomerbyemail()(dataaccess/customers.cs中217行)定義「通過email讀取使用者資訊」介面——通過訪問sql?server儲存過程「getcustomerbyemail」?
?????dataaccess/customers.cs中227行:?
?????dscommand.selectcommand?=?getloadcommand();?
?????dataaccess.customers.getloadcommand()初始化儲存過程及引數並返回其介面(dataaccess/customers.cs中112行)?
?????dataaccess/customers.cs中119行:?
?????loadcommand?=?new?sqlcommand("getcustomerbyemail",new?sqlconnection?(duwamishconfiguration.connectionstring));?
?????初始化儲存過程。其資料庫連線由common.duwamishconfiguration中connectionstring屬性獲得。?
?????common中duwamishconfiguration類(common/duwamishconfiguration.cs)定義了應用程式配置資訊的訪問介面(通過訪問類的屬性)?
?????其中duwamishconfiguration.connetionstring屬性提供「資料庫連線字串訪問」介面?
?????common/duwamishconfiguration.cs中151行:?
?????public?static?string?connectionstring?
?????}?
?????common/duwamishconfiguration.cs中107行由預設值常量設定「資料庫連線字串」:?
?????dbconnectionstring?=?dataaccess_connectionstring_default;?
?????common/duwamishconfiguration.cs中107行由讀取「應用程式配置檔案」中相應設定「資料庫連線字串」:?
??????
??????
?????public?static?string?readsetting(namevaluecollection?settings,?string?key,?string?defaultvalue)?
??????catch?
????
??}?
?????至此,一條從介面到資料庫的通道就被順利開通了。使用者賬戶資料被一層一層地返回給介面,並由介面定義的邏輯去處理。?
Duwamish 7 初探 資料流程
duwamish 7是微軟的乙個基於asp.net的分布式應用程式範例。由於工作上的原因,本人不得不對其研究一二。有所心得,不敢獨樂,故於此與眾位分享之。一併 asp.net,萬望眾位達人不吝賜教,btw 在msdn.net中有其結構與流程詳解,本人在此基礎上總結心得,並對其中不甚明了之處做一補充,...
Duwamish 7 初探 資料流程
duwamish 7 是微軟的乙個基於 asp.net 的分布式應用程式範例。duwamish 的若干個核心檔案 驗證資料合法性 定義讀寫配置的框架 common duwamishconfiguration.cs 讀寫配置 通過 以上是整個應用程式的框架核心,還有乙個 作用和 configurati...
Duwamish7學習筆記(五)
businessfacade專案 業務外觀層封裝了3個類customersystem,ordersystem,productsystem,類中直接呼叫資料訪問層和業務邏輯層類的方法與屬性提供對web層的介面。有意思是的每個類結尾均以system命名。客戶系統?訂單系統?產品系統?業務外觀層中3個類均...