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实现自己的模板并生成代码文件(实体层,工厂,产品)
=======================第三天结束
浙公网安备 33010602011771号