- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们目前正在考虑用 ESB 或一些类似的工具替换我们的一个应用程序,并寻找一些关于如何最好地实现这一目标的见解。
我们目前有一个独立的服务,可以使用不同的外部服务和数据源/与之交互,其中一些通过 SOAP Web 服务交付,而另一些我们仅使用数据库连接。该服务通过 SOAP 公开,我们有其他应用程序使用该服务,但与其紧密耦合,现在我们还有其他应用程序需要使用一些外部服务,并希望将其全部替换为 ESB 或某种 SOA 平台。
用 ESB 替换这个“外部”服务集成层的最佳方法是什么?我们正在考虑拥有一个“全局”合约/API,其中我们使用的所有服务都作为一个合约公开,其中我们使用的所有可能的操作和数据结构都在一个命名空间下公开,这是否是最好的方法接近这个?如果是的话,是否有任何工具可以帮助我们自动化这个过程,或者我们基本上必须手工制作这个合约/API?这也意味着,对于底层服务/API 的任何更改,我们也必须更新这个新的 API。
如果没有,那么我看到的另一个选择是基本上使用“ESB”作为“代理”层,其中我们的所有源都按原样公开,因此我们最终会得到几个不同的“合约”/API端点,但我并没有真正看到其中的值(value)。
此外,考虑到上述内容,什么是完成这项工作的最佳工具?成熟的 ESB 是否太过杀伤力,或者我们是否可以使用 Apache Camel 或 Spring Integration 之类的工具来推出自己的 ESB 更好?
更多细节:
我们目前正在集成超过 5 种不同的外部服务, future 还会集成更多服务。
目前只有几个应用程序使用我们当前的应用程序,但将来的其他几个应用程序/系统将需要使用其中一些外部服务。
我们目前在这些服务之间使用单一通信方法 (SOAP),但某些应用将来可能会使用发布/订阅消息传递,尽管 SOAP 仍将是使用的主要协议(protocol)。
我是 ESB 集成的新手,因此如果我误解了这些技术以及它们要解决的问题,我提前表示歉意。
任何帮助/提示/指示将不胜感激。
谢谢。
最佳答案
您需要投入一些关于您希望随着时间的推移实现的目标的设计思想。
引入 ESB 有多种好处和潜在的陷阱。
以下是一些典型的好处/用例
当您的应用程序难以更改或具有截然不同的发布周期时 - 那么它是 convenient中间有一个可以快速采用更改的 ESB。当您的组织购买大量 COTS 产品和云服务时,这种情况很常见,这些产品和云服务可能会在第二天进行更新,从而破坏当前的 API。
当您需要将数据从一个主数据系统调整到多个其他系统,并且它们可能不支持相同的接口(interface)时,即 CRM 系统可能希望在数据可用时立即通过 Web 服务导入数据,而 ERP 希望通过数据库/临时表和生产系统需要每个周末通过 FTP 交付的平面文件中的数据。为了保持主数据系统干净且易于维护,只需在主数据系统中实现一个集成服务,然后将该接口(interface)适配到 ESB 平台内的各种其他应用程序即可。
聚合或拆分来自不同来源的数据以保护您的敏感系统可能是一个用例。假设您有一个旧系统,一次可以进行少量信息更新,并且不值得升级该系统 - 那么可以使用集成解决方案 aggreggation或splitting或者节流可能是一个很好的解决方案。
其他好处和用例包括跟踪和 wire tap 的能力系统之间传递的每一条消息 - 甚至可以与商业智能工具一起使用来收集 KPI:
概念性 ESB 还可以引入 canonical message用于所有需要通信的服务的格式。如果许多应用程序与其他几个应用程序共享相同的数据(不仅仅是点对点),那么规范消息格式的好处可能会超过成本(成本可能很高)。 ESB 服务器可能是 useful处理规范数据,因为它通常非常擅长从一种格式映射到另一种格式。
但是,在没有计划的情况下引入 ESB 并不是一件好事,因为它会带来开销 - 您需要另一台服务器来保持事件状态,您可能需要另一个团队来了解所有数据流。您需要对集成产品有特定的了解。最后,您需要能够对其进行一些治理,以便您的 ESB 计划不会偏离您预见的目标/ yield 。
您应该选择一些您熟悉的技术 - 或者您认为您可以熟悉的技术。 Apache Camel 确实非常强大,也是我最喜欢的集成引擎 - but it's not an ESB因为它不附带可用于部署/管理/监视集成服务的运行时。您可以将它与大多数 Java EE 应用程序服务器一起使用,甚至更好 - Apache ServiceMix (= Karaf + Camel + ActiveMQ + CXF ) 是为此任务构建的。
Spring 集成也是如此 - 您需要在某个地方运行它,应用程序服务器或其他地方。
有大量不同的产品(开源产品和商业产品)可以完成这些任务。
关于apache-camel - 如何为不同的外部服务/应用程序设计/开发集成层或总线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17587185/
我们正在创建一个 n 层 Silverlight LOB 应用程序,并且正在考虑使用 .NET RIA 服务。我们不清楚这与我们当前的 WCF 服务 API 的关系在哪里。我们当前的架构是: 银光
上下文:我在celery + rabbitmq堆栈上有一个主工作系统。 系统已docker化(此处未提供worker服务) version: '2' services: rabbit:
我是 Windows Azure 新手,我正在尝试将我的 Web 应用程序部署到 Windows Azure。在我的应用程序中,我使用了一些 Web 服务,现在我想知道如何在 Windows Azur
因此,根据我对服务的了解,自定义对象似乎是写入服务以返回数据的方式。如果我正在编写将用于 1) 填充数据库或 2) 为网站提供信息的服务,是否有返回数据集/数据表而不是包含所有这些的自定义对象列表的用
我在 google 和 stackoverflow 上都找过答案,但似乎找不到。我正在尝试将 azure 实验的输出获取到应用程序。我使用 ibuildapp 和谷歌表单制作了该应用程序。如何使用 g
我不小心删除了 kubernetes svc: service "kubernetes" deleted 使用: kubectl delete svc --all 我该怎么办?我只是想删除服务,以便
我正在努力确定解决网络服务问题的最有效方法。 我的情况:我正在开发一个 Android 应用程序,它通过 Web 服务从 mysql 数据库(在我自己的服务器 PC 上)存储和检索数据。用户按下提交按
我一直在翻阅 Android 文档,我很好奇。什么时候绑定(bind)服务而不是不绑定(bind)服务?它提供了哪些优点/限制? 最佳答案 When would you bind a service
我试图从架构的角度理解 hive,我指的是 Tom White 关于 Hadoop 的书。 我遇到了以下关于配置单元的术语:Hive Services、hiveserver2、metastore 等。
我的问题:安装服务后我无法导航到基地址,因为服务不会继续运行(立即停止)。我需要在服务器或我的机器上做些什么才能使 baseAddress 有效吗? 背景:我正在尝试学习如何使用 Windows 服务
我正在努力就 Web 服务的正确组织做出决定。我应该有多个 ASMX 来代表 Web 服务中的不同功能,还是应该有一个 ASMX? 如果我有多个 ASMX,这不构成多个 Web 服务吗? 如果我只有一
我正在从事一个在 azure 平台上提供休息服务的项目。该服务由 iPhone 客户端使用,这是选择其余方法的重要原因之一。 我们希望通过 AccessControlService(ACS) 并使用
我是 Ionic 新手,正在使用 Ionic 3.9.2 我有几个终端命令来为我的 ionic 应用程序提供服务,但是,我没有发现这两个命令之间有任何区别。 ionic serve 和 ionic s
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
作为项目的一部分,我期待着问这个问题。我过去有开发和使用 Web 服务的经验,并且非常熟悉这些服务。但是,有人告诉我,作为下一个项目的一部分,我将需要使用“安全”的 Web 服务。您能否提供一些见解,
我浏览了很多关于这个问题的信息,但找不到解决方案。这里的问题是,我想使用 Apache Cordova 和 Visual Studio 连接到 wcf。因此,如果有人找到合适的工作解决方案,请发布链接
我在 Windows 服务中托管了一个 WCF(从 MS 网站示例中选取),我可以使用 SOAP UI 访问和调用方法。但是,当我尝试使用 jquery 从 Web 应用程序调用相同的方法时,我不断收
我们构建了一个 Android 应用程序,它从 Android 向我的 PHP 服务器发送 HTTP 请求。作为响应,Web 服务将 JSON 对象发送到 Android 应用程序以显示结果。 就像其
我想在 android 应用程序中调用 soap web 服务,它需要一个枚举值作为参数,它是一个标志枚举。如何从 Android 应用程序将一些值作为标志枚举传递给此 Web 服务方法? 我使用 K
我尝试在模拟器上安装 Google Play。我已按照 Google Dev Site 中的说明进行操作. 使用 ADV 管理器似乎没问题,设备的目标是 Google API 版本 22,但是当我运行
我是一名优秀的程序员,十分优秀!