我有使用 Spring 开发 java web 应用程序的经验,但在 SOA 领域却没有那么多经验。我正在阅读有关 SCA- SCA4J -http://www.service-conduit.org/user-guide.pdf http://www.service-conduit.org/user-guide.pdf- 其中很多看起来与 Spring 非常相似。
我试图了解 SCA 在什么情况下有用,但仍然不明白 SCA 相对于独立使用 Spring 提供了哪些功能/好处。
我发现了这篇旧博客文章 -http://rajith.2rlabs.com/2007/08/05/sca-vs-spring-a-reply-to-dans-post/ http://rajith.2rlabs.com/2007/08/05/sca-vs-spring-a-reply-to-dans-post/- 但 SOA 术语对我来说并没有什么特别突出的地方。
如果有人能够给出更适合 Spring 开发人员的解释(他们在 SOA 术语/方法论领域非常新手),我将不胜感激。
Thanks
我对 Spring 不是最了解,但由于在 IBM 的 WebSphere Integration Developer IDE 及其部署到的环境(WebSphere Enterprise Service Bus 和 WebSphere Process Server)中使用过 SCA,所以对 SCA 非常熟悉。
这实际上都与抽象和允许开发人员专注于最重要的事情(业务逻辑)的想法有关。我们都熟悉面向对象编程的概念以及该抽象如何更好地代表“现实世界”。随后出现了 Web 服务和面向服务的架构方法。 Web 服务通过减少逻辑背后的语言依赖来进一步抽象我们的逻辑。现在,C++、.Net、Java、甚至 RPG、COBOL 或其他任何东西都可以支持我们的 Web 服务。我们可以让语言和系统以一种不依赖于 CORBA 和库之类的方式相互通信。
SCA(服务组件架构)试图将 SOA 提升到一个新的水平。它尝试抽象用于与另一个系统或服务通信的协议和地址。原因如下:在使用 Web 服务时,作为开发人员,您仍然需要使用协议并编写或挂钩大量样板代码。你得知道你是http还是https。您必须知道您是否(在 Java 世界中)JAX-RPC、JAX-WS 2.0、JAX-WS 2.1、JAX-WS 2.2 甚至 JAX-RS(基于 REST)。您需要知道您使用的是 JSON、XML 还是 SOAP,如果是 SOAP,它是 1.0、1.1 还是 1.2?有时您甚至必须知道应用程序服务器的供应商如何实现某些功能(您不应该这样做,但情况可能如此)。如果您希望您的 Web 服务与另一个服务通信,会发生什么情况。但第二项服务恰好是基于消息传递的。这是JMS的意思吗? MQ? JMS 通过 MQ?其他?那么纯 HTTP POST 和 GET 又如何呢?
这就是 SCA 的用武之地。SCA 尝试抽象服务的端点并向开发人员隐藏协议实现。当您需要服务时,您只需通过 SCA API 查找它,然后调用该服务(我认为该方法是执行的?至少在 IBM 的 SCA 扩展中是这样)。但无论如何......现在您不必知道您正在通信的服务是 JAX-WS 2.1 或 REST 甚至 MQ。您不必知道您正在使用 SOAP/HTTP 或 JSON/XML 或 SOAP/JMS 等。 SCA 向您隐藏了这一切。它允许您将不同实现的服务相互连接,以便它们都可以通过通用的“服务接口”相互通信。
正如您可以想象的,这是现有抽象技术之上的另一层抽象和技术。但我亲眼所见,觉得还是值得深究的。我知道 IBM 和 Apache(我认为目前还没有想到的其他公司)致力于制定 SCA 标准。 (实际上 IBM 的 SCA 版本现在是基于 Apache 提出的开放标准构建的。希望其他支持 SCA 的供应商也能这样做。)
我认为值得花时间去看看。它可以帮助您不再关注基于协议的服务集成,而是关注服务的业务逻辑,这才是它们真正带来的价值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)