脚本宝典收集整理的这篇文章主要介绍了MASA Framework - 整体设计思路,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
年初我们在找一款框架,希望它有如下几个特点:
学习成本低
只需要学.Net每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好
个人见解:一款好用的框架应该是补充,而不是颠覆或过度创新
对扩展开放
可以按照业务需求任意调整依赖实现,而不被捆绑在一个架构思路上
功能强大却不限制架构,从单体到SOA再到微服务都可以适应
因为一个系统中总有复杂的也有简单的,最好能全面覆盖我们的业务场景
行业不限
既能支持传统行业的业务特殊性,又可以支持互联网行业的高并发特性
稳定性
有严格的测试标准,用起来更安心
在我们做技术选型的时候,对Dapr的研究越深入,对我们想要做的事情就越清晰
站在Dapr的设计上我们找到了一个平衡点,Mecha
可以看下这篇文章(Mecha:将Mesh进行到底):https://skyao.io/talk/202004-mecha-mesh-through-to-the-end/
Mecha提供的是能力,不论是单体还是分布式
Mecha与服务之间交互是有开放API标准的
Mecha可以通过文本格式(Yaml或Json)声明式地配置
对于.Net开发来说,更习惯用Json
应用需要多种多样的能力,Mecha提供了一整套解决方案却不强绑定你所有都要用到,按需即可
每个能力有不同的实现版本,可以根据自身业务情况替换其中某一部分的能力
Mecha的好处是业务逻辑和越来越多的分布式系统问题之间的松耦合,除了可以解决分布式以外,我们是否也可以延展成业务逻辑和架构之间的松耦合?
当然,说到底就是dll而已
在分布式架构中,它以Sidecar的形式守护在应用身旁。
如果在.Net项目中,它是否可以类似.Net Framework作为基建/适配器/中间件/总线等身份驻留在.Net进程中提供基础能力?
一个完整的设计要先从概念开始,为了降低学习成本我们直接复用Dapr的概念定义
提供接口标准,并为了达到某个基础能力的串接不同组件(也通过接口),松耦合但不脱钩
基于接口标准的实现,比如服务间通讯提供HttpClient和Dapr Service Invocation等不同组件的实现
提供更抽象的底层能力,供业务和组件完成自身功能,如缓存/配置/数据操作/安全等
我们首先完成了用于指导架构相关的部分,如DDD、CQRS、Minimal APIs扩展等,并保持单元测试覆盖率在90%以上,目前93%。
以Contrib的目录结构为例:
MASA.Contrib
├── solution items
│ ├── nuget.config
├── src
│ ├── BasicAbility
│ │ ├── MASA.Contrib.BasicAbility.Dcc Configuration API
│ ├── Configuration
│ │ ├── MASA.Contrib.Configuration
│ ├── Data
│ │ ├── MASA.Contrib.Data.UoW.EF Unit of work
│ │ └── MASA.Contrib.Data.Contracts.EF Protocol EF version
│ ├── DDD
│ │ ├── MASA.Contrib.DDD.Domain In-process and cross-process support
│ │ └── MASA.Contrib.DDD.Domain.Repository.EF
│ ├── Dispatcher
│ │ ├── MASA.Contrib.Dispatcher.Events In-process event
│ │ ├── MASA.Contrib.Dispatcher.IntegrationEvents.Dapr
│ │ └── MASA.Contrib.Dispatcher.IntegrationEvents.EventLogs.EF Cross-process event
│ ├── ReadWriteSpliting
│ │ └── CQRS
│ │ │ └── MASA.Contrib.ReadWriteSpliting.CQRS CQRS
│ ├── Service
│ │ └── MASA.Contrib.Service.MinimalAPIs Best practices for [MinimalAPI]
├── test
│ ├── MASA.Contrib.Dispatcher.Events
│ │ ├── MASA.Contrib.Dispatcher.Events.BenchmarkDotnetTest
│ │ ├── MASA.Contrib.Dispatcher.Events.CheckMethodsParameter.Tests
│ │ ├── MASA.Contrib.Dispatcher.Events.CheckMethodsParameterNotNull.Tests
│ │ ├── MASA.Contrib.Dispatcher.Events.CheckMethodsParameterType.Tests
│ │ ├── MASA.Contrib.Dispatcher.Events.CheckMethodsType.Tests
│ │ ├── MASA.Contrib.Dispatcher.Events.OnlyCancelHandler.Tests
│ │ ├── MASA.Contrib.Dispatcher.Events.CheckMethodsType.Tests
│ │ ├── MASA.Contrib.Dispatcher.Events.Tests
│ ├── MASA.Contrib.Data.UoW.EF.Tests
│ ├── MASA.Contrib.Dispatcher.IntegrationEvents.EventLogs.EF.Tests
│ ├── MASA.Contrib.DDD.Domain.Tests
│ ├── MASA.Contrib.DDD.Domain.Repository.EF.Tests
更多功能等你来体验,也欢迎提意见
MASA = Mesh Application Service Architecture,即网格应用服务架构
除了MASA Framework,我们马上将开源Blazor组件库(MASA Blazor),包括管理后台模板(MASA Blazor Pro)
后续还有MASA Stack开源产品,基于MASA Framework打造的一站式PaaS平台,具备DevOps、微服务观测治理、数据治理等平台级能力
MASA.EShop是使用MASA.Framework复刻了eShopOnDapr的功能,并提供了多种架构方式的示例。
MASA.BuildingBlocks:https://github.com/masastack/MASA.BuildingBlocks
MASA.Contrib:https://github.com/masastack/MASA.Contrib
MASA.Utils:https://github.com/masastack/MASA.Utils
MASA.EShop:https://github.com/masalabs/MASA.EShop
以上是脚本宝典为你收集整理的MASA Framework - 整体设计思路全部内容,希望文章能够帮你解决MASA Framework - 整体设计思路所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。