MASA Framework - EventBus设计】的更多相关文章

目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 概述 利用发布订阅模式来解耦不同架构层级,亦可用于解决隔离业务之间的交互 优点: 松耦合 横切关注点 可测试性 事件驱动 发布订阅模式 发布者通过调度中心将消息发送给订阅者.调度中心解决发布与订阅者之间的关系,保证消息可以送达订阅者手中. 发布者与订阅者互不相识,发布者只管向调度中心发布消息,而订阅者只关心自己订阅的消息类型 多订阅者保序执行 在常见的发布订阅模式中,的确很少见到类似的说…
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 MASA Framework - MASA Framework - DDD设计(1) DDD 领域驱动设计是一个有关软件开发的方法论,它提出基于领域开发的开发模式,基于DDD理论,我们可以设计出高质量的软件模型. 它围绕业务概念构建领域模型来控制业务的复杂度,解决软件难以理解和演化的问题. 微服务 微服务是一种架构风格,通过进程间通讯.容错和故障隔离等方式,实现去中心化的服务治理. DD…
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 MASA Framework - MASA Framework - DDD设计(1) MASA Framework - MASA Framework - DDD设计(2) Clean Architecture 国内对于Clean Architecture的翻译很多,干净/整洁/清晰.但无论哪一种都说明了它简洁.清晰的特性. 早期它长这样 看到这张图的同学可能会对另外一张图有印象 洋葱架构…
概述 事件总线是一种事件发布/订阅结构,通过发布订阅模式可以解耦不同架构层级,同样它也可以来解决业务之间的耦合,它有以下优点 松耦合 横切关注点 可测试性 事件驱动 发布订阅模式 通过下图我们可以快速了解发布订阅模式的本质 订阅者将自己关心的事件在调度中心进行注册 事件的发布者通过调度中心把事件发布出去 订阅者收到自己关心的事件变更并执行相对应业务 其中发布者无需知道订阅者是谁,订阅者彼此之间也互不认识,彼此之间互不干扰 事件总线类型 在Masa Framework中,将事件划分为 进程内事件…
源起 年初我们在找一款框架,希望它有如下几个特点: 学习成本低 只需要学.Net每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好 个人见解:一款好用的框架应该是补充,而不是颠覆或过度创新 对扩展开放 可以按照业务需求任意调整依赖实现,而不被捆绑在一个架构思路上 功能强大却不限制架构,从单体到SOA再到微服务都可以适应 因为一个系统中总有复杂的也有简单的,最好能全面覆盖我们的业务场景 行业不限 既能支持传统行业的业务特殊性,又可以支持互联网行业的高并发特性 稳定性 有…
权限术语 Subject:用户,用户组 Action:对Object的操作,如增删改查等 Object:权限作用的对象,也可以理解为资源 Effect:规则的作用,如允许,拒绝 Condition:生效条件 Permission:允许(拒绝)用户(用户组)在条件允许下对对象(资源)的动作 Role:权限集合,权限数量>=1 RBAC RBAC (Role-Based Access Control,基于角色的访问控制),引入了 Role(角色)的概念,并且将权限与角色进行关联.用户通过扮演某种角色…
本文介绍通过机器人框架设计器 (Bot framework composer)接近拖拉拽的方式设计一个聊天机器人,该聊天机器人的主要功能是发起http请求查询天气.当然,稍微变通下,可以用来查询几乎任何你想查询的内容,比如是否有新的日程,比如查询订单系统等等. 本文参照文档:https://docs.microsoft.com/zh-cn/composer/introduction 本文使用了一个模拟的天气查询api,该api提供北上广深的天气查询,其余城市返回404,具体见下图: 我们准备了一…
开发初衷 注册了博客园已经有几个月了,却从来都没有上来过,本人大概从2010年开始就开始做.NET 方向的开发. 这个是我在博客园发布的第一个帖子. 主要就是说说最近在写的一个ORM架构. 本人接触的ORM架构也有不少,没有一个是用着顺手的,要么就是配置起来特别吃力,要么就是使用起来不是很方便. 最终还是比较喜欢NHibernate这套架构,因为这套架构支持在Model表的实体类内部包含其他的表的实体类  也就是在使用的时候,连联表查询都可以省了 可以直接支持对象.对象的方式来进行查询数据,屡试…
First/FirstOrDefault: using (var ctx = new SchoolDBEntities()) { var student = (from s in ctx.Students where s.StudentName == "Student1" select s).FirstOrDefault<Student>(); } 对应的sql语句如下 ) [Extent1].[StudentID] AS [StudentID], [Extent1].[S…
看到网上讨论 DDD 的文章越来越多,咱也不能甘于人后啊,以下是我对 DDD 的个人理解,短小精悍,不喜忽喷. 也谈DDD(领域驱动设计) 解决什么问题 传统模式,产品评审结束,开发人员就凭经验拆分模块,设计数据结构,然后写业务逻辑实现功能.问题在于,不同人的经验.理念不一样,同样的产品需求,最终的技术实现也会不一样:就算是同一个人,可能不同时候接手同样的需求,也会出来不同的设计.究其原因,很多细节之处都是拍脑袋或按个人喜好,或以无所谓的心态处理了,得出的自然是各式各样的结果.往往这些结果是无法…