1、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之架构设计

在一个好的架构下编程,不仅对于开发人员是一件赏心悦目的事情,更重要的是软件能够表现出一个健康的姿态;而架构设计的不合理,不仅对于开发人员是一件受苦受难的事情,软件本身的质量更是受到严重威胁。

架构设计图


 

架构说明

一个标准的四层架构包含如下四个部分:

1. 展示层,负责系统与客户的交互

2. 业务逻辑层,负责处理系统的业务

3. 数据访问层,负责处理数据,与不同的数据库打交道

4. 服务层,负责与其他系统进行数据交互和业务集成

我们在此四层架构的基础上进行一些扩展,就是将业务逻辑的方法抽象出业务接口层(IBLL)。

调用关系请结合下面的组件图一起来看,如下:

展示层(App)调用业务接口层(IBLL),业务逻辑层(BLL)实现了接口层(IBLL),业务逻辑层(BLL)调用数据访问层(DAL),公共组件(Common)则是抽象了系统中可以共用和重用的部分,每个层都可以调用。

另外,增加了一个服务层(WcfHost),将接口层(IBLL)暴露给其他系统,使其方便与其他系统进行数据交互和业务集成。

注意:此处没有让展示层(App)调用服务层(WcfHost),是为了性能的考虑。

在我看来,MVC就好比对以前我们常见的三层架构的一个再分。这是我本项目的组件设计图

组件说明

1. App——页面展示

BS架构的项目,选择最新的MVC框架,使用Jquery脚本库。

2. BLL——业务逻辑

业务逻辑的操作,包括业务处理,事务等。

3. DAL——数据访问

数据库访问的操作,数据实体,业务实体,数据校验,使用Entity Framework。

4. IBLL——业务接口

业务逻辑层的方法对外暴露的接口和服务契约。

5. Common——公共组件

整个应用程序使用的公共辅助方法。

6. WcfHost——服务宿主(此处已省)

为对外的服务提供宿主,使用微软WCF技术。

以上是在架构图的框架下设计的7个组件,我们结合架构图一起分析: 

1. 展示层,包含App 

2. 业务逻辑层,包含BLLIBLL 

3. 数据访问层,包含DAL项目

4. 服务层,包含WcfHost项目

5. 公共组件层,包含Common项目

“数据实体”在DAL层中,是Entity Framework自动生成的实体;

“业务实体”是基于“数据实体”进行扩展的实体,或者自定义的实体。因为是基于Entity Framework自动生成的数据实体,所以也放在DAL层中。另外,数据实体和业务实体集成了数据验证的作用。

注意:因为“业务实体”也放在DAL访问层中,所以展示层(App)也需要引用数据访问层,但此处约定不许在展示层做数据库操作。

 

下面看下MVC展示层


Content文件夹放置项目的样式文件

IndexStyle.css是所有列表页面的样式

StyleSheet.css是所有增加修改详细页面的样式

Controllers文件夹放置mvc框架的控制器

HomeController.cs登陆后的主页面

LogClassModels.cs日志模型

BaseController.cs控制器的基类

SupportFilter.cs全局的过滤器

SysFieldModels.cs数据字典模型

HtmlHelper文件夹放置mvc框架的模型

CheckBoxListHelper.cs是CheckBoxList的辅助方法

Easyui.cs是Easyui套件对应的后台Cs代码

FileUploaderHandler.cs页面上传的控制类

RadioButtonListHelper.cs是RadioButtonList的辅助方法

Res文件夹放置第三方的页面套件

Easyui文件夹是easyui的套件

jquery.uploadify-v2.1.4是上传套件

My97DatePicker是时间套件

Scirpts文件夹放置项目使用的js文件

jquery.min.js是jquery文件

JScriptCommon.js自定义的js文件

JScriptIndex.js列表页面的js

Up文件夹放置上传的文件

Views文件夹放置mvc框架的展示视图

Home文件夹:

Index.aspxcs登陆后主页

Shared文件夹是布局视图的存放位置

Global.asax文件是项目的路由和全局信息

Web.config文件时项目的配置信息

 

数据表设计


  

 


后台界面

1、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之架构设计,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。