您的位置:首页 > 其它

关于三层结构的一点使用心得与开发建议

2007-04-20 17:29 1131 查看

信息系统典型开发架构是:
MS SQLSERVER + 存储过程 +DataAccess+ DAL + Model + BLL + UI

• 数据库设计 : 在建表时候,请添加对字段描述。这将为后来所有自动创建注释和前台页面做好准备。(字段描述可在codeplus里进行直接录入设置)

• 存储过程 :商业逻辑基本不放在这个里面,存储过程主要作用是完成对表基本操,包括添加、删除、修改、选择等。而所有这些代码 CodePlus 都可以自动为您生成。

• DataAccess :这个东西是从 Microsoft Application Blocks for .NET 中改造而来,采用 CodePlus 一个基础就是使用这个 DataAccess 做为连接和处理数据库层。具体关于这个 DataAccess 在 CSDN 上我 Blog 里已经发表了一篇 《 个性化Microsoft Data Access V2.0 以适用于应用系统开发 》,该Database.cs可点击这里下载 DatabaseCSV2.0.rar

DAL : 即 Data Access Layer ,数据访问层。这里实现对于数据库基本操作方法:如 Create , Update , Delete , IsExist , Select 等,当然,你还可以有更多方法,这一层就是提供与数据库直接交流。但值得说明一下是,这一层,不同与 BLL 层,在 DAL 层里面,不需要要考虑如检验数据合法性、多步逻辑操作等,因为这是 BLL 事,而 DAL 任务是完成一个一个原子性针对数据库操作功能。而这些原子性功能由 BLL 来组装调用,再暴露给表现层以更为粗粒度方法。打了比喻,如果把做一个系统比成建一个房子,则 DAL 就是砖厂了。或者是其他原件厂。
Model :这个层就是数据结构层了,形象地说,这就是在 C# 里面系统对应数据库结构了。(当然,并不完全相同,至少我们会考虑在这里添加很多诸如 XXXCollection 继承 System.Collections.CollectionBase 结构集合类。这对于 BLL 调用起来,可会方便多了。 Model 层被 DALBLLUI三层调用,成为他们三层之间传递数据参数主要结构通道。举个例子,比如前台要显示一个产品信息,则在 BLL 里面会有一个方法叫做 :
Public ProductInfo GetProductInfo(int prodId) 。
在前台,则可以这样来调用:
ProductInfo info = product.GetProductInfo(prodId);
BLL 里,设计这个 GetProductInfo 时,可能会考虑很多因素,即步骤,然后最后调用 DAL 里面一个方面 Init(int prodId,out ProductInfo info) 而得到这个 info, 并返回给上层。
BLL : Business Logic Layer ,商业逻辑层。这是系统核心位置,因为所有主要逻辑都是在这里实现,看 DAL ,那是一堆砖,到 BLL 这,就是清水房了。赫赫。再经过 Pres 表现层美化实现 UI, 则一个装修过房子就搞定了哈。所以,在 BLL 里面,将按大对象进行方法设计,在每一个方法里,可能会调用到多个 DAL 里面小方法。再举个例子,登录,很常见了。给表现层, BLL 只应该提供一个叫
public bool SignIn(string username,string password) ;方法。而这个方法里面,将包含: 1 、 CheckUserExist(string username),2 、 Init(string username,out UserInfo info) , 3 、加密 info 中 password,4 、将这个 password 和传进来 password 进行比较,如果相同,则返回 true, 否则 false. 而这 4 步中,有 3 步是 DAL 里面方法。加密不是哈。

UI: 表现层。这是用户界面设计了,涉及到有二个方面。一、数据显示与读取方式:在 PetShop 3.0 中看到一个很好思路,就介绍一下,其实页面要显示东西,主要都来自于同 Model 层相似内容,说得不明白,换一种说法,就是,是不可以试图把一个得来 XXXInfo 直接赋值给页面,如果页面被用户修改了内容,则是不是可以直接回读一个 XXXInfo 来,如果这样可以实现,则重用度大大提高。而且,由于思路一致,则可以由 CodePlus 来生成。或者也这是很关键一点吧,哈哈。因为如果你页面上要显示有 120 项,你光写赋值,可能就要 2 个小时。如果用这个方式,读写一起完成。 5 分钟时间( 1 秒生成, 1 秒 copy 粘贴,还有 4 分 58 秒改一改。 (CodePlus 没有聪明到能替你做一切事 J ) 。二、调用方法粒度,在 aspx.cs 里面,做一些字符层面过滤是必要,然后剩下,就交给 BLL 来做吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: