2012-08-28 34 views
1

我已经开始寻找osgi,主要目的是实现我面前的任务。基本上,我将能够分发基于Web的应用程序,并以这种方式分别构建整个Web应用程序的特定功能,以便我可以在具有功能a,b,c的我的web应用程序中部署,并在B中部署功能a,c ,d。关于Spring DM,OSGi和web应用程序的问题

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

第二个问题是关于Spring DM。最有可能我会使用Spring,并且它看起来合乎逻辑,我看到了Spring DM提供的功能。下载Spring DM .1.2.1后,我发现它的lib文件夹包含版本2.5.6.SEC01的弹簧罐,但我计划使用3.1.2所以我有点混淆,因为一切都会一起玩。

感谢您阅读

回答

4

我只是一直在做这项工作,所以我可以提供一些线索你如何做没有春天的开销。我已经做了明确的划分:所有应用程序代码都在浏览器中,所有数据处理都在服务器中。使用HTML5浏览器已经发展成为一个令人印象深刻,便携且功能强大的应用程序环境。一个有多处理,消息传递,模块化和惊人的视觉效果。我在浏览器中使用angularjs作为框架。

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

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

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

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

+0

mmmh谢谢你的回复,我真的很感激。只需在基于Eclipsse indigo的SpringSource Tool Suite中安装'bndtool'。我计划在Spring的前端/后端使用'ZKOSS'.So从你所说的话来说,我不可能将web应用的部分(作为特性)放在另一个bunble中,而maven jar分离模型/业务逻辑/前端? –

+0

如果你只是使用包,你可以共享(和发现)任何使用服务。春天往往会让你误入歧途,因为它是在JEE模型的基础上开发的。也就是说,OSGi确实错过了一个像Spring这样的好框架,它真正利用了OSGi的优势。 –

0

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

基本上我将能够分发基于web的应用和 构建整个Web应用程序的具体功能,分别以这样的方式 ,我可以在部署我的web应用程序与功能A,B ,c,并在B 处部署特征a,c,d。

如果这些都是你的要求,那么你实际上不需要直接关注OSGi,而是找到一个支持模块化扩展的web应用程序框架。这很可能意味着框架本身使用OSGi。我对Spring并不熟悉,但我确实知道Struts 2(一个可比的Web应用程序框架)有一个OSGi based plugin意思是为了实现你的用例。另一方面,如果你的想法是使用OSGi,那么我建议你选择一个较低级别的任务,比如编写一个Web应用程序框架,而不是一个Web应用程序本身。