架构设计 | architecture design

一、Remix 架构 | Remix Architecture

1、分层架构 | layered architecture

 

Remix IDE的架构,大体分三层,第一层基础库,包括 engine-web、remix-libs和react;

第二层为插件层,实现各种功能;第三层为应用层,将插件整合在一起形成一个应用。

用户可以通过激活或者禁用插件来实现功能的按需加载。

 

基础层:

engine-web: 插件引擎,提供插件注册表和插件之间通信链路

remix-libs: 基础功能库,包括solidity代码静态分析工具,solidity语法树解析工具等

react: UI库

 

插件层:

editor-plugin: 编辑器插件

terminal-plugin: 控制台插件

file-manager-plugin: 文件管理插件

main-panel-plugin: 主面板区插件

layout-plugin: 布局插件

compile-and-deploy-plugin: 编译和部署插件

 

应用层:

remix-app: Remix IDE应用

2、engine-web 原理 | engine-web principle

Engine管理0-n个插件,插件分IFrame插件和WebWorker插件,不同类型的插件

隔离机制和通信方式不一样。

3、engine-web 插件通信原理 | engine-web plug-in communication principle

普通插件直接通过JS的函数通信,IFramePlugin使用window.postMessage通信,

WebWorkerPlugin也使用window.postMessage通信。

二、Move Online IDE 架构 | Move Online IDE Architecture

 

1、方案1 | plan 1

这个方案将不同Move链的编译和部署实现为不同插件,用户通过安装插件的方式来支持

Move的开发。

2、方案2 | plan 2

这个方案复用Remix的插件架构,实现自己的move-libs,内置move相关插件,

替换应用层实现move-ide,实现开箱即用。

 

3、方案对比 | Scheme comparison

 

方案名称

优点

缺点

方案名称

优点

缺点

方案1-外置插件

  • 代码库小

  • 升级方便

  • 每个新用户都需要安装一遍插件

方案2-内置插件

  • 开箱即用

  • 新功能可控

  • 代码库大