技术选型完成后,下一步的工作就是项目的整体构建。
项目整体构建是项目进入开发的第一步,主要工作就是考虑如何搭建工程项目结构。工程项目结构并不真正涉及到具体的技术,很多工作都由IDE平台帮你完成,只需要动动鼠标然后再输入几个名字即可。不过我认为,好的项目结构至少能为你提供一个清晰的项目架构、细化的子项目职能、良好的可阅读性,而且工程项目结构可以较为直观的体现项目技术架构。所以我的工程项目结构一般都要求结构清晰、职能明确,当然如果能剥离能独立的类库是最好的。
在确定项目结构之前,首先得确定整个项目的技术架构模型,所谓的三层架构、多层架构只要满足项目要求都好。这个管理框架技术选型采用MVC架构,必须也就是这类三层架构。基本架构模型图如下:
按照这个技术架构模型,整个工程项目结构大致如下:
以上几个工程项目中,每个项目的基本职能比较明晰,具体分解如下:
1、EPF.linxy.Web.Site:项目WEB框架,容纳WEB相关内容,主要包括Controller,View,Script等资源;
2、EPF.linxy.Web.Model:项目视图模型,容纳View的页面数据模型,当然也可以针对应用进行剥离;
3、EPF.linxy.Web.Core:项目WEB核心,容纳WEB站点核心资源,主要包括FIlter、Attribute、Log等,主要的Super级应用也在此,如Exception、WebEvent;
4、EPF.linxy.Web.Lib:项目公共类库,容纳公共基础资源,如Easyui datagrid查询结构、数据返回结构等;
5、EPF.linxy.Domain:项目业务逻辑库,容纳实际的业务处理类;
6、EPF.linxy.Data.Repository:项目数据仓库处理库,容纳业务相关的CREDQ等数据库操作类;
7、EPF.linxy.Data.Model:项目数据模型库,容纳业务相关的全部数据模型,当然也可以针对应用进行剥离;
8、EPF.linxy.Data.Model.Base:项目数据模型的抽象封装类,主要是方便Web.Core的引用,从原Data.Model中进行了剥离;
9、EPF.linxy.Data:项目数据仓库处理类的EF封装库,主要包括库工厂、Context、CREDQ接口定义和基本实现;
另外,在Web.Site中结构中,因为考虑了应用的隔离,所以在View的管理上使用Area。View的结构将会更加清晰。
完成工程结构定义,就可以为每个项目引入对应需要的依赖库了,如Autofac、EF等,通过Vs IDE平台的NuGet可以很方便的进行管理,网上资源很多,这里就不再累述。
至此为止,工程项目结构已经确定,项目的整体构建已经完成。下一步将是有针对性的进行各项设计。