信息系统典型的开发架构是:
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 层被 DAL 、 BLL 、 UI三层调用,成为他们三层之间传递数据参数的主要结构通道。举个例子,比如前台要显示一个产品信息,则在 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 来做吧。
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 层被 DAL 、 BLL 、 UI三层调用,成为他们三层之间传递数据参数的主要结构通道。举个例子,比如前台要显示一个产品信息,则在 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 来做吧。