当前位置: 首页 > 科技观察

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

时间:2023-03-17 21:16:44 科技观察

一、前言一直想写这个系列,但是由于种种原因(主要是懒),很久没有写了。今天趁着周末休息,终于把系列的目录发了出来,算是一个开始,也给自己一个继续写博客的理由。这个架构是从我最近从事的一个项目中剥离出来的。这个项目是我从无到有搭建的,全程不断学习(参考了博客园很多大牛的作品),思想上不断完善,项目的结构也从一个普通的PetShop演变而来——就像现在的三层结构。一切以实用为目的,所以项目改造过程并没有严格遵守传统的三层定义。这个在下篇《项目结构搭建》后面的系列文章中会提到,也会和传统的三层结构进行对比。写这个系列的目的之一也是对当前项目的结构进行抽象,希望能得到高手的指点,指出不足,谋求发展和提高。本系列使用的开发环境为:Windows7SP1、VisualStudio2012(Update2)、TFS2012(MicrosoftTFSCloudService)、SQLServer2008+,并使用Resharper7.1进行代码优化。2.结构图上图是本架构的设计图。垂直的中间柱子是建筑的主体部分,两侧的小柱子是周围环境的附属物。如果水平方向有交集,说明主要部分依赖于周围。例如,GMF.Demo.Core.Data依赖于DomainModels和EntityFramework,而GMf.Demo.Site.Web和GMF.Demo.Site不依赖于Entityframework。同样,Log模块只服务于GMF.Demo.Site.Web等,在后面的结构描述中会详细说明。3.结构描述Infrastructure(Infrastructurelayer):提供系统中与业务无关的基础设施功能GMF.Component.Tools:工具组件,提供通用的辅助操作功能、扩展方法、异常定义、日志记录定义和实现等.GMF.Component.Data:数据组件,提供与业务无关的EF数据上下文,单元操作、存储操作、EF二级缓存等功能的定义和实现Core(业务核心层):提供与业务实体密切相关的业务功能GMF.Demo.Core.Models:业务实体模型,定义用于系统核心业务实现的数据模型定义GMF.Demo.Core.Data:业务数据访问定义和实现:提供业务相关数据访问功能的实体映射、数据迁移、入库操作的定义与实现GMF.Demo.Core:definitionandimplementat业务核心功能的离子:提交与客户端(网站,桌面,移动)无关的业务逻辑的实现。业务核心层的主要特点如下:该层是业务逻辑处理的核心,数据载体是业务实体。该层所有的类都是抽象类,需要被相应的客户端(网站、桌面、手机)继承,才能被表现层调用。客户端(网站、桌面、手机)的状态(如网站cookies、session等)是无关紧要的,所有客户端特定的服务都必须在相应的派生层进行处理,转换为状态后调用该层——独立进行计算针对不同客户端(网站、桌面、手机)的数据,只需要转化为业务实体调用这一层代码进行计算,解决了同一个业务在不同客户端的代码重复问题Application(站点应用层)GMF.Demo.Site.Models:网站业务视图模型:用于网站业务实现的视图模型定义GMF.Demo.Site:网站业务实现,本项目继承自GMF.Demo.Core,主要功能如下:检查业务执行权限负责将从网站接收到的业务视图实体转化为核心业务模型,并传递给业务核心层进行业务处理。将与Http密切相关的数据(Session、Cookie等)处理成与Http状态无关。然后交给核心层处理Presentation(表现层)GMF.Demo.Client.Consoles:业务控制台,可以调用和测试功能代码段和核心业务等功能GMF.Demo.Site.Web:网站UI显示用于ActionExecute权限检查接收用户输入并传递给站点业务层处理Log记录和异常日志-design.html