Go to my github

随笔分类 -  【009】.NET Core 开发实战

摘要:35 | MediatR:让领域事件处理更加优雅 核心对象 IMediator INotification INotificationHandler 这两个与之前的 Request 的行为是不一样的,接下来看一下代码 internal class MyEvent : INotification { 阅读全文
posted @ 2020-04-01 00:07 郑子铭 阅读(2934) 评论(5) 推荐(1) 编辑
摘要:34 | MediatR:轻松实现命令查询职责分离模式(CQRS) 实际上我们在定义我的查询的时候,也可以这样定义,例如我们定义一个 MyOrderQuery,把订单的所有名称都输出出去 namespace GeekTime.API.Application.Queries { public clas 阅读全文
posted @ 2020-03-30 00:15 郑子铭 阅读(663) 评论(0) 推荐(0) 编辑
摘要:34 | MediatR:轻松实现命令查询职责分离模式(CQRS) 核心对象 IMeditator IRequese、IRequest IRequestHandler<in TRequest, TResponse> 首先我们安装了 MediatR 的 8.0 的组件包,还安装了依赖注入框架的扩展包, 阅读全文
posted @ 2020-03-29 00:04 郑子铭 阅读(914) 评论(3) 推荐(0) 编辑
摘要:33 | 集成事件:使用RabbitMQ来实现EventBus 这一节我们来讲解如何通过 CAP 组件和 RabbitMQ 来实现 EventBus 要实现 EventBus,我们这里借助了 RabbitMQ,它的整个安装和使用的体验是非常人性化的,如果是在 Windows 下开发的话,它可以有 W 阅读全文
posted @ 2020-03-27 00:31 郑子铭 阅读(1004) 评论(0) 推荐(0) 编辑
摘要:32 | 集成事件:解决跨微服务的最终一致性 首先看一下集成事件的工作原理 它的目的时为了实现系统的集成,它主要是用于系统里面多个微服务之间相互传递事件 集成事件的实现方式有两种,一种是图上显示的发布订阅的方式,通过 EventBus,还有一种方式是通过观察者模式,由观察者将事件发送给关注事件的人 阅读全文
posted @ 2020-03-26 00:17 郑子铭 阅读(857) 评论(1) 推荐(0) 编辑
摘要:31 | APIController:定义API的最佳实践 首先看一个传统意义上三层架构定义的 Controller [HttpPost] public Task<long> CreateOrder([FromBody]CreateOrderVeiwModel viewModel) { var mo 阅读全文
posted @ 2020-03-25 00:24 郑子铭 阅读(1257) 评论(0) 推荐(0) 编辑
摘要:30 | 领域事件:提升业务内聚,实现模块解耦 我们在领域的抽象层定义了领域事件和领域事件处理的接口 IDomainEvent namespace GeekTime.Domain { public interface IDomainEvent : INotification { } } 这是一个空接 阅读全文
posted @ 2020-03-24 00:25 郑子铭 阅读(954) 评论(0) 推荐(0) 编辑
摘要:29 | 定义仓储:使用EF Core实现仓储层 首先定义仓储层的接口,以及仓储层实现的基类,抽象类 仓储层的接口 namespace GeekTime.Infrastructure.Core { /// <summary> /// 包含普通实体的仓储 /// 约束 TEntity 必须是继承 En 阅读全文
posted @ 2020-03-22 00:18 郑子铭 阅读(2531) 评论(0) 推荐(5) 编辑
摘要:28 | 工作单元模式(UnitOfWork):管理好你的事务 工作单元模式有如下几个特性: 1、使用同一上下文 2、跟踪实体的状态 3、保障事务一致性 我们对实体的操作,最终的状态都是应该如实保存到我们的存储中,进行持久化 接下来看一下代码 为了实现工作单元模式,这里定义了一个工作单元的接口 pu 阅读全文
posted @ 2020-03-21 00:01 郑子铭 阅读(1530) 评论(2) 推荐(2) 编辑
摘要:27 | 定义Entity:区分领域模型的内在逻辑和外在行为 上一节讲到领域模型分为两层 一层是抽象层,定义了公共的接口和类 另一层就是领域模型的定义层 先看一下抽象层的定义 1、实体接口 IEntity namespace GeekTime.Domain { public interface IE 阅读全文
posted @ 2020-03-20 00:16 郑子铭 阅读(982) 评论(0) 推荐(0) 编辑
摘要:26 | 工程结构概览:定义应用分层及依赖关系 从这一节开始进入微服务实战部分 这一节主要讲解工程的结构和应用的分层 在应用的分层这里定义了四个层次: 1、领域模型层 2、基础设施层 3、应用层 4、共享层 可以通过代码来看一下 共享层一共建立三个工程: 1、GeekTime.Core:主要承载基础 阅读全文
posted @ 2020-03-19 00:29 郑子铭 阅读(1014) 评论(0) 推荐(0) 编辑
摘要:25 | 路由与终结点:如何规划好你的Web API 自定义约束实现了路由约束接口,它只有一个 Match 方法,这个方法传入了 Http 当前的 httpContext,route,routeKey 这个 routeKey 就是我们要验证的 key 值 后面两个参数 RouteValueDicti 阅读全文
posted @ 2020-03-18 00:01 郑子铭 阅读(487) 评论(0) 推荐(0) 编辑
摘要:25 | 路由与终结点:如何规划好你的Web API 路由系统在 ASP.NET MVC 框架里面就已经存在了,在 ASP.NET Core 框架里面进行了改进 路由系统的核心作用是指 URL 和 应用程序 Controller 的对应关系的一种映射 这个映射关系实际上有两种作用: 1、把 URL 阅读全文
posted @ 2020-03-17 00:19 郑子铭 阅读(609) 评论(1) 推荐(0) 编辑
摘要:24 | 文件提供程序:让你可以将文件放在任何地方 文件提供程序核心类型: 1、IFileProvider 2、IFileInfo 3、IDirectoryContents IFileProvider 是访问各种各样文件提供程序的接口 通过这样子抽象的定义,让我们与具体的抽象文件的读取的代码进行了隔 阅读全文
posted @ 2020-03-16 00:02 郑子铭 阅读(571) 评论(0) 推荐(0) 编辑
摘要:23 | 静态文件中间件:前后端分离开发合并部署骚操作 这里还有一个比较特殊的用法 一般情况下,我们前后端分离的架构,前端会编译成一个 index.html 文件和若干个 CSS 文件和 JavaScript 和图片文件 CSS 文件和 JavaScript 和图片文件一般会部署在 CDN 服务器上 阅读全文
posted @ 2020-03-15 00:13 郑子铭 阅读(489) 评论(0) 推荐(0) 编辑
摘要:23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1、支持指定相对路径 2、支持目录的浏览 3、支持设置默认文档 4、支持多目录映射 首先使用静态文件中间件 // 通过这一行代码就可以访问到静态配置文件 app.UseStaticFiles(); 这样就 阅读全文
posted @ 2020-03-14 00:02 郑子铭 阅读(562) 评论(0) 推荐(0) 编辑
摘要:接下来介绍使用代理方法的方式,也就是说把 ErrorController 整段逻辑直接定义在注册的地方,使用一个匿名委托来处理,这里的逻辑与之前的逻辑是相同的 app.UseExceptionHandler(errApp => { errApp.Run(async context => { // 在 阅读全文
posted @ 2020-03-13 00:25 郑子铭 阅读(670) 评论(1) 推荐(0) 编辑
摘要:22 | 异常处理中间件:区分真异常与逻辑异常 这一节我们来讲解一下错误处理的最佳实践 系统里面异常处理,ASP.NET Core 提供了四种方式 1、异常处理页 2、异常处理匿名委托方法 3、IExceptionFilter 4、ExceptionFilterAttribute Startup 的 阅读全文
posted @ 2020-03-12 00:01 郑子铭 阅读(594) 评论(0) 推荐(0) 编辑
摘要:21 | 中间件:掌控请求处理过程的关键 如果在 Map 的时候逻辑复杂一点,不仅仅判断它的 URL 地址,而且要做特殊的判断的话,可以这么做把判断逻辑变成一个委托 我们要判断当我们的请求地址包含 abc 的时候,输出 new abc app.MapWhen(context => { return 阅读全文
posted @ 2020-03-11 00:03 郑子铭 阅读(519) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示