上一篇文章介绍了在浏览器端以中间件,路由,跨进程事件的姿势使用原生WebSocket.这篇文章将介绍如何使用Node.js以相同的编程模式来实现WebSocket服务端. Node.js中比较流行的两个WebSocket库分别是socket.io与ws.其中socket.io已经实现了跨进程事件,广播,群发等功能,并且服务端与浏览器端是配套的,在不支持WebSocket技术的浏览器会降级为使用ajax轮询.所以.这里选择使用相对而言较为底层或原始的ws,在其基础上实现文章标题所提到的编程模式.…
通过参考koa中间件,socket.io远程事件调用,以一种新的姿势来使用WebSocket. 浏览器端 浏览器端使用WebSocket很简单 // Create WebSocket connection. const socket = new WebSocket('ws://localhost:8080'); // Connection opened socket.addEventListener('open', function (event) { socket.send('Hello Se…
概述 事件总线是一种事件发布/订阅结构,通过发布订阅模式可以解耦不同架构层级,同样它也可以来解决业务之间的耦合,它有以下优点 松耦合 横切关注点 可测试性 事件驱动 发布订阅模式 通过下图我们可以快速了解发布订阅模式的本质 订阅者将自己关心的事件在调度中心进行注册 事件的发布者通过调度中心把事件发布出去 订阅者收到自己关心的事件变更并执行相对应业务 其中发布者无需知道订阅者是谁,订阅者彼此之间也互不认识,彼此之间互不干扰 事件总线类型 在Masa Framework中,将事件划分为 进程内事件…
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 概述 利用发布订阅模式来解耦不同架构层级,亦可用于解决隔离业务之间的交互 优点: 松耦合 横切关注点 可测试性 事件驱动 发布订阅模式 发布者通过调度中心将消息发送给订阅者.调度中心解决发布与订阅者之间的关系,保证消息可以送达订阅者手中. 发布者与订阅者互不相识,发布者只管向调度中心发布消息,而订阅者只关心自己订阅的消息类型 多订阅者保序执行 在常见的发布订阅模式中,的确很少见到类似的说…
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 MASA Framework - MASA Framework - DDD设计(1) MASA Framework - MASA Framework - DDD设计(2) Clean Architecture 国内对于Clean Architecture的翻译很多,干净/整洁/清晰.但无论哪一种都说明了它简洁.清晰的特性. 早期它长这样 看到这张图的同学可能会对另外一张图有印象 洋葱架构…
我们知道开发Electron应用,难免要涉及到跨进程通信,以前Electron内置了remote模块,极大的简化了跨进程通信的开发工作,但这也带来了很多问题,具体的细节请参与我之前写的文章: https://www.cnblogs.com/liulun/p/15217180.html Electron团队把remote模块拿掉之后,开发者就只能使用ipcRenderer,ipcMain,webContents等模块收发跨进程消息了,这并没有什么问题,但写起来非常麻烦,跨进程消息多了之后,也很难管…
cp from : http://weishu.me/2016/01/12/binder-index-for-newer/ 毫不夸张地说,Binder是Android系统中最重要的特性之一:正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种及其方便的跨进程通信机制. 理解Binder对于理解整个Android系统有着非常重要的作用,Android系统的四大组件,AMS,PMS等系统服务无一不与Binder挂钩:如果对Binder不甚了解,那么就…
CmProcess 是 Android 一个跨进程通信框架,整体代码比较简单,总共 20 多个类,能够很好的便于我们去了解跨进程实现的原理. 个人猜测 CmProcess 也是借鉴了 VirtualApp(该 APP 很强大,是一个沙盒,可以在里面安装其他 apk) 的源码,从中整理出来一套通信方案.VirtualAPP 功能很强大,实现比较复杂,需要较深的 framework 方面的知识才好理解. 按作者所说,CmProcess 是更方便更简洁的 Android 进程通信方案,无需进行 bin…
源起 年初我们在找一款框架,希望它有如下几个特点: 学习成本低 只需要学.Net每年主推的技术栈和业务特性必须支持的中间件,给开发同学减负,只需要专注业务就好 个人见解:一款好用的框架应该是补充,而不是颠覆或过度创新 对扩展开放 可以按照业务需求任意调整依赖实现,而不被捆绑在一个架构思路上 功能强大却不限制架构,从单体到SOA再到微服务都可以适应 因为一个系统中总有复杂的也有简单的,最好能全面覆盖我们的业务场景 行业不限 既能支持传统行业的业务特殊性,又可以支持互联网行业的高并发特性 稳定性 有…
目录 MASA Framework - 整体设计思路 MASA Framework - EventBus设计 MASA Framework - MASA Framework - DDD设计(1) DDD 领域驱动设计是一个有关软件开发的方法论,它提出基于领域开发的开发模式,基于DDD理论,我们可以设计出高质量的软件模型. 它围绕业务概念构建领域模型来控制业务的复杂度,解决软件难以理解和演化的问题. 微服务 微服务是一种架构风格,通过进程间通讯.容错和故障隔离等方式,实现去中心化的服务治理. DD…