1

我开始关注 osgi 的主要目的是完成我面前的任务。基本上,我将能够分发基于 Web 的应用程序并分别构建整个 Web 应用程序的特定功能,这样我就可以在 A 处部署具有功能 a、b、c 的 Web 应用程序,并在 B 处部署具有功能 a、c 的 Web 应用程序,d。

有点像如何在 joomla 中安装插件。因此,例如,当我想添加 Web 应用程序的不同方面时,我会用所有 html 和its admin部分构建一个小战争,并在主管理面板中提供此功能管理部分。

第二个问题是关于 Spring DM。最有可能我会使用 Spring,我看到 Spring DM 提供的东西似乎合乎逻辑。下载 Spring DM .1.2.1 后,我发现它的 lib 文件夹包含版本 2.5.6.SEC01 的 spring jar,但我计划使用3.1.2 所以我有点困惑,因为一切都将如何发挥得很好。

谢谢阅读

4

2 回答 2

4

我一直在做这样的练习,所以我可以在没有 Spring 开销的情况下阐明你是如何做到的。我做了一个明确的划分:所有应用程序代码都在浏览器中,所有数据处理都在服务器中。借助 HTML5,浏览器已发展成为令人印象深刻、可移植且功能强大的应用程序环境。一个具有多处理、消息传递、模块化和惊人的视觉效果。我在浏览器中使用 angularjs 作为框架。

Angular 使用中央路由表,将页面 url 的哈希部分映射到 Javascript 中的“模块”。这使得定义哪些模块是应用程序的一部分变得非常容易。服务器可以轻松控制这部分。

在服务器端,我有包含 Javascript 代码、html 片段和数据处理的包。我基于 OSGi Http Server 模型,因为它更灵活。但是,我在包中添加了对静态资源的适当支持:缓存、流式传输、范围等。

在服务器中,我使用 DS 和 bndtools 来开发捆绑包。这是一次令人印象深刻的开发体验,因为它像 Smalltalk 一样工作。你改变了,它会立即反映在服务器上。添加捆绑包,删除捆绑包,服务器继续运行。服务器重启在开发过程中很少见。

缺点是不幸的是很少有组件可以利用 OSGi。大多数组件(以 Spring 为典型示例)严重依赖类加载技巧来从中心点连接应用程序。这基本上不是模块化的。出于这个原因,我不得不开发许多利用 OSGi 服务模型的高度内聚和解耦的组件。一旦我有时间,我会将它们捐赠给一个开源项目。

于 2012-08-29T07:19:15.790 回答
0

我不确定您是否需要考虑 OSGi,至少不是直接考虑,以满足您的状态要求。你说:

基本上,我将能够分发基于 Web 的应用程序并分别构建整个 Web 应用程序的特定功能,这样我就可以在 A 处部署具有功能 a、b、c 的 Web 应用程序,并在 B 处部署具有功能 a、c 的 Web 应用程序,d。

如果这些是您的要求,那么您实际上不需要直接关注 OSGi,而是找到一个支持模块化扩展的 Web 应用程序框架。这很可能意味着框架本身使用了 OSGi。我不熟悉 Spring,但我知道 Struts 2(一个类似的 Web 应用程序框架)有一个基于 OSGi 的插件,旨在实现您的用例。

另一方面,如果您的想法是使用 OSGi,那么我建议您选择较低级别的任务,例如编写 Web 应用程序框架,而不是 Web 应用程序本身。

于 2012-09-04T17:35:59.480 回答