MVC实用架构设计:总体设计

开发 架构
一直以来都想写这个系列,但基于各种理由(主要是懒惰),迟迟没有动手。今天,趁着周末的空档,终于把系列的目录公布出来了,算是开个头,也给自己一个坚持写博客的理由吧。

一、前言

一直以来都想写这个系列,但基于各种理由(主要是懒惰),迟迟没有动手。今天,趁着周末的空档,终于把系列的目录公布出来了,算是开个头,也给自己一个坚持写博客的理由吧。

这个架构是从我近期在做的一个项目中剥离出来的,这个项目由我从0开始一手搭建,在整个过程中不断学习(在博客园中参考了很多大牛的作品)与思考中不断完善,项目的结构也从一个普通的类PetShop三层结构演变成了现在这样,一切以实用为目的,所以项目的改造过程中并不太严格遵守传统三层的定义,这个在下篇《项目结构搭建》及以后的系列文章中都会提及到,也会与传统三层结构进行对比。

写这个系列的目的之一也是想把当前项目的架构抽象出来,以希望得到高手大牛们的指点,指出不足之处,以求发展改进。

本系列使用的开发环境为:Windows 7 SP1、 Visual Studio 2012 (Update2)、TFS2012 (微软TFS云服务)、SQL Server 2008+,并使用 Resharper 7.1 进行代码优化。

二、结构图

   

上图是本构架的设计图,纵向中间一列为架构主体部分,两边的小列为周边的依赖项,如果横向有交集,则说明主体部分对周边存在依赖。比如 GMF.Demo.Core.Data依赖于Domain Models与EntityFramework,但GMf.Demo.Site.Web与GMF.Demo.Site对Entityframework不存在依赖。同样,Log模块也仅为GMF.Demo.Site.Web服务等等,这些在下面的结构说明中也会详加说明。

三、结构说明

  1. Infrastructure(基础设施层):提供系统中与业务无关的基础设施功功能
    1. GMF.Component.Tools:工具组件,提供通用辅助操作功能,扩展方法,异常定义,日志记录定义与实现等功能
    2. GMF.Component.Data:数据组件,提供与业务无关的EF数据上下文,单元操作,仓储操作,EF二级缓存等功能的定义与实现
  2. Core (业务核心层):提供与业务实体密切相关的业务功能
    1. GMF.Demo.Core.Models:业务实体模型,定义用于系统核心业务实现的数据模型的定义
    2. GMF.Demo.Core.Data:业务数据访问定义与实现:提供与业务相关的数据访问功能的实体映射,数据迁移,仓储操作的定义与实现
    3. GMF.Demo.Core:业务核心功能定义与实现:提交与客户端(网站,桌面端,移动端)无关的业务逻辑的实现,业务核心层主要特征如下:
      1. 此层是业务逻辑处理的核心,数据载体为业务实体
      2. 此层所有类为抽象类,需要在相应的客户端(网站,桌面端,移动端)进行继承后才能被展现层调用
      3. 此层要做到客户端(网站、桌面端、移动端)状态(如网站的Cookie,Session等)无关性,所有客户端特有的业务都要在相应的派生层中进行处理,转换为状态无关后再调用此层进行运算
      4. 对于不同客户端(网站、桌面端、移动端)的数据,只需要转换为业务实体即可调用此层代码进行运算,解决相同业务在不同客户端代码重复的问题
  3. Application (站点应用层)
      1. GMF.Demo.Site.Models:网站业务视图模型:定义用于网站业务实现的视图模型的定义
      2. GMF.Demo.Site:网站业务实现,此项目继承于GMF.Demo.Core,主要职能如下:
        1. 对业务执行权限进行检查
        2. 负责把从网站接收的业务视图实体转换为核心业务模型,传给业务核心层进行业务处理
        3. 处理与Http密切相关的数据(Session、Cookie等),处理成与Http状态无关后再交由核心层进行处理
  4. Presentation (展现层)
    1. GMF.Demo.Client.Consoles:业务控制台,可对功能代码段,核心业务等功能进行调用测试。
    2. GMF.Demo.Site.Web:网站UI展现
      1. 对Action执行权限进行检查
      2. 接收用户输入并转交给站点业务层进行处理
      3. 记录功能操作的日志记录与异常日志

原文链接:http://www.cnblogs.com/guomingfeng/archive/2013/05/19/mvc-overall-design.html

责任编辑:林师授 来源: 博客园
相关推荐

2012-03-31 10:01:40

ASP.NET MVC

2021-08-03 23:02:10

数字化转型经营IT

2013-09-02 17:53:41

MVC架构设计MEF

2015-10-29 10:50:46

Android架构设计原则

2023-04-11 07:50:27

软件架构设计

2013-05-27 10:58:28

Tumblr架构设计雅虎收购

2011-06-01 10:59:56

2015-06-02 04:17:44

架构设计审架构设计说明书

2023-07-05 08:00:52

MetrAuto系统架构

2012-09-19 13:46:37

存储存储设计快速表态

2024-04-17 08:03:45

架构设计Java

2015-06-02 04:34:05

架构设计

2021-07-21 16:30:38

iOSAPP架构

2009-07-10 09:31:57

MyEclipse U

2024-08-18 14:09:24

2017-11-17 07:06:27

互联网分层架构APP

2019-11-25 10:58:19

Tomcat架构Web

2012-06-07 10:45:12

软件架构设计原则

2021-10-28 06:17:46

架构设计组件

2009-02-01 10:17:19

Java架构设计设计模式
点赞
收藏

51CTO技术栈公众号