我目前正在研究一个非常大的Java 6应用程序,我们希望将一些功能分解为面向服务的体系结构。
似乎应用程序空间的主要SOA框架是OSGi,我一直在研究Felix和Knopplerfish,但我想确保这不是我唯一的选择。
对于像SOAP这样的应用程序使用实际的Web服务协议是否有意义,即使我们没有构建Web应用程序?这甚至可以接受吗?
你们有没有在桌面应用程序中使用过OSGi(Felix等)的实现?如果是的话,它是怎么回事?你知道更好的事吗?
我们在这里对SOA都很陌生,因此非常感谢任何帮助。
答案 0 :(得分:2)
我的公司广泛使用OSGi,它对我们很有用,因为我们可以对各种组件进行版本控制,并且可以更好地控制从每个组件中暴露的内容。
如果您想要在不同的硬件上运行不同的组件,那么使用Web服务(REST / SOAP / etc)编写是有意义的。但是,从一个进程或网络向另一个进程或网络发送位,以及序列化/编组数据以便可以发送它,并在另一方面做相反的操作时,性能会受到影响。如果您认为不会发生这种情况,请不要使用Web服务。
答案 1 :(得分:1)
我们使用Eclipse RCP作为我们的应用程序平台,它是基于OSGi的(Equinox)。我们的应用程序使用Eclipse插件以及纯OSGi包。在我们的例子中,我们提供的服务既包括应用程序本地服务,也包括远程(通过Spring Remoting)到Java EE服务器。
在您的情况下,OSGi可能对您的应用有意义,但远程服务协议则没有。
此外,桌面应用程序本身不被视为SOA。你只是将你的应用程序组件化,这是一件好事。