在 .NET Core 中应用六边形架构
在本文中,您会看到一个Web API应用的模板,在.NET Core 中应用了六边形架构,并且里面包含了一些基础功能。
介绍
这是一个模板项目,里面集成了一些必备的基础功能,当我们需要开发一个新项目时,我们可以使用这个模板,这样我们可以聚焦业务。
模板集成了一些组件和功能如下:
- 六边形架构的应用程序
- Web API
- Entityframework Core
- 异常处理
- NUnit
- 版多本
- Swagger UI
- 日志 — SeriLog
- Health checks UI
- JWT authentication
什么是六边形架构
六边形架构(或称其为“端口和适配器架构风格”),将解决传统架构中维护应用程序的问题,而我们过去通常通过以数据库为中心的架构来实现, 所有输入和输出都通过端口进入或离开应用程序的核心内容,并且端口把应用程序和外部技术,工具和交付机制隔离开。

六边形架构带来了哪些好处
插件化
我们可以在项目中添加或者移除adapter, 比如我们可以替换 Rest adapter 或者 GraphQL 或者 gRPC adapter,并且它不会影响到我们的逻辑。可测试的能力
因为它分离了所有层,所以很容易为每个组件编写一个测试用例。与数据库无关
由于数据库与数据访问是分开的,因此切换数据库提供程序非常容易。整洁的代码
由于业务逻辑和表示层是分开的,因此易于实现UI(例如React,Angular或Blazor)。
六边形架构的各层
- Domain Api layer
Domain Api layer 在中心实现,并且不依赖于其他层。
Domain Layers (业务逻辑层)
Rest Adapter layer
Rest Adapter也称为左端口适配器和主适配器,在其中我们实现了静态服务(即GET,POST,PUT,DELETE等)。
Persistence Adapter layer
Persistence Adapter,也称为辅助适配器,我们用了Entity Framework Core,DbContext将是UOW(工作单元)。Bootstrap/Presentation Layer
开始使用六边形架构
首先,我们需要先安装一个模板插件,在VS中,选择 扩展 -> 联机,然后搜索 Hexagonal,并安装

然后选择模板,创建新项目:

它的解决方案是这样的:

您可以浏览下各层的代码结构,也可以启动项目,访问 /healthcheck-ui, 查看健康检查的页面

在本文中,我简单介绍了六角形体系结构,并且通过这个模板,可以快速的在.NET Core 中创建六边形架构的项目应用。
原文链接: https://www.c-sharpcorner.com/article/hexagonal-architecture-in-asp-net-core/
欢迎扫码关注我们的公众号 【全球技术精选】,专注国外优秀博客的翻译和开源项目分享,也可以添加QQ群 897216102

在 .NET Core 中应用六边形架构的更多相关文章
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
项目开发中的一些注意事项以及技巧总结 1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...
- ASP.NET Core 中文文档 第二章 指南(4.6)Controller 方法与视图
原文:Controller methods and views 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘) .张仁建(第二年.夏) .许登洋(Seay) .姚阿勇 ...
- ASP.NET Core 中文文档 第二章 指南 (09) 使用 Swagger 生成 ASP.NET Web API 在线帮助测试文档
原文:ASP.NET Web API Help Pages using Swagger 作者:Shayne Boyer 翻译:谢炀(kiler) 翻译:许登洋(Seay) 对于开发人员来说,构建一个消 ...
- ASP.NET Core 中文文档 第三章 原理(6)全球化与本地化
原文:Globalization and localization 作者:Rick Anderson.Damien Bowden.Bart Calixto.Nadeem Afana 翻译:谢炀(Kil ...
- IDDD 实现领域驱动设计-SOA、REST 和六边形架构
上一篇:<IDDD 实现领域驱动设计-架构之经典分层> 阅读目录: SOA-面向服务架构 REST 与 RESTful 资源(Resources) 状态(State) 六边形架构 DDD ...
- 在.NET Core中使用MEF
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:微软的可托管扩展框架也移植到.NET Core上了. 可托管扩展框架(Managed ...
- 在Android应用中使用Clean架构
自从开始开发安卓应用,我一直感觉我可以做得更好.我看过不少烂代码,其中当然有我写的.安卓系统的复杂性加上烂代码势必酿成灾祸,所以从错误中成长就很重要.我Google了如何更好地开发应用,发现了这个叫做 ...
- SOA、REST 和六边形架构
SOA.REST 和六边形架构 上一篇:<IDDD 实现领域驱动设计-架构之经典分层> 阅读目录: SOA-面向服务架构 REST 与 RESTful 资源(Resources) 状态(S ...
- 在ASP.NET Core中使用Apworks快速开发数据服务
不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架,旨在为分布式企业系统软件开发提供面向领域驱动(DDD)的框架级别的解决方案,并对多种系统架构风格提供支 ...
随机推荐
- 【uva 10048】Audiophobia(图论--Floyd算法)
题意:有一个N点M边的无向带权图,边权表示路径上的噪声值.有Q个询问,输出 x,y 两点间的最大噪声值最小的路径的该值.(N≤100,M≤1000,Q≤10000) 解法:N值小,且问多对点之间的路径 ...
- zoj3299 Fall the Brick
Time Limit: 3 Seconds Memory Limit: 32768 KB Now the God is very angry, so he wants to punish t ...
- Dubbo SPI 机制源码分析(基于2.7.7)
Dubbo SPI 机制涉及到 @SPI.@Adaptive.@Activate 三个注解,ExtensionLoader 作为 Dubbo SPI 机制的核心负责加载和管理扩展点及其实现.本文以 E ...
- Linux-输出/输入重定向
目录 重定向的分类 输出重定向 将标准输出重定向到文件 将标准输出追加重定向到文件 将错误输出重定向到文件 将标准输出和错误输出都重定向到文件 将错误输出重定向到黑洞文件 输入重定向 重定向的分类 名 ...
- bochs 调试 com 文件 magicbreak
参考 https://blog.csdn.net/housansan/article/details/41833581 在网上看到2中解决此问题的方法:1.使用dos下的debug32工具单步跟踪pm ...
- Leetcode(29)-两数相除
给定两个整数,被除数 dividend 和除数 divisor.将两数相除,要求不使用乘法.除法和 mod 运算符. 返回被除数 dividend 除以除数 divisor 得到的商. 示例 1: 输 ...
- window.onresize使用实例
<!DOCTYPE html> <html> <head> <title>请调整浏览器窗口</title> <meta charset ...
- 009.NET5_程序的发布运行
发布 相差了web.config文件 脚本启动 cmd,进入程序根目录. 带参启动 其实,最终与web.config中效果一样
- cnblogs blogs backup & node.js crawler
cnblogs blogs backup & node.js crawler refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访 ...
- YAML & .yml
YAML & .yml YAML: YAML Ain't Markup Language https://yaml.org/ https://github.com/yaml/www.yaml. ...