yueyue, I have fallen in love with you for

2011-02-09, 01:18:25 PM

项目是怎么完成的?

Posted on 2011-08-10 13:26  张超的博客  阅读(306)  评论(0)    收藏  举报

1.刚参加工作:能解决问题.完成项目.
 架构(三层)
 单人完成
  (网店)
  (OA)

2.工作2年以后:团队开发(分工明确)
 架构
 设计
 管理
 沟通
 版本控制

===============================================
项目是怎么完成的?
 1.需求
 2.分析&设计
  2.1数据分析 ER图
  2.2业务分析
  2.3数据设计 物理建模
  2.4系统设计 (UML和设计模式)
 3.架构   
 4.编码  (C#+SQL+ASP.NET+ADO.NET+HTML+Javascript+CSS)
 5.测试


=====================第二天

三层架构

UI表示(现)层 ==> 业务逻辑层 ==> 数据访问层

缺点:代码更多,工作量更大,系统比较复杂.(最好是精通设计思想,如设计模式),运行效率低
优点:高可拓展性,可维护性高
建议使用代码工具:根据数据库表结构,自动生成对应的N层代码(OR Mapping)

N层架构:
 在三层的基础上扩展出其他的层
三层架构是一种思想


1ERP
 ERP.Web
 OA
  7 OA.Web
  6 OA.BLL
  5 OA.DALFactory
  3 OA.IDAL
  2 OA.Entity
  4 OA.DALSqlProvider
 HR
  HR.Web
  HR.BLL
  HR.DAL
 .....
 Membership
  System.Web.Security.Membership.Providers[string name] 已经实现了Membership的Factory
  System.Web.Security.MembershipProvider :就是接口,成员管理的接口
  System.Web.Security.SqlMembershipProvider:是基于SQL的System.Web.Security.MembershipProvider的具体实现
  OtherMembershipProvider:System.Web.Security.MembershipProvider的另一种具体实现(与原来的老系统兼容)


OR Mapping:
 1.根据表生成类(实体类)
 2.根据表的主外键关系生成对应的一对多(父->多个子)的方法和多对一(一个子,找一个父)的方法


IDAL 里有 N个具体接口
 一个具体的DAL实现的程序集DLL里有N个接口具体的实现

数据访问层和业务层之间应用抽象工厂模式

有N个产品(IDAL里的个N个表的数据访问接口)
目前有2个系列:Oracle,SqlServer
抽象工厂规定每个系列的工厂,必须提供N个接口的实现
   Sql下N个SqlXXXProvider
   Oracle下N个OracleXXXProvider


对于唯一的数据访问的提供程序:全局只需要实例化一次
使用"单例模式"singleton

业务层调用数据层,应用数据提供程序单例

反射获得数据提供程序工厂及使用缓存提高效率


代码生成
 研究他人的缓存实现
  反编译工具
 他人的数据访问工厂的实现

 使用codesmith生成实体层代码
  自带的NetTier架构生成和分析  
  写模板生成实体层代码
  中文 在sql中 变 safename
  根据模板生成的结果保存到各自文件
NetTier 

 可以直接使用
 如果已经现成的架构,反向根据codesmith来生成我们自己的代码

流行的数据访问层框架
 Data Access Application Block
 entlib 4.1
 SubSonic
 Nhibernate
 TypedDataSet
 Entity Framework(3.5 sp1)
 DataService (3.5 sp1) 
 ........

下次上课:
 用codesmith+entlib4.1 实现我们的数据层
本次作业:
 1.搭建N层架构(独立完成)
 2.使用codesmith实现自己的模板并生成代码文件(实体层,工厂,产品)

=======================第三天结束

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3