2012-08-09 72 views
4

我目前参与的项目要求业务逻辑必须在Web Service中实现,这些业务逻辑将由Presentation Tier组件(即Web应用程序)使用。何时通过ESB公开服务?

该公司有一个企业服务总线,并且最新开发的几乎所有Web服务都通过该总线公开。我问过一些周围的同事什么时候通过ESB公开服务,我得到了这个答案:

  • 如果有一个ESB,暴露通过它的一切:有喜欢的负载平衡和位置透明几个好处
  • 如果ESB只会充当代理服务器 - 无需消息转换 - 只是不使用它:您会重载ESB并失去性能。你最好做一个点对点的连接。
  • 如果存在协议转换(如将存储过程公开为SOAP服务),则应通过ESB公开组件。如果不存在,最好进行点对点。

所以我很好奇,如果有一个普遍的协议或什么时候通过它暴露Web服务的最佳做法。任何阅读/参考将是一个很大的帮助。

回答

7

从我的角度和SOA技术4年的经验来看,使用ESB将始终使系统过载,因为您正在添加一个新图层并使所有通信都通过它。如果没有ESB,转换(消息传递或协议)和路由都不难完成,并且点对点通信的吞吐量将有所提高。业务流程自动化也会发生同样的情况,有办法在不需要ESB的情况下到达那里。

另一方面,ESB的使用在公司的范围内有几个好处,但它必须在愿景和策略之内。最好的例子之一是一家公司长期以来一直使用各种各样的工具进行工作,每个工具都有特定的用途,并且这些公司分布在各个工作小组中,与其他小组隔开。很长一段时间后,团队之间的交互变得复杂而缓慢。一个精心策划的SOA战略将有助于整合所有这些工具,并开始替代更有意义的轻量级项目。因此,恕我直言,使用ESB只是为了在单个项目中解决几个“问题”而没有公司战略并不是一个好主意,并且最终,您的公司将禁止单词SOA,当问题不是由SOA本身而是缺乏远见和公司战略时。

拇指,我发现关于使用ESB产品的唯一规则是:转换,路由,业务流程自动化(有或没有人的交互)等的单个项目的要求是没有的症状(几乎每个项目都需要执行转换,路由和业务流程自动化),但是当这些需求成为整个公司的需求时,从商业的角度来看它是值得的,而不是技术上的。如果没有商业视角,那么SOA将失败。

这是一个非常广泛的话题和讨论会持续了好半天,我会建议你两三进一步阅读链接: