我目前涉及的项目要求必须在Web服务中实现业务逻辑,该服务将由表示层组件(即Web应用程序)使用。
该公司拥有一个企业服务总线,并且几乎所有开发的Web服务都是通过该总线公开的。我向周围的一些同事询问了何时通过ESB公开服务,我得到了这个答案:
所以我很好奇是否有通过或不公开Web服务的一般协议或最佳实践。任何阅读/参考都将是一个很大的帮助。
答案 0 :(得分:7)
从我的角度来看,经过4年的SOA技术经验,使用ESB总是会使系统超载,因为您要添加一个新层并使所有通信都通过它。如果没有ESB,转换(消息传递或协议)和路由并不难实现,点对点通信将具有更高的吞吐量。业务流程自动化也是如此,有一些方法可以在不需要ESB的情况下实现这一目标。
另一方面,ESB的使用在公司范围内有几个好处,但它必须在愿景和战略范围内。最好的例子之一是一家公司长期以来一直使用各种工具,每种工具都用于特定目的,并使公司分布在孤岛工作的团队中,与其他人隔离。经过很长一段时间,团队之间的互动变得复杂而缓慢。精心策划的SOA策略将有助于集成所有这些工具,并开始将它们替换为更有意义的轻量级项目。
所以,恕我直言,在没有企业战略的情况下,使用ESB来解决单个项目中的几个“问题”并不是一个好主意,并且最终将禁止 SOA 这个词在你的公司,当问题不是SOA本身而是缺乏远见和企业战略时。
我发现有关使用ESB的唯一经验法则是:在单个项目中转换,路由,业务流程自动化(有或没有人工交互)等的要求是不是SOA的症状(几乎每个项目都必须执行转换,路由和业务流程自动化),但是当这些需求是整个公司的需求时,从业务的角度考虑它是值得的,而不是技术一。如果没有业务视角,那么SOA将失败。
这是一个非常广泛的主题,讨论可以持续很长时间,我会建议你进一步阅读的几个链接: