帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP.NET编程 >
Duwamish 7 初探——数据流程
作者:uno 发布时间:2005-03-12 来源:ASPCOOL
     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.cs中204行)
  
  WebSecurelogon.aspx.cs中243行:
  
  custData = (new CustomerSystem()).GetCustomerByEmail(LogonEmailTextBox.Text, LogonPasswordTextBox.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读取用户信息”接口——通过访问SQL Server存储过程“GetCustomerByEmail”
  
  DataAccessCustomers.cs中227行:
  
  dsCommand.SelectCommand = 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 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;
   }
  }
  
  至此,一条从界面到数据库的通道就被顺利开通了。用户账户数据被一层一层地返回给界面,并由界面定义的逻辑去处理。
  
  
  
  
  

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·Duwamish深入剖析-配置篇  (2005-03-12)
 ·Duwamish深入剖析-结构篇  (2005-03-12)
 ·我对duwamish7的一些理解(一)  (2005-03-12)
 ·漫谈.Net PetShop和Duwamish ADO  (2005-03-12)
 ·漫谈.Net PetShop和Duwamish ADO  (2005-03-12)
 ·漫谈.Net PetShop和Duwamish ADO  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·放眼未来 帝国近期将有重大举措!
·PHPWind6.3.2版通行证发布
·帝国备份王2008版正式发布
·帝国备份王2008版发布
·phpcms2007转帝国CMS5.0程序发布
·dedecms5.1转帝国CMS5.0程序发布
·帝国网站管理系统V5.0商业购买说明
   类别最新
·ASP.NET中为DataGrid添加合计字段
·.text urlRewrite介绍
·利用 ASP.NET 的内置功能抵御 Web
·ASP.NET Cache
·用 WebClient.UploadData 方法 上载
·ASP.NET 程序设计-序
·什么是客户端/伺服端(Client/Serve
·因特网应用程序的开发
·网页的种类
·.NET Framework-Microsoft Visual
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统