我正在处理一个服务器引擎,我不知道以什么形式分发它。它非常模块化,并且使用接口/抽象类。
如果是:
main()并调用new Server().setSomeHandler(myHandler).run())基本上,开发人员应该能够完全扩展或改变服务器的工作方式。我不喜欢把它变成一个库的想法,因为它应该是一个独立的平台,一个完整的服务器系统。
发布于 2015-03-16 22:59:45
提供一种编程方式不仅是一个可执行文件,而且是多功能的。这两种方式并不是相互排斥的。毕竟,即使开发人员提供了一个处理程序,在内部您可能仍然需要调用类似示例中的setter来实际使用该处理程序。公开这个API应该不会太困难。您仍然可以提供一个小型的启动程序,如果需要的话,它可以加载一些配置文件并将其封装在一些API调用中。
更重要的问题是,是否有预定义的扩展点可供开发人员插入他们自己的实现,还是一切都是完全模块化和可交换的?
对于提供预定义接口实现的简单方法,可以使用ServiceLoader/SPI机制。你可以用它建立一个基本的插件系统。
如果您想要创建一个平台,类似于OSGi的东西似乎更合适。在这里,您可以为细粒度组件/服务定义API/SPIs。然后,开发人员可以提供自己的模块来扩展服务器,甚至替换默认模块。
https://stackoverflow.com/questions/29087716
复制相似问题