Duwamish再研究

 Duwamish 7是微软的一个基于ASP.NET的分布式应用程序范例。
  
  
由于工作上的原因,本人不得不对其研究一二。有所心得,不敢独乐,故于此与众位分享之。一并探讨ASP.NET,万望众位达人不吝赐教,。
  
  btw
MSDN.NET中有其结构与流程详解,本人在此基础上总结心得,并对其中不甚明了之处做一补充,若有疑问可查阅之。
  
  Duwamish
的若干个核心文件:
  
  SystemFrameworkApplicationAssert.cs //
验证数据合法性
  SystemFrameworkApplicationConfiguration.cs //
定义读写配置的框架
  CommonDuwamishConfiguration.cs //
读写配置(通过ApplicationConfiguration
  
  
以上是整个应用程序的框架核心,还有一个ApplicationLog.cs,作用和Configuration类似。
  
  Webweb.config //
应用程序配置文件
  WebPageBase.cs // Web
窗体页基类,供aspx派生,其中定义了需要页面间共享的数据(如用户、订单信息,用属性定义)
  WebModuleBase.cs // Web
控件基类,供Module*.ascx派生,其中定义了所有模块所需要的应用程序路径和其他共享信息(用属性定义)
  Duwamish 7
是一个很小的应用(相对于更多的商业应用),但是微软仍然将它的结构、框架、层次定义得十分复杂,使人不得不对其产生由衷的敬仰: P
  
  
复杂么?说起来也并非难以掌握。
  
  
用户界面——Web
  
业务外观——BusinessFacade
  
业务规则——BusinessRules
  
数据访问——DataAccess
  
  
如此而已,一个严谨、清晰、易于维护的Web应用大都如此。我们以一个用户登录过程为例探究其数据流程。
  
  WebSecurelogon.aspx
接受用户登录表单提交,触发Logon.LogonButton_Click事件(WebSecurelogon.aspx.cs204行)
  
  WebSecurelogon.aspx.cs
243行:
  
  custData = (new CustomerSystem()).GetCustomerByEmail(LogonEmailTextBox.Text, LogonPasswordTextBox.Text);
  
  BusinessFacade
CustomerSystem类(BusinessFacadeCustomerSystem.cs)实现用户账号存取接口逻辑
  
  
其中BusinessFacade.GetCustomerByEmail()BusinessFacadeCustomerSystem.cs45行)定义通过Email读取用户信息接口
  
  BusinessFacadeCustomerSystem.cs
58行:
  
  using (DataAccess.Customers customersDataAccess = new DataAccess.Customers())
  {
   dataSet = customersDataAccess.LoadCustomerByEmail(emailAddress);
  }
  
  DataAccess
Customers类(DataAccessCustomers.cs)实现用户账号数据访问逻辑
  
  
其中Customers.LoadCustomerByEmail()DataAccessCustomers.cs217行)定义通过Email读取用户信息接口——通过访问SQL Server存储过程“GetCustomerByEmail”
  
  DataAccessCustomers.cs
227行:
  
  dsCommand.SelectCommand = GetLoadCommand();
  
  DataAccess.Customers.GetLoadCommand()
初始化存储过程及参数并返回其接口(DataAccessCustomers.cs112行)
  
  DataAccessCustomers.cs
119行:
  
  loadCommand = new SqlCommand("GetCustomerByEmail",new SqlConnection (DuwamishConfiguration.ConnectionString));
  
  
初始化存储过程。其数据库连接由Common.DuwamishConfigurationConnectionString属性获得。
  
  Common
DuwamishConfiguration类(CommonDuwamishConfiguration.cs)定义了应用程序配置信息的访问接口(通过访问类的属性)
  
  
其中DuwamishConfiguration.ConnetionString属性提供数据库连接字符串访问接口
  
  CommonDuwamishConfiguration.cs
151行:
  
  public static String ConnectionString
  {
   get
   {
   return dbConnectionString;
   }
  }
  
  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
   {
   Object setting = settings[key];
  
   return (setting == null) ? defaultValue : (String)setting;
   }
   catch
   {
   return defaultValue;
   }
  }
  
  
至此,一条从界面到数据库的通道就被顺利开通了。用户账户数据被一层一层地返回给界面,并由界面定义的逻辑去处理。

                                                                                                       本文摘自 WEB开发知识库www.web745.com  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值