一、前言

  作为小菜鸟第一次写博客的我还有点小激动,最近开始打算着手写一个属于自己架构。算下来差不多最近花一周多的下班时间了来写这个框架,本来想整体架构开发完成测试完成后才写博客,怕自己没时间或失去动力,就先把自己架构设计拿出来分享一下,在下一章我会把整体代码公布出来,整体代码。

  在刚开始搭建框架时,首先考虑的是简单轻巧结构清晰,这次搭建大多也是靠着自己想象去设计,其中也有大牛的参考,不管做得怎么样,这也是对自己技术能力的提升(从小菜鸟到菜鸟的过程,^_^)相信自己以后会做得更好。也希望大牛们和大大牛们的指点。不要骂小菜鸟哟,我的小心灵是很脆弱的哦!O(∩_∩)O哈哈~废话不多说了,开始进入主题。

  二、结构图

  

  上图是本项目框架RDF的整体架构,在每一层模块中都只写了基本结构,只简单的标明了他们的关系,详细将在下面介绍。

  

  上图是在项目中的RDF的架构图。

  三、整体结构说明

  现在开始从下往上的介绍:

    1、Infrastructure(基础设施层)

       RDF.Infrastructure:这个类库提供了整体架构的基础核心功能,主要用于与数据有关的操作,例如数据库、缓存、mongoDB等。这里Orm框架我用的是SqlSugar,非常轻巧的一个Orm框架,大家有兴趣也可以去官网看一下。这里提供了公共的仓储封装了常用的方法和缓存,提供了Aop事务拦截器的特征。这里不进行业务代码编写,只提供核心基础模块的调用,这里可以独立的封装为dll来调用。

    2、Domain(业务核心层)

      RDF.Domain:这个类库主要用于业务最核心,最基本的业务逻辑。这里主要以大模块和小的子模块开发为主,子模块主要实现了基础设施层的仓储的公共方法,每个小模块的还可以实现自己的方法逻辑。而大模块实际就是用于处理业务的逻辑,只不过这里实现核心业务,这里操作会调用到很多子模块根据业务复杂度,如果以后要修改一个功能模块就不需要修改子模块,只需要找到相对应的业务模块(主模块)进行修改,主模块就是业务流程的处理,可以根据自己的需求进行模块范围的划分。

    3、Application(应用层)

      RDF.Web.App:这个类库主要对核心业务进行二次处理,这里主要是接受展示层的数据进行与http相关的处理,例如webfrom或mvc或api调用,然后传给核心业务类,根据核心业务的操作进行响应。

    4、Common(公共设施层)

      4.1、RDF.Common:这个类库主要为整个项目提供的公共操作方法,还有log日志记录,这里日志我用的是Nlog,提供了日志拦截器特征,只要打上标签就可以记录该方法可能会出现的异常,相当于以前的异常捕获并处理,这里的处理只需要打上标签输入可能抛出异常的消息并存入数据库和日志文本,可根据配置进行存储,还可以记录该方法是某某什么时间开发的,这样方便找到维护人员进行维护。(注:这里的日志特征和事务特征都是使用的动态接口aop。)

      4.2、RDF.Model:这个类库提供了数据库实体和其它的定义,这里的实体用的是T4模板生成。

    5、Presentation(展现层)

    RDF.Mvc.Site:网站的展示层,配置了autofac进行依赖注入和aop的操作。

    四、总结

    这个项目结构只是最初版本,在下一章开源时,以权限架构为完成目标分享,在代码逐步完成中和测试中,后续框架不合理部分将会重写,架构和代码完善后将会写T4来生成架构。

Mvc+Hui+SqlSugar+Autofac+NLog+T4 架构设计(一)的更多相关文章

  1. MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    前言 经过前面EF的<第一篇>与<第二篇>,我们的数据层功能已经较为完善了,但有不少代码相似度较高,比如负责实体映射的 EntityConfiguration,负责仓储操作的I ...

  2. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码

    本文转自:http://www.cnblogs.com/guomingfeng/p/mvc-ef-t4.html 〇.目录 一.前言 二.工具准备 三.T4代码生成预热 (一) 单文件生成:Hello ...

  3. MVC实用架构设计(三)——EF-Code First(5):二级缓存

    前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...

  4. MVC实用架构设计(三)——EF-Code First(4):数据查询

    前言 首先对大家表示抱歉,这个系列已经将近一个月没有更新了,相信大家等本篇更新都等得快失望了.实在没办法,由于本人水平有限,写篇博客基本上要大半天的时间,最近实在是抽不出这么长段的空闲时间来写.另外也 ...

  5. MVC实用架构设计(三)——EF-Code First(1):Repository,UnitOfWork,DbContext

    前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列给忘 ...

  6. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

  7. Android App的架构设计:从VM、MVC、MVP到MVVM

    随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...

  8. Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)

    前言: 我打算写一系列关于Swing程序开发的文章.这是由于最近我在做一个Swing产品的开发.长期做JavaEE程序,让我有些麻木了.Swing是设计模式的典范,是一件优雅的艺术品,是一件超越时代的 ...

  9. 架构设计(ASP.NET MVC+Knockout+Web API+SignalR)

    最近忙于重构项目的架构设计,没有时间发博客,也没有时间回复邮件及博文评论,忘各位见谅: 今天先发布架构设计图,同样没有时间写相关的介绍也没有时间回复评论,所以就不发在首页,希望给看到的朋友一些参考,同 ...

随机推荐

  1. attr()与prop()之全选、反选问题

    获取js dom原生属性的时候最好用prop()方法,获取自己添加的属性时用attr() 原文:http://blog.sina.com.cn/s/blog_bf5ce8cc0102vuyt.html ...

  2. bootstrap Table的使用方法

    1.官网 url:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/ 文档包含了表格属性.列属性.事件.方法等等. 2.引入库 只 ...

  3. CSS知多少

    1.Cascading Style Sheets 层叠样式表 2.层叠就是浏览器对多个样式来源进行叠加,最终确定结果的过程. 3. 样式的5大来源:浏览器默认样式.浏览器用户自定义样式.行内样式.内部 ...

  4. Angular进阶教程一

    6 AngularJS进阶 6.1数据绑定原理研究 Angular用户都想知道数据绑定是怎么实现的.你可能会看到各种各样的词汇:$watch.$apply.$digest.dirty-checking ...

  5. redis安装、配置、启停

    Redis is an open source (BSD licensed), in-memory data structure store, used as database, cache and ...

  6. ubuntu16 下安装redis 以及设置其为开机启动

    1.下载redis安装包 sudo wget http://download.redis.io/releases/redis-3.2.6.tar.gz 2.解压 tar -zxvf  redis-3. ...

  7. 网络爬虫入门(二)模拟提交以及HttpClient修正

    模拟提交就是说我们不自己登陆到客户端,仅仅靠发送请求就模拟了客户端的操作,在现实使用的时候经常用来接收一些需要登录才能获取到的数据,来模拟表单的提交,所以很多时候也被称作虚拟登录,这次的例子是我自己为 ...

  8. Protocol Buffer学习笔记

    Protocol Buffer Protobuf基础概念 Protobuf是google开发的数据结构描述语言,能够将结构化数据序列化与反序列化,取代json和xml,常用于服务器通信协议.RPC系统 ...

  9. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

  10. 用POP动画编写带富文本的自定义动画效果

    用POP动画编写带富文本的自定义动画效果 [源码] https://github.com/YouXianMing/UI-Component-Collection [效果] [特点] * 支持富文本 * ...