8

我找到了一本书“Spring DM in action”。当我开始查看 Spring for OSGI 的最新版本时,我发现 Spring 已经停止了这个项目。

由于我有一些在 Spring 中开发的经验,我想了解我应该继续阅读 Spring 和 OSGI 还是切换到 Spring Boot 作为创建模块化应用程序的方式?

4

3 回答 3

7

我想写一个评论,但它没有给我足够的字符。

如果你需要 OSGi 的模块化和动态化,spring DM(现在的 Gemini Blueprint)是一个不错的技术。我们用它来创建一个带有插件基础设施的高性能的面向消息的中间件。需要插件基础设施,因为客户希望能够在运行时通过 Web 界面添加/替换/更新模块和更改路由。每条消息还通过 0-N groovy-scripts 进行转换(存储在 db 中,在运行时可更改)。处理引擎基于弹簧批处理和弹簧集成。

因此,如果您有 OSGi 的真实用例,它可能是一项不错的技术。

但大多数时候人们试图用它来分离一个单一的 web 应用程序的层,这没有用,而且给你的工作比利润更多。有一次我看到一种方法,开发人员使用 OSGi 将他的域模型的每一组分成一个小模块。这对您的应用程序设计造成的损害超过了您可以从中获利的程度,因为利润为零。

此外,这本书可能是一个不错的主意,可以为您提供有关“如何开发”软件的不同方法。

于 2015-03-02T22:39:14.380 回答
1

到标题问题:肯定是“OSGi”。OSGi 服务是微服务绰号的非常(最?)自然的候选者。

到您的帖子内容:

我必须跳到这里,说“两者”。OSGi,恕我直言,是 Java 发生的最好的事情,因为......好吧,也许永远。为什么?它恳求您通过促进更小、更模块化的代码片段的生产来遵循更好的设计实践。

我也喜欢 spring-boot,但我发现它更适合(读作“很棒”)编写客户端应用程序。

关于你对 Spring 的体验——不要害怕。如果您习惯于 Spring XML 配置,您会发现蓝图语法在大多数情况下是相同的……并且您仍然可以在 OSGi-leveraging 系统中广泛使用各种 spring 部分。

仅供参考 - 我是从开发几个植根于 OSGi 的大型系统的角度说的(以及一些涉足典型 WAR/servlet 部署的荒野)

于 2015-10-14T12:33:18.340 回答
-1

问题在于,这是制作模块化应用程序的两个完全不同的概念。

OSGI 是一个比 boot 或 spring 低得多的巨大系统。它为您提供了一组不同的工具来模块化应用程序,并在开发时提出了非常不同的挑战。

阅读究竟什么是 OSGI、什么是 Boot 以及它们解决了哪些问题。如果阅读后您不知道该选择哪个工具,请选择 Boot。

于 2015-03-02T22:29:54.970 回答