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