OpeSumi框架旨在解决阿里经济体内部IDE产品研发的重复建设问题,满足IDE在更多垂直场景的定制能力,同时实现Web与本地客户端共用底层,让IDE研发从早期的“刀耕火种”时代向“机器化大生产”时代迈进。
整体架构为了保证框架可以同时在 Web 和 Electro 环境下运行,OpeSumi采用了一套前后端分离、通过一层抽象的通信层进行相互调用的项目结构。在 Web 上,我们使用 WebSocket 来作为通信的实现。在Electro 上,我们则是 IPC 通信。每一个通信的连接对应前后端一个独立的 DI(DepedeceIject) 容器,所以 OpeSumi的后端实现是无状态的,不同连接之间是严格隔离的。在OpeSumi内主要有三个核心进程:插件进程(ExtesioProcess)后端进程(NodeProcess)前端进程(BrowserProcess)为了保证插件的问题不会影响IDE的性能表现,插件能力上OpeSumi采用了跟 VSCode 类似的方案,通过独立的插件进程去启动插件,插件进程再通过后端进程与前端进程进行通信。OpeSumi的不同能力实现被拆分到了不同的模块内,这些模块通过 贡献点机制(CotributioPoit)、DI机制(DepedeceIject) 互相之间有较弱的依赖关系,对于一些比较核心的基础模块,如主题服务、布局服务等,也会被其他模块直接依赖。因此,在集成开发过程中需要保证一些模块的引入顺序。整体启动的生命周期如下图所示:












评论