.Net Core + DDD基础分层 + 项目基本框架 + 个人总结_weixin_30252155的博客-程序员秘密

技术标签: 后端  

原文: .Net Core + DDD基础分层 + 项目基本框架 + 个人总结

为什么要写这篇文章

1,在大半年前,公司开发任务比较轻松,自己不知道干什么,但是又想要学习技术,比较迷茫,后面我接触到了博客园,看了一个帖子,深有感触,我当时不知道学习什么,于是我信息给他,他居然回复我了,并且还给我建议学习的方向,以及学习的方法,我十分的感谢他。
2,在一次面试中,有人问我,你工作1年多了有没有做过自我总结,你觉得你的优势是什么,我当时吞吞吐吐的回答了,内心十分的慌张,在此补上总结。
3,学习了一段时间.Net Core了,记忆力比较差,记录下来,为以后用时做准备。

项目基础分层

在学习DDD的分层知识,现在的代码里面只运用了一些DDD战术设计的知识,现在这样分层为了以后知识积累够了,在上面完善,目前的技术很菜,结合网上以及使用的理解写出自己使用过或者能理解部分。
1297333-20180914232406268-1207389025.png1297333-20181018101929028-1373847048.png

基础设施层

基础设施层使用的相关知识:Code First ,EF Core,Autofac依赖注入,仓储模式的实现接口,领域服务的实现接口,缓存,以及各种基础工具类
一,Code First:使用Code First 数据迁移到数据库。
常用的数据库迁移命令: Add-Migration 迁移名 —— 添加本次迁移 Update-Database——将本次迁移到数据库 Add-Migration InitialCreate -IgnoreChanges -—— 创建一次空的数据迁移:已现在版本为起始点

二,EF Core :软删除 ——全局过滤删除的状态,AsNoTracking() ——不持久化到数据库时的查询使用 Any——查询判断使用Any ,Z.EntityFramework.Plus-——批量修改,删除,增删改查,简单封装异步 Anysnc Await 方法

三,工具类,例如MD5,AutoMapperHelper,LamdaHelper,RedisHelper简单应用,读取配置文件,统一返回参数等。

四,Redis缓存,多种数据类型,查询,插入效率高,Redis与数据库同步策略,先更新数据库在删除缓存,延时双删,(延时,根据数据查询的数据来判断延时的时间),使用StackExchange.Redis

应用层

应用层使用的相关知识:AutoMapper,Dto,Autofac依赖注入

一,Dto:数据传输对象,主要是展现层和应用层传输数据

二,AutoMapper:对象之间传输数据,先使用仓储查询出数据,然后通过AutoMapper转换成前端需要的数据返回

领域层

领域层使用的相关知识:实体,值对象,领域服务接口,仓储接口,聚合,Autofac依赖注入
一,实体:有唯一的标识(唯一,不可变),包含业务逻辑,以及自身的验证,构造函数实例化,实体的Set应设置为私有的

二,值对象:没有唯一的标识,用来描述一个东西的特征,代表是什么

三,聚合:聚合根是实体,聚合是对象的组合,由聚合本身维护自身的一致性,封装业务逻辑,聚合尽量小,聚合之间通过唯一标识引用

四,仓储:仓储是针对聚合的,封装领域逻辑,明确查询的意图,仓储中只维护聚合的状态,不进行持久化,仓储可以方便单元测试,更换ORM

五,领域服务:,领域服务是无状态的,有些业务逻辑不好放在聚合里面的可以使用领域服务,多个聚合根协调,领域服务中可以使用仓储

六,Autofac依赖注入:有利于项目层与层之间的解耦,方便单元测试,构造函数注入,依赖倒置,通过约定进行程序集的注入

展现层

一,展现层使用的相关知识:.Net Core WebApi ,MVC,JWT Swagger,日志异常的捕捉,模型的验证,Log4Net,Autofac依赖注入,过滤器

二,JWT:JWT包含了使用.分隔的三部分: Header 头部 Payload 负载 Signature 签名,在前端每次请求加上JWT 签发的Token 来替代Session,进行访问页面的验证

三,Swagger:可以使用Swagger来请求WebApi ,以及查看WebApi 接口,Swagger可以做接口文档

四,Log4Net:日志异常的全局捕捉,记录日志到TXT中

五,过滤器:使用过滤器来进行模型的验证 ,Log4Net的日志异常的全局捕捉,以及权限的访问

简单的单元测试

单元测试使用的相关知识:Xunit,Autofac依赖注入

学习的方向,以及目标

谢谢蟋蟀大哥的几句指导,学习.Net Core 开阔了我的视野,才了解到DDD,ABP,以及上面的技术,虽然我的技术还很菜,许多技术以及基础知识都不太牢固,但是我还会继续学习,谢谢博客园里面每一位技术分享者。
一,方向:学习Redis ,消息队列, 读写分离,DDD ,业务分析能力, ABP

