zoukankan      html  css  js  c++  java
  • 关于三层结构的一点使用心得与开发建议

     

    信息系统典型开发架构是:
    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 来做吧。
     
  • 相关阅读:
    安全编码1
    VPP tips
    VPP概述汇总
    C语言安全编码摘录
    TCP-proxy
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.4. Matplotlib: plotting
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.3. NumPy: creating and manipulating numerical data
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language
    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.1. Python scientific computing ecosystem
    25马5跑道,求最快的五匹马的需要比赛的次数
  • 原文地址:https://www.cnblogs.com/suneryong/p/721344.html
Copyright © 2011-2022 走看看