java - SCA相对于Spring的优势?

标签 java spring soa sca

我有使用 Spring 开发 Java Web 应用程序的经验,但在 SOA 领域的经验并不多。我正在阅读有关 SCA- SCA4J - 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/ - 但 SOA 行话对我来说没有什么真正突出。

如果有人能给出更适合 spring 开发人员(他们在 SOA 术语/方法论领域非常新手)的解释,我将不胜感激。

谢谢

最佳答案

我不是最了解 Spring 的,但我非常熟悉 SCA,因为我曾在 IBM 的 WebSphere Integration Developer IDE 中使用过 SCA 以及它部署到的环境:WebSphere Enterprise Service Bus 和 WebSphere Process Server。

这实际上都与抽象和允许开发人员专注于最重要的事情 - 业务逻辑的想法有关。我们都熟悉面向对象编程的概念以及这种抽象如何更好地代表“现实世界”。然后是 Web 服务和面向服务的体系结构方法。 Web 服务通过减少逻辑背后的语言依赖性来进一步抽象我们的逻辑。现在 C++ 或 .Net 或 Java 甚至 RPG 或 COBOL 或任何可能支持我们的网络服务的东西。我们可以让语言和系统以一种不依赖于 CORBA 和库等的方式相互交谈。

SCA(服务组件架构)试图将 SOA 提升到一个新的水平。它试图抽象用于与另一个系统或服务对话的协议(protocol)和地址。原因如下:在使用 Web 服务时,作为开发人员,您仍然需要使用协议(protocol)并编写或 Hook 大量样板代码。你必须知道你是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?微商? JMS 优于 MQ?其他?那么纯 HTTP POST 和 GET 呢?

这就是 SCA 的用武之地。SCA 试图抽象您的服务端点并向开发人员隐藏协议(protocol)实现。当您需要一个服务时,您只需通过 SCA API 查找它,然后调用该服务(我认为该方法是执行的?至少它是在 IBM 的 SCA 扩展中)。但无论如何......现在你不必知道你正在与之通信的服务是 JAX-WS 2.1 或 REST 甚至是 MQ。您不必知道您使用的是 SOAP/HTTP 或 JSON/XML 或 SOAP/JMS 或其他任何东西。 SCA 向您隐藏了这一切。它允许您将不同实现的服务相互连接,这样它们就可以通过一个通用的“服务接口(interface)”相互通信。

您可以想象,这是现有抽象技术之上的另一层抽象和技术。但亲眼所见,我相信它值得研究。我知道 IBM 和 Apache(我认为目前还没有想到的其他公司)致力于提出 SCA 标准。 (实际上 IBM 的 SCA 版本现在构建在 Apache 提出的开放标准之上。希望支持 SCA 的其他供应商也这样做。)

我觉得值得花时间看看。它可以帮助您不再过多关注基于协议(protocol)的服务集成,而是关注服务的业务逻辑,这才是它们真正带来的值(value)。

关于java - SCA相对于Spring的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5719564/

相关文章:

java - 为什么 ConcurrentHashMap 中的 get 方法是阻塞的?

spring - Spring 中的拦截器与方面?

architecture - 是否使用企业库?

mysql - Oracle SOA BPEL 调用 MySQL 过程 - 参数号 2 不是输出参数

c - 通过 IP 地址控制设备有哪些方法?

java - 通用方法写入列表

Java 性能逐渐下降

java - 小程序 - 将读取/修改系统文件并执行系统命令

spring - 从 Spring 4 升级到 Spring 5 - NoClassDefFoundError : org/springframework/core/JdkVersion

java - 多个webapp共享的restapi的身份验证