二,目标:明年成为一个中级的程序员

项目源码地址

https://github.com/Fengddd/ProjectNetCore.git

posted on 2019-05-22 09:30 NET未来之路 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/p/10903945.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30252155/article/details/98671771

智能推荐

java+selenium 元素定位常用方法(8种)_胖子乡巴佬的博客-程序员秘密

1.声明元素一个元素, 使用WebElement接收元素,进行点击操作,通过classname定位2.通过id定位3.通过name定位4.通过xpath定位5.LinkText定位,链接文本6.partialLinkText,部分链接名定位(若存在相同的部分,默认访问首个)7.css selector定位8.tag定位(不常用)...

图论(六)图的两种表示方法_有向图的表示方法_saltriver的博客-程序员秘密

如果要用图来解决问题,首先我们必须采用某种数据结构来存储和表示“图”。相对于数组、链表等来说,图的存储结构就复杂的多了。首先,图上的任何一个顶点都可以被看作是第一个顶点,任意顶点的邻接顶点之间也不存在次序关系。还记得在《图论(一)基本概念》中的“同构图”吧,图的形状可以千变万化的。因此也就无法以数据元素在内存中的物理位置来表示元素之间的关系,也就是说,图不可能用数组这样简单的顺序存储结构来表示。

SQLyog 注册码(包含企业版注册码)_sqlyog注册码_StarFishing的博客-程序员秘密

SQLyog是一款比较实用的sql编辑软件。(企业版)Name: AnyRegistration Code: 26f359fc-e3f6-4727-8af1-72a1a4a0819d百度网盘下载地址:http://pan.baidu.com/s/1nuVgjkH密码:n2vb下面是整合的一些非企业版的注册码姓 名(Name):ttrar序 列 号(Code):8d8120d...

电脑存储:A盘、B盘知识介绍,为何总是电脑磁盘从C盘开始_盘符ab_IT技术分享社区的博客-程序员秘密

大家每次打开【我的电脑】可能都有一个困惑!为什么电脑硬盘是从C盘开始的?如果按照分区的话就会按照D、E、F的顺序分下去而且按照常理英文字母是从A开始那么问题就来了A盘和B盘是什么东西呢?它...

BZOJ 2588 [可持久化线段树][lca]_Vectorxj的博客-程序员秘密

Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权。其中lastans是上一个询问的答案,初始为0,即第一个询问的u是明文。 Input 第一行两个整数N,M。 第二行有N个整数,其中第i个整数表示点i的权值。 后面N-1行每行两个整数(x,y),表示点x到点y有一条边。 最后M行每

html导航隐藏显示_weixin_33994444的博客-程序员秘密

<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title><script src="js/jquery-1.11.3.min.js" ></script></head><script>...

随便推点

STM32嵌入式系统笔记(STM32F103)_yhy08090的博客-程序员秘密

pip是一个安装和管理Python包的工具mosquitto

静态库 .a 转成共享库 .so_旺旺ever的博客-程序员秘密

.a 是有一系列 .o 文件通过 ar 程序打包在一起的静态库,要把它转成动态库只需先解开,生成一堆 .o 文件,再通过编译器(比如 gcc 或 ifort,视具体情况而定)编成动态库即可。

我为区块链赋能实体经济代言第9位:金丘区块链创始人左鹏_Qidian2017的博客-程序员秘密

我为区块链赋能实体经济代言100人之:金丘区块链创始人左鹏代言理由:我为区块链赋能实体经济代言第九位嘉宾左鹏,金丘区块链创始人及CEO中国工信部区块链国家标准制定论坛理事单位顾问。中国区块链技术和产业发展论坛理事,金融区块链联盟(深圳)理事。全球Linux基金会领导的超级账本项目(Hyperledger)成员,上海交通大学高级金融学院导师,上海软件行业十大杰出青年。2017中国TOP金融榜“金...

Tomcat 性能优化_蔚1的博客-程序员秘密

在工作中,作为 Java 开发的程序员,Tomcat 服务器是大家常用的,也是很多公司现在正在用的。但是,在系统并发量比较大的情况下,Tomcat 就会出现卡死和自动关闭等问题。如何优化 Tomcat,让它更高效的运行就成了问题,在本场 Chat 中,我将为你分享如何更好的提升 Tomcat 性能。在本场 Chat 中你可以学到的:Tomcat 简单介绍;Tomcat 运行模式;Tomc...

Laravel 5 系列入门教程(一)【最适合中国人的 Laravel 教程】_SQZHAO的博客-程序员秘密

本教程示例代码见:https://github.com/johnlui/Learn-Laravel-5  大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。Laravel 5 中文文档:1. http://laravel-china.org/docs/5.02. http://www.golaravel.com/laravel/docs/5.0/

推荐文章

热门文章

相关标签