Duwamish 7 初探——資料流程 (轉)

worldblog發表於2007-12-12
Duwamish 7 初探——資料流程 (轉)[@more@]

Duwamish 7是的一個基於的分散式應用範例。

由於工作上的原因,本人不得不對其研究一二。有所心得,不敢獨樂,故於此與眾位分享之。一併探討,萬望眾位達人不吝賜教,。

btw 在MSDN.NET中有其結構與流程詳解,本人在此基礎上總結心得,並對其中不甚明瞭之處做一補充,若有疑問可查閱之。

Duwamish的若干個核心:

SystemApplicationAssert.cs // 驗證資料合法性
SystemFrameworkApplicationConfiguration.cs // 定義讀寫的
CommonDuwamishConfiguration.cs // 讀寫配置(透過ApplicationConfiguration)

以上是整個應用程式的框架核心,還有一個ApplicationLog.cs,作用和Configuration類似。

web.config // 應用程式配置檔案
WebPageBase.cs // Web窗體頁基類,供派生,其中定義了需要頁面間共享的資料(如、訂單資訊,用屬性定義)
WebModuleBase.cs // Web基類,供Module*.ascx派生,其中定義了所有模組所需要的應用程式路徑和其他共享資訊(用屬性定義)
Duwamish 7是一個很小的應用(相對於更多的商業應用),但是微軟仍然將它的結構、框架、層次定義得十分複雜,使人不得不對其產生由衷的敬仰: P

複雜麼?說起來也並非難以掌握。

使用者介面——Web
業務外觀——Businesacade
業務規則——BusinessRules
資料訪問——DataAccess

如此而已,一個嚴謹、清晰、易於維護的Web應用大都如此。我們以一個使用者登入過程為例探究其資料流程。

WebSecurelogon.aspx接受使用者登入表單提交,觸發Logon.LogonButton_Click事件(WebSecurelogon.aspx.cs中204行)

WebSecurelogon.aspx.cs中243行:

custData = (new CustomerSystem()).GetCustomerByE(LogonTextBox.Text, LogonPassTextBox.Text);

BusinessFacade中CustomerSystem類(BusinessFacadeCustomerSystem.cs)實現“使用者賬號存取介面”邏輯

其中BusinessFacade.GetCustomerByEmail()(BusinessFacadeCustomerSystem.cs中45行)定義“透過Email讀取使用者資訊”介面

BusinessFacadeCustomerSystem.cs中58行:

using (DataAccess.Customers customersDataAccess = new DataAccess.Customers())
{
  dataSet = customersDataAccess.LoadCustomerByEmail(emailAddress);
}

DataAccess中Customers類(DataAccessCustomers.cs)實現“使用者賬號資料訪問”邏輯

其中Customers.LoadCustomerByEmail()(DataAccessCustomers.cs中217行)定義“透過Email讀取使用者資訊”介面——透過訪問 SERVER過程“GetCustomerByEmail”

DataAccessCustomers.cs中227行:

dmmand.Command = GetLoadCommand();

DataAccess.Customers.GetLoadCommand()初始化儲存過程及引數並返回其介面(DataAccessCustomers.cs中112行)

DataAccessCustomers.cs中119行:

loadCommand = new SqlCommand("GetCustomerByEmail",new SqlConnection (DuwamishConfiguration.ConnectionString));

初始化儲存過程。其連線由Common.DuwamishConfiguration中ConnectionString屬性獲得。

Common中DuwamishConfiguration類(CommonDuwamishConfiguration.cs)定義了應用程式配置資訊的訪問介面(透過訪問類的屬性)

其中DuwamishConfiguration.ConnetionString屬性提供“資料庫連線字串訪問”介面

CommonDuwamishConfiguration.cs中151行:

public static String ConnectionString
{
  get
  {
  return ConnectionString;
  }
}

CommonDuwamishConfiguration.cs中107行由預設值常量設定“資料庫連線字串”:

dbConnectionString  = DATAACCESS_CONNECTIONSTRING_DEFAULT;

CommonDuwamishConfiguration.cs中107行由讀取“應用程式配置檔案”中相應設定“資料庫連線字串”:

dbConnectionString  = ApplicationConfiguration.ReadSetting(settings, DATAACCESS_CONNECTIONSTRING, DATAACCESS_CONNECTIONSTRING_DEFAULT);

SystemFramework中ApplicaitionConfiguration類定義了配置讀寫介面(SystemFrameworkApplicationConfiguration.cs)

其中ApplicationConfiguration.ReadSetting定義“讀取配置”介面

SystemFrameworkApplicationConfiguration.cs中190行:

public static String ReadSetting(NameValueCollection settings, String key, String defaultValue)
{
  try
  {
  setting = settings[key];
 
  return (setting == null) ? defaultValue : (String)setting;
  }
  catch
  {
  return defaultValue;
  }
}

至此,一條從介面到資料庫的通道就被順利開通了。使用者賬戶資料被一層一層地返回給介面,並由介面定義的邏輯去處理。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992068/,如需轉載,請註明出處,否則將追究法律責任。

相關文章