热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.NetCore+DDD基础分层+项目基本框架+个人总结

为什么要写这篇文章1,在大半年前,公司开发任务比较轻松,自己不知道干什么,但是又想要学习技术,比较迷茫,后面我接触到了博客园,看了一个帖子,深有感触,我当时不知道学习什么,于是我信

为什么要写这篇文章

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

项目基础分层


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

基础设施层

基础设施层使用的相关知识: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 了解的不够深入目前只是用了String,准备用来存储用户的权限,以及Token

应用层


应用层使用的相关知识: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


推荐阅读
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 使用 Azure Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • Startup 类配置服务和应用的请求管道。Startup类ASP.NETCore应用使用 Startup 类,按照约定命名为 Startup。 Startup 类:可选择性地包括 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了如何在 Spring Boot 应用中通过 @PropertySource 注解读取非默认配置文件,包括配置文件的创建、映射类的设计以及确保 Spring 容器能够正确加载这些配置的方法。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 本文详细介绍了Java中的访问器(getter)和修改器(setter),探讨了它们在保护数据完整性、增强代码可维护性方面的重要作用。通过具体示例,展示了如何正确使用这些方法来控制类属性的访问和更新。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • Spring Boot单元测试中Redis连接失败的解决方案
    本文探讨了在Spring Boot项目中进行单元测试时遇到Redis连接问题的原因及解决方法,详细分析了配置文件加载路径不当导致的问题,并提供了有效的解决方案。 ... [详细]
author-avatar
a怪周璇_981
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有