Mvc+Hui+SqlSugar+Autofac+NLog+T4 架构设计(一)

  一、前言

 

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

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

 

 

转载于:https://www.cnblogs.com/dwen/p/9052664.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/367000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

房价在手,天下我有 --反手就撸一个爬虫(终)

接上篇,科科,好,我们继续 我们在这里先把json数据入库吧~ 首先,database/scheme里定义好数据类型。 const mongoose require(mongoose)const detailHouseSchema new mongoose.Schema({ //定义数据模式link:String…

Spring MVC:带有CNVR卷的REST应用程序。 1个

不久前,我阅读了Paul Chapman撰写的有关内容协商视图解析器 (CNVR)的文章。 Spring Framework Blog上的那篇文章启发了我研究这个框架的领域。 因此,我开发了一个基于Spring MVC和CNVR的 REST示例应用程序。 该应用程序演示了REST…

《精通Spring 4.x 企业应用开发实战》学习笔记

第四章 IoC容器 4.1 IoC概述 IoC(Inverse of Control 控制反转),控制是指接口实现类的选择控制权,反转是指这种选择控制权从调用类转移到外部第三方类或容器的手中。 也就是由Spring容器借由Bean配置来进行控制。 DI(D…

微前端——无界wujie

B站课程视频 课程视频 课程课件笔记: 1.微前端 2.无界 现有的微前端框架:iframe、qiankun、Micro-app(京东)、EMP(百度)、无届 前置 初始化 新建一个文件夹 1.通过npm i typescript -g安装ts 2.然后可…

java executor spring_Spring+TaskExecutor实例

一 TaskExecutor接口Spring的TaskExecutor接口等同于Java.util.concurrent.Executor接口。 实际上,它存在的主要原因是为了在使用线程池的时候,将对Java 5的依赖抽象出来。 这个接口只有一个方法execute(Runnable task),它根据线程池的语义和…

小程序居然可以用WXS模拟实现过滤器!

小程序目前官方还没有出过滤器,特别不方便,但是可以用wxs来模拟过滤器,话不多说,直接上代码。当然,不熟悉wxs的可以先看一下 官方文档 1.新建一个filter.wxs的文件我个人建议是一个过滤器写一个wxs,避免引用…

ADF:使用HTTP POST方法进行URL任务流调用

众所周知,可以通过某些URL直接从浏览器或某些外部应用程序调用有限任务流。 如果任务流的属性“ URL invoke”设置为“ url-invoke-allowed”,则启用此功能,该功能通常在集成项目中使用。 通常,客户端(或调用者&#x…

java 项目做多级缓存_【开源项目系列】如何基于 Spring Cache 实现多级缓存(同时整合本地缓存 Ehcache 和分布式缓存 Redis)...

一、缓存当系统的并发量上来了,如果我们频繁地去访问数据库,那么会使数据库的压力不断增大,在高峰时甚至可以出现数据库崩溃的现象。所以一般我们会使用缓存来解决这个数据库并发访问问题,用户访问进来,会先从缓存里查…

Spring MVC:带有CNVR卷的REST应用程序。 3

这是带有CNVR的Spring MVC REST教程的最后一部分。 在这里,我将演示所有这些东西如何工作,这是我在前两部分中开发的。 对于每种类型的CRUD操作,这将分为四个部分:CREATE,READ,UPDATE,DELETE。 …

java 中io的删除文件_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇

本文是Java IO总结系列篇的第4篇,前篇的访问地址如下:如果您阅读完成,觉得此文对您有帮助,请给我点个赞,您的支持是我不竭的创作动力。为了方便大家理解,我特意制作了本文对应的视频:总结删除文…

实现小程序canvas拖拽功能

组件地址 https://github.com/jasondu/wx-comp-canvas-drag 实现效果 如何实现 使用canvas使用movable-view标签 由于movable-view无法实现旋转,所以选择使用canvas 需要解决的问题 如何将多个元素渲染到canvas上如何知道手指在元素上、如果多个元素重叠如何知…

H5页面滚动阻尼效果实现

功能描述 要求 页面分为AB两个区域 当手机可视区的底部接触到 “阻尼带” 的时候,有个上拉弹性过程 当上拉到一定阈值程度就直接把B区顶部弹到手机可视区的顶部,让可视区从B区开始显示当上拉程度未到阈值,就回弹复原 当手机可视区从B区向上…

web 前端 html

1,什么是web 在网络中,大量的数据需要有一个载体,而很多人都能够访问这个载体,利用浏览器的这个窗口链接一个有一个载体,这个载体就是网站也就是web的前身。  1,web标准:结构标准,表…

再谈前后端分离

前段时间我针对手头上的项目前端配置进行了反思以及总结并且写了两篇文章: webpack传统后端渲染的项目前端配置, webpack配置之前后端不分离, 很显然这些配置能满足一时的需求, 但是也有不足. 今天继续总结, 这里应该不涉及到具体后端语言, 只对前端配置进行描述. 毕竟配置工程…

Python - day1 借鉴洪卫

一、了解开发语言 1、高级语言:Python,Java,C,C#,PHP,JS,Go,Ruby,SQL,Swift,Perl,Objective-C,R等等; 2、低级…

返回一个二维整数数组最大子数组的和

要求: 1,输入一个二维整形数组,数组里有正数也有负数。 2,二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和, 3,求所有子数组的和的最大值。 设计思路: 参照一维整数数组求解最大…

基于React的表单开发的分析(上)

本文主要讲解后台系统与表单相关的页面开发,并分析如何才能更好地、高效地开发。 技术栈 ReactAntd 背景 Antd 以下我都将Ant Design 简称为 Antd Ant Design是个服务于企业级产品的UI框架,主要可以用于中后台系统,它有基于React、Vue和Angular的实现…

50个Servlet面试问答

Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上。 这使servlet成为Java访谈中的热门话题。 在这里,我提供了50个servlet面试问题的列表,并提供了答案,以帮…

深入浅出的webpack4构建工具--webpack4+react构建环境(二十)

下面我们来配置下webpack4react的开发环境,之前都是针对webpack4vue的。下面我们也是在之前项目结构的基础之上进行配置下。 首先看下如下是我为 webpack4react 基本的项目结构如下: ### 目录结构如下: demo1 …

Webpack 4进阶--从前的日色变得慢 ,一下午只够打一次包

从前的日色变得慢,车,马,邮件都慢,一生只够爱一个人 -- 《从前慢》 近期在团队项目里把Webpack升级到4.4.1,过程中发现现存的升级文档十分有限,踩了不少坑,好在升级之后提升还算显著&#xff0c…