luyuanwan opened a new issue #2035: 使dubbo插件化的优化建议
URL: https://github.com/apache/incubator-dubbo/issues/2035
 
 
   ###  前言 
         
大家好,我是一名dubbo的深度使用者,在使用的过程中,发现在dubbo扩展点的设计上还留有一些小的缺陷。在说明的过程中,我会以接口org.apache.dubbo.rpc.Protocol来举例子。
   
   ###   缺陷说明
          
dubbo的扩展点可以满足新增一种实现方式的需求,比如我可以新增一种Protocol的实现(如下面的代码),用户可以在他的配置文件中使用新的实现。  
         但是却无法满足用户这样的需求:不想修改SPI默认扩展点的名字(对Protocl来说默认是dubbo),仅  
仅想替换DubboProtocol的实现,也许是用户有更好的实现想自己尝试一把,但又不想通过修改源码重新  
编译来完成,抑或者是用户发现了一个bug,但是社区又不可能马上修改这个bug立马发布一个版本,对此  
时的用户而言,他最希望能无缝替换原实现)。我有时就有这种冲动,想要替换原实现。:)
   ```java
          public  class  NewProtocol  implement Protocol{
                   //code here ...
          }
   ```
   
   ###   修改建议   微核心+插件式
          
扩展点的加载方式,全部统一按照插件方式加载。插件由一个插件生命周期管理容器维护,它们构成微核心,核心不包括任何功能,这样可以确保所有功能都能被替换,并且,框架作者能做到的功能,扩展者也一定要能做到,以保证平等对待第三方,所以,框架自身所有Extension功能均通过插件的方式实现,没有任何硬编码。
         
   ###   分包
         微内核包   包括插件管理器的接口、一些核心注解、插件接口、插件生命周期接口、事件通知接口等
         插件管理器的默认实现包   负责查找具体的插件实现(注意:插件管理器本身也是可以通过插件的形式被用户替换的哦)
         其他的功能包(比如dubbo-config,dubbo-remoting)
   
   ### 目的
        通过只添加代码来就能替换或者新增实现,且无需修改任何原始代码。

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to