MASA Auth - 权限设计

MASA Auth - 权限设计

权限术语

  • Subject:用户,用户组

  • Action:对Object的操作,如增删改查等

  • Object:权限作用的对象,也可以理解为资源

  • Effect:规则的作用,如允许,拒绝

  • Condition:生效条件

  • Permission:允许(拒绝)用户(用户组)在条件允许下对对象(资源)的动作

  • Role:权限集合,权限数量>=1

阅读更多
MASA Framework - EventBus设计
MASA Framework - 整体设计思路

MASA Framework - 整体设计思路

源起

年初我们在找一款框架,希望它有如下几个特点:

  1. 学习成本低

    只需要学.Net 每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好

    个人见解:一款好用的框架应该是补充,而不是颠覆或过度创新

  2. 对扩展开放

    可以按照业务需求任意调整依赖实现,而不被捆绑在一个架构思路上

  3. 功能强大却不限制架构,从单体到 SOA 再到微服务都可以适应

    因为一个系统中总有复杂的也有简单的,最好能全面覆盖我们的业务场景

  4. 行业不限

    既能支持传统行业的业务特殊性,又可以支持互联网行业的高并发特性

  5. 稳定性

    有严格的测试标准,用起来更安心

阅读更多
初识MASA Blazor

初识MASA Blazor

MASA Blazor是一个Blazor的 UI 组件库。就像大家写前端熟知的 Bootstrap, Ant Design 一样。

MASA Blazor 官网地址:https://blazor.masastack.com
MASA Blazor Github 地址:https://github.com/BlazorComponent/MASA.Blazor
MASA Blazor Gitee 地址:https://gitee.com/blazorcomponent/MASA.Blazor
MASA Blazor Pro 演示地址:https://blazor-pro.masastack.com/dashboards/ecommerce
MASA Blazor Pro Github 地址:https://github.com/BlazorComponent/MASA.Blazor.Pro

阅读更多
Redis OM .NET Redis对象映射框架

Redis OM .NET Redis对象映射框架

Redis OM

Redis OM 是 Redis 官方推出的对象映射框架,即:Object Mapping。让开发人员更简单、方便的操作 Redis 数据。Redis 存储的数据抽象为对象映射,支持基于对象的 Redis 数据持久化、流式查询操作。

目前只支持 4 种开发语言:

  • Redis OM for Spring
  • Redis OM for .NET
  • Redis OM for Node.js
  • Redis OM for Python
阅读更多
Dotnet Templating 定制自己的项目模板
C#8.0 可空引用类型

C#8.0 可空引用类型

介绍

我们的项目代码运行时最频繁的错误之一就是 System.NullReferenceException 异常,c#8.0 增加的可为空引用类型就是用来帮助开发者降低甚至消除NULL异常。我们需要注意的是可空引用类型是语法级别的功能,也就是代码编写的时候就会受到编程约束,这个与可为空值类型是不一样的。项目支持 c#8.0 请参见C# 语言版本控制

阅读更多
手把手教你学Dapr - 9. 可观测性

手把手教你学Dapr - 9. 可观测性

目录

手把手教你学Dapr - 1. .Net开发者的大时代

手把手教你学Dapr - 2. 必须知道的概念

手把手教你学Dapr - 3. 使用Dapr运行第一个.Net程序

手把手教你学Dapr - 4. 服务调用

手把手教你学Dapr - 5. 状态管理

手把手教你学Dapr - 6. 发布订阅

手把手教你学Dapr - 7. Actors

手把手教你学Dapr - 8. 绑定

手把手教你学Dapr - 9. 可观测性

介绍

通过Tracing(跟踪)、Metrics(指标)、Logs(日志)和Health(运行状况)监控应用程序。

分布式跟踪

Dapr 使用 Zipkin 协议进行分布式跟踪 和 Metrics 收集。由于 Zipkin 协议的普遍性,许多后端都是开箱即用的,例如 Stackdriver、Zipkin、New Relic 等。结合 OpenTelemetry Collector,Dapr 可以将跟踪导出到许多其他后端,包括但不限于 Azure Monitor、Datadog、Instana、Jaeger 和 SignalFX。

Tracing设计

Dapr 在 Dapr Sidecar 中添加了一个 HTTP/gRPC 中间件。中间件拦截所有 Dapr 和应用程序流量,并自动注入关联 ID 以跟踪分布式事务。这种设计有几个好处:

  • 无需代码检测。使用可配置的跟踪级别自动跟踪所有流量。
  • 跨微服务的一致性跟踪行为。跟踪是在 Dapr Sidecar 上配置和管理的,因此它在由不同团队制作并可能用不同编程语言编写的服务之间保持一致。
  • 可配置和可扩展。利用 Zipkin API 和 OpenTelemetry Collector,Dapr 跟踪可以配置为与流行的跟踪后端一起使用,包括客户可能拥有的自定义后端。
  • 您可以同时定义和启用多个导出器。
阅读更多
手把手教你学Dapr - 8. 绑定

手把手教你学Dapr - 8. 绑定

介绍

使用绑定,您可以使用来自外部系统的事件触发您的应用程序,或与外部系统交互。这个构建块为您和您的代码提供了几个好处:

  • 消除连接和轮询消息系统(如队列和消息总线)的复杂性
  • 关注业务逻辑,而不是如何与系统交互的实现细节
  • 让您的代码不受 SDK 或库的影响
  • 处理重试和故障恢复
  • 运行时在绑定之间切换
  • 构建可移植的应用程序,其中设置了特定于环境的绑定,不需要更改代码
阅读更多

手把手教你学Dapr - 7. Actors

介绍

Actor模式将Actor描述为最低级别的“计算单元”。换句话说,您在一个独立的单元(称为actor)中编写代码,该单元接收消息并一次处理一个消息,没有任何并发或线程。

再换句话说,根据ActorId划分独立计算单元后,相同的ActorId重入要排队,可以理解为lock(ActorId)

:这里有个反例,就是重入性的引入,这个概念目前还是Preview,它允许同一个链内可以重复进入,判断的标准不止是ActorId这么简单,即自己调自己是被允许的。这个默认是关闭的,需要手动开启,即默认不允许自己调自己

当您的代码处理一条消息时,它可以向其他参与者发送一条或多条消息,或者创建新的参与者。底层运行时管理每个参与者运行的方式、时间和地点,并在参与者之间路由消息。

大量的Actor可以同时执行,Actor彼此独立执行。

Dapr 包含一个运行时,它专门实现了 Virtual Actor 模式。 通过 Dapr 的实现,您可以根据 Actor 模型编写 Dapr Actor,而 Dapr 利用底层平台提供的可扩展性和可靠性保证。

什么时候用Actors

Actor 设计模式非常适合许多分布式系统问题和场景,但您首先应该考虑的是该模式的约束。一般来说,如果出现以下情况,请考虑使用Actors模式来为您的问题或场景建模:

  • 您的问题空间涉及大量(数千个或更多)小的、独立且孤立的状态和逻辑单元
  • 您希望使用需要与外部组件进行大量交互的单线程对象,包括跨一组Actors查询状态。
  • 您的 Actor 实例会通过发出 I/O 操作来阻塞具有不可预测延迟的调用者。
阅读更多