这些天因为项目的需要基于Vert.x和PF4J做了一个简单的插件式远程服务框架dfx。它是一个非常简单的小框架(或者称为微框架也行),其目的很简单:快速地将老旧Java类转变成为远程服务,降低这类工作的难度和门槛。
简单到什么程度呢?这么说吧:开发者只要实现一个指定的接口,然后将其打包成一个插件并复制到dfx指定的插件目录之下就ok了(当然,还需要修改对应的配置文件)。
至于为何选定Vert.x为支撑技术,原因在我之前的踩坑记中已经解答。而采用插件的原因则在于:
分工明确。插件开发者只需专注于业务逻辑的开发,不用去为底层各种机制(如断路器,你没看错,dfx管理下的插件天然就具有断路器功能,而插件开发者根本就没有意识到这一点!即使无意间引入了一个慢插件,也不会殃及其他插件。)烦心。
管理的需要。除了功能的扩展性,插件系统带来的一个附加好处就是有效控制了整个系统的代码。即,开发新功能时不需要将整个系统的代码clone得到处都是。从代码安全性上来讲,这无疑是绝佳的选择。同时,这还带来了另一个好处:编译速度的极大改善。要是经历过编译3天才得到一个二机制文件,那你应该明白我在说什么,;)。
对于插件系统,我选择的是PF4J,一个小巧的插件实现。
除了简单和断路器支持,dfx的还支持热更新,只是目前的方式简单粗暴:当发现任意一个变化(conf和插件目录中zip包的变化)时,会重新加载整个服务,即相当于重启。
关于dfx的详细使用和插件的开发,可以从它的README得到更多细节。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。