# eventbus-util ## 源起 我过去几年一直是Vert.X的重度使用者。最近尝试在Rust上构建程序,但是github的几个相关项目都不太理想。 我的观点如下: - 相关的开发者认同Netty和Vert.X的思想,大都力图根据这思想来重新构造一套框架。在我看来, - 对于其中最关键的任务调度问题,实际上Tokio已经提供了相似且足够可用的解决方案; - 而不同的部分,恰恰与Rust/LLVM和Java/JVM各自实现特性的不同相关。用Rust结构去完整实现Netty或Vertx.X框架,反而无法清晰体现其设计思路。 - 框架的成熟度也会影响框架的应用。 - 力图从框架角度来实现EventBus Bridge,目标看起来是为使用者提供方便。但会用到EventBus本身并不会是一个单独使用的场景。如果项目提供的框架没法为除EventBus以外的部分提供一揽子的解决方案,那怎么把EventBus嵌入到整个系统中间去,反而是一个问题。 - 对于EventBus这一类应用协议,tokio-util提供了一个codec框架及有用的工具实例。这个框架与Netty及很多其它框架提供的流水线处理结构的思想并不相同。我甚至在Tokio/Rust下没有找到较为通用AsyncStream的流水线处理模式。 - 另外一个考虑是,现有的EventBus实现往往包括网络连接过程,这相当于绑定了网络连接所使用的框架。从Vert.X的角度来看,框架的选择本身就是关键问题。并且现有实现都不包括TLS协议的支持。 ## 项目目的 - 提供一组适合配合Tokio相关框架使用的EventBus工具,便于Tokio框架/应用在不影响原有架构的基础上直接构建连接Vert.X、消费EventBus消息的功能。 - 提供一种模式,将Tokio原有的codec架构扩展为一个栈式 / pipeline工作模式的codec框架。 - 不包括网络连接的相关过程,使得codec框架可以应用于任何底层的流;这同时也可以支持任何一种结构的TLS实现,或其它的字节流、协议流形式。 - 同时提供一个实现的例子。 上述实现都是工具式、非侵入式的,可以很容易的匹配到现有的Tokio相关项目中,不会对项目架构产生影响。 ## 特别说明 本人主要是Java/Kotlin程序员,可能在Rust方面的思路不够开阔。如有意见、问题,请不吝赐教。