一、项目结构
在曾经的被面试与现在的面试中,都会被问到一个问题:如何理解N层架构。
对于我这种半路出家的人来说,始终贯彻的一个观念就是,合适的就是最好的。
目前我惯用的结构是8层结构,其中包括:Model模型层,IDAL接口层,SQLServerDAL数据层,DataFactory数据工厂层,BLL业务层,UI界面层,Util核心操作层七个类库项目,web表示层为web应用程序。
model层包含实体对象,实体搜索对象,枚举类型,统计数据时的类型对象;
idal、sqlserverdal和datafactory这三层是一个整体,对于接口,我认为其最大的意义,就在于规范方法定义,比如已经定义了一个getUserByString,没必要再去额外添加getUserByName或者getUserByEmail,只要在sqlserverdal层中对传入的参数进行判断即可进行不同操作,datafactory在于使用简单工厂设计模式管理数据层,比如在已知的同一个流程的两个版本的操作,可以对datafactory传递不同的参数,来返回不同的数据层操作类;
bll层是组装数据请求的业务层,比如前面的getUserByName或者getUserByEmail,可以定义在bll层,提供给不同的流程去调用,而不需要对底层代码进行更改;
ui层用于定义一些自定义控件;
util主要是针对网站本身的一些配置操作,或者一些helper操作类;
web表示层就是一般的webform项目,为网站的表现形式。
多层之间的关联关系:
idal、sqlserverdal引用model;
datafactory引用idal和sqlserverdal;
bll引用idal和model;
web层引用bll和model;
ui和util的引用,试需求而定。
至于目录结构,是根据网站功能划分。
二、数据模型
使用powerdesign15做数据模型,直接连接数据库进行数据结构的操作。
三、数据库
数据库使用schema区分不同板块,当然了,合并到一个schema中也是可以的。
四、一些组件的选取准备
后台富文本编辑器使用ckeditor+ckfinder,js类库使用jquery,防跨站脚本过滤使用微软的AntiXSSLibrary,一些缓存、session、cookies的操作,也使用之前获得一个微软组件操作。