第三章

设计体系结构
设计分层结构(tier\layer,tier是有关物理划分和部署单元,而layer是有关逻辑划分和设计单元),多层结构把项目的功能、组件和代码分成单独的层:
数据存储层()——保存数据的地方。关系数据库、XML文件、文本文件;
数据访问层(DAL)——对数据存储中的原始数据进行操作的代码;
业务逻辑层(BBL)——获取数据访问层检索到的数据,并用更抽象、更直观的方式将数据显示在客户端,这样可以隐藏底层的细节;
显示层 (UI)——定义用户在屏幕上可以看到的内容,包括格式化的数据和系统导航菜单。
书中案例分三层,DAL、BBL、UI层。
数据访问层(Data Access Layer)是对数据库执行查询、插入、删除和更新操作的代码,它必须了解数据库的所有细节,即表结构、字段名称、存储过程和视图等:
   1、支持多种数据库,先写一个抽象基类,定义类的公共接口,还可以在其中实现一些辅助方法。数据访问代码在继承于基类的此类中。(proivder提供程序)
  2、DataSet还是自定义实体,即BLL类调用从DAL中的一些方法来获取数据时,怎样接收数据。(1)DataSet/DataTable的缺点分为三类:性能和扩展的局限性、数据的表示形式和业务规则验证。(2)使用自定义的业务实体对象集合,自定义实体对象是一个类,用面向对象的方式将从数据库中获取的数据封装,使数据库结构和其他细节抽象化,本书学习的重点,在于编写更灵活、更优雅的自定义对象,在Web应用程序中,特别是在BLL和UI之间,作者更倾向于使用自定义对象(也是我学习面向对象化设计的开始和重点——使用自定义对象需要花费额外的时间和精力去设计编写BLL代码,对我而言就是模仿、学习、理解),独立的DAL和BLL,用自定义实体类和集合来传递从DAL到BLL的数据,利用自定义域对象?从BLL返回数据,并且支持能够轻松地应用于UI层的数据检索和数据修改。(将在后面几章详细学到)
  3、使用存储过程的好处(编程的性能最关键部分就是数据操作,数据库的知识很重要,存储过程等要从头学),比SQL文本查询有更好的性能,可以更好地进行数据安全访问控制,存储过程提供了深一层的代码。
   用SqlCommand执行SQL文本查询来替代存储过程的最大优势是更加灵活。
  通常情况下使用存储过程来获取和处理数据库中的数据,除非对于存储过程来说查询过于动态和复杂,那时就要使用SQL文本查询(用SqlCommand和SqlParameters)——这句话要好好理解,对于初学者,确实需要经验和实例,抄写和模仿是必要的,感觉理论知识太薄弱,完全出于无知的情况,书到用时方恨少。
  4、数据访问基类,DataAccess,一个OOP类,提供了其他类所需的通用功能。包含了一些属性,如ConnectionString、EnableCaching、CachingDuration、Cache,以及ExecuteReader、ExecuteScalar和ExecuteNonQuery方法。
   DAL是由这样一些类组成的:它们通过运行存储过程来获取数据库中的数据,并且返回对数据库字段进行封装了的自定义实体类集合。
设计业务逻辑层:
   BLL层使用DAL返回的数据并暴露给UI层,但BLL还增加了逻辑验证和一些计算属性,使得一些属性为私有或只读,还加入了实例以及用于删除、编辑、插入和检索数据的静态方法。示例:BLL.Customer  calls  DAL.SqlClient.SqlCustomersProvider(继承自DAL.CustomersProvider) uses DAL.CustomerDetails。
   缓存机制、SQL依赖支持、事务管理都不了解,只好后面的慢慢学习,多理解些。
aspnet_regsql -S localhost -E -d Northwind -ed 配置缓存,再在web.config文件中进行轮询设置。
存储连接字符串及其它设置
   ConfigSection类继承于System.ConfigurationSection类,并将其公共属性封装为ConfigurationProperty属性,读取web.config自定义部分配置文件,这样每个子程序就可以单独进行配置。
   web.config 中一段<theBeerHouse/>
<configSections>
  <section name="theBeerHouse" type="MB.TheBeerHouse.TheBeerHouseSection, __code"/>
</configSections>
    <theBeerHouse defaultConnectionStringName="LocalSqlServer">
      <contactForm mailTo="thebeerhouse@wrox.com"/>
      <articles pageSize="10" />
      <polls archiveIsPublic="true" votingLockByIP="false" />
      <newsletters fromEmail="thebeerhouse@wrox.com" fromDisplayName="TheBeerHouse" />
      <forums threadsPageSize="8" hotThreadPosts="10"  bronzePosterPosts="10" silverPosterPosts="20" goldPosterPosts="50" />
      <store sandboxMode="true" businessEmail="thebeerhouse@wrox.com" />
   </theBeerHouse>
用户界面:介绍了Asp.net2.0的新数据绑定控件,GridView,DetailView,FormView;
SqlDataSource,ObjectDataSource,XmlDataSource。
这一章是后续章节的基础,了解整个网站的层次结构,清晰和层次分明,DeCouple,数据库层的数据也成了面向对象的类(自定义对象实体),DAL层读取数据而BBL层加上逻辑验证和计算数据暴露给UI层(要设计良好的体系结构挺难挺费事的,但却前期的努力是为了后面的便利,确实需要将面向对象语言掌握运用熟练,对于初学者的我还需要很长的时间不断模仿、练习、编写和出错才能得到一定的经验值,罗马不是一天建成的,我刚刚迈入门槛),缓冲技术挺难的,.netFrameWork框架是需要整体了解的,连那些UI的数据绑定控件都需要一个一个熟练使用,都是很有用的控件。配置健康监视系统以后再了解,现在也是完全看不懂。

posted @ 2011-01-06 09:36  toyman_1298  阅读(133)  评论(0编辑  收藏  举报