哪种SOA架构最适合Java应用程序?

时间:2022-07-01 02:41:50

I am currently working on a pretty large Java 6 application where we are looking to split some of our functionality out into a service oriented architecture.

我目前正在开发一个非常大的Java 6应用程序,我们希望将一些功能分解为面向服务的体系结构。

It seems that the primary SOA framework for the application space is OSGi and I have been looking into Felix and Knopplerfish but I wanted to make sure that this isn't my only option.

似乎应用程序空间的主要SOA框架是OSGi,我一直在研究Felix和Knopplerfish,但我想确保这不是我唯一的选择。

Does it make sense to use an actual web service protocol for our application like SOAP, even though we are not building a web app? Is this even acceptable?

即使我们没有构建Web应用程序,为SOAP等应用程序使用实际的Web服务协议是否有意义?这甚至可以接受吗?

Have any of you used an implementation of OSGi (Felix, etc.) with your desktop application? if so, how did it go? Do you know of anything better?

你们有没有在桌面应用程序中使用过OSGi(Felix等)的实现?如果是的话,它是怎么回事?你知道更好的事吗?

We're all pretty new to SOA here so any help would be greatly appreciated.

我们在这里对SOA都很陌生,所以任何帮助都会非常感激。

2 个解决方案

#1


We use Eclipse RCP as our application platform, which is OSGi based (Equinox). Our application makes usage of both the Eclipse plugins as well as pure OSGi bundles. In our case we have services that are both local to the application as well as remote (via Spring Remoting) to Java EE servers.

我们使用Eclipse RCP作为我们的应用程序平台,它是基于OSGi的(Equinox)。我们的应用程序使用Eclipse插件以及纯OSGi包。在我们的例子中,我们提供的服务既是应用程序的本地服务,也是远程(通过Spring Remoting)到Java EE服务器的服务。

In your case, OSGi may make sense for your app, but remote service protocols don't.

在您的情况下,OSGi可能对您的应用程序有意义,但远程服务协议则没有。

Also, a desktop application on its own is not considered SOA. You are simply componentizing your application, which is a good thing.

此外,桌面应用程序本身不被视为SOA。您只是将您的应用程序组件化,这是一件好事。

#2


My company uses OSGi extensively, and it works well for us, in that we can version various components and have greater control over what gets exposed from each component.

我的公司广泛使用OSGi,它对我们很有用,因为我们可以对各种组件进行版本控制,并且可以更好地控制每个组件暴露的内容。

If you envision ever wanting to run different components on separate hardware, then writing using web services (REST/SOAP/etc) makes sense. But there's a performance penalty in both sending bits from one process or network to another,and serializing/marshalling that data so it can be sent, and doing the opposite on the other side. If you don't ever think that will happen, then don't use web services.

如果您想要在不同的硬件上运行不同的组件,那么使用Web服务(REST / SOAP / etc)编写是有意义的。但是,从一个进程或网络向另一个进程或网络发送比特,以及序列化/编组数据以便可以发送它,并在另一方面执行相反的操作时,性能会受到影响。如果您认为不会发生这种情况,那么请不要使用Web服务。

#1


We use Eclipse RCP as our application platform, which is OSGi based (Equinox). Our application makes usage of both the Eclipse plugins as well as pure OSGi bundles. In our case we have services that are both local to the application as well as remote (via Spring Remoting) to Java EE servers.

我们使用Eclipse RCP作为我们的应用程序平台,它是基于OSGi的(Equinox)。我们的应用程序使用Eclipse插件以及纯OSGi包。在我们的例子中,我们提供的服务既是应用程序的本地服务,也是远程(通过Spring Remoting)到Java EE服务器的服务。

In your case, OSGi may make sense for your app, but remote service protocols don't.

在您的情况下,OSGi可能对您的应用程序有意义,但远程服务协议则没有。

Also, a desktop application on its own is not considered SOA. You are simply componentizing your application, which is a good thing.

此外,桌面应用程序本身不被视为SOA。您只是将您的应用程序组件化,这是一件好事。

#2


My company uses OSGi extensively, and it works well for us, in that we can version various components and have greater control over what gets exposed from each component.

我的公司广泛使用OSGi,它对我们很有用,因为我们可以对各种组件进行版本控制,并且可以更好地控制每个组件暴露的内容。

If you envision ever wanting to run different components on separate hardware, then writing using web services (REST/SOAP/etc) makes sense. But there's a performance penalty in both sending bits from one process or network to another,and serializing/marshalling that data so it can be sent, and doing the opposite on the other side. If you don't ever think that will happen, then don't use web services.

如果您想要在不同的硬件上运行不同的组件,那么使用Web服务(REST / SOAP / etc)编写是有意义的。但是,从一个进程或网络向另一个进程或网络发送比特,以及序列化/编组数据以便可以发送它,并在另一方面执行相反的操作时,性能会受到影响。如果您认为不会发生这种情况,那么请不要使用Web服务。