王朝网络
分享
 
 
 

Duwamish 7 初探——数据流程(uno原作)

王朝other·作者佚名  2006-12-16
宽屏版  字体: |||超大  

Duwamish 7是微软的一个基于ASP.NET的分布式应用程序范例。

由于工作上的原因,本人不得不对其研究一二。有所心得,不敢独乐,故于此与众位分享之。一并探讨ASP.NET,万望众位达人不吝赐教,。

btw 在MSDN.NET中有其结构与流程详解,本人在此基础上总结心得,并对其中不甚明了之处做一补充,若有疑问可查阅之。

Duwamish的若干个核心文件:

SystemFramework\ApplicationAssert.cs // 验证数据合法性

SystemFramework\ApplicationConfiguration.cs // 定义读写配置的框架

Common\DuwamishConfiguration.cs // 读写配置(通过ApplicationConfiguration)

以上是整个应用程序的框架核心,还有一个ApplicationLog.cs,作用和Configuration类似。

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())

{

dataSet = customersDataAccess.LoadCustomerByEmail(emailAddress);

}

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

{

get

{

return dbConnectionString;

}

}

Common\DuwamishConfiguration.cs中107行由默认值常量设置“数据库连接字符串”:

dbConnectionString = DATAACCESS_CONNECTIONSTRING_DEFAULT;

Common\DuwamishConfiguration.cs中107行由读取“应用程序配置文件”中相应设置“数据库连接字符串”:

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

SystemFramework中ApplicaitionConfiguration类定义了配置读写接口(SystemFramework\ApplicationConfiguration.cs)

其中ApplicationConfiguration.ReadSetting定义“读取配置”接口

SystemFramework\ApplicationConfiguration.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;

}

}

至此,一条从界面到数据库的通道就被顺利开通了。用户账户数据被一层一层地返回给界面,并由界面定义的逻辑去处理。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有