我想开始研究 WCF,但说实话,在此之前我想了解更多关于 SOA 的总体知识。
我不太理解“企业服务总线”的概念,也不确定它是一种模式/方法还是一个软件。此外,“消息代理”也是如此。
除此之外,大型 SOA 框架(例如 BizTalk、WebSphere 等)如何融入其中?就此而言,WCF 如何融入其中?
简单来说,SOA 将与演示相关的组件与获取内容的机制分离。
这听起来很微不足道,但其想法是演示组件不仅应该独立于获取数据的程序,而且应该与它无关。
为了实现这一目标,创建了一个“服务”抽象层,其中包含著名的“企业服务总线”(ESB)。 ESB 是一个程序,它知道服务位于何处,以及如何调用它们以将数据转发给请求者。
如今,SOA 已成为企业级系统的标准,而不仅仅是一种选择,原因很简单,数据是从不同来源获取的(而不是“可能是”)。例如。登录/身份验证服务可以是基于集中式 LDAP 的;可以使用 JDBC 连接到托管数据库引擎来获取订单详细信息;信用卡授权可以使用支付网关 Web 服务调用;等等...使用此架构的最大优势是,如果明天可以从不同的资源获得相同的服务,那么对核心应用程序设计的影响为零或最小。
我同意,将流行语与现实脱钩可能很棘手。
SOA 旨在围绕服务定位您的业务功能。这意味着要考虑具有(通常)定义良好的接口的功能黑匣子。 SOA 通常还涉及使服务可用的前期工作 - 这将它与更老式的“集成”区分开来 - 尽管两者之间存在高度交叉。
ESB 只是一个架构层,允许您将服务连接在一起。通常它会添加连接、路由、协议转换等。它是可选的,但仍然是许多 SOA 项目的典型组件。这是一种模式,但许多软件供应商都有 ESB“产品”可以帮助实现该模式。
这些无疑是模糊的答案,一些软件/服务供应商有更具体的定义(以及实现它们的多种技术)。你必须自己做出决定。
免责声明
:我在 IBM 担任 WebSphere 顾问,但我并不是以官方身份代表他们发言。ESB 提供了一个基于标准的集成平台,在事件驱动的 SOA 中结合了消息传递、Web 服务、数据转换和智能路由。 ESB 是迈向完整 SOA 的重要步骤之一。
www.codeplex.com/esb
),BizTalk 现在可以提供基于内容的智能路由和基于行程的处理。这使得集成架构比具有重量级集成代理的传统 EAI 架构更加松散耦合。WCF 可以作为托管服务的轻量级容器,消费者可以通过 ESB 访问这些服务。
以硬件世界为例,ESB 就像 PC 中的主板,所有设备都通过总线插入主板,并且由主板来确定不同设备如何相互通信。设备只需要知道它们与总线接口的方式即可。