我是一名缺乏经验的 Java 开发人员,我试图围绕一些基本的中间件/SOA 概念和技术,特别是:
- 面向服务的架构 (SOA)
- 面向消息的中间件 (MOM)
- 消息队列
- Apache Camel
- 骡子
- EJB
- 端点和路线
- 服务总线/ESB
- JMS
在网上/在维基百科上查找了每一个之后,我能够(在大多数情况下)为每一个得到体面的定义。我不明白的是所有这些技术/概念如何在后端协同工作以提供第二层/业务层解决方案。
有人可以举一个使用所有这些技术/概念的架构示例,并解释它们各自在整体解决方案中的作用吗?一旦我看到一个工作示例,我相信它会帮助我连接大部分点。
编辑:自从我添加了赏金,我得到了几个建议阅读书籍的答案。虽然我很欣赏这里的所有反馈,但我根本无法放弃 300 点声望点来回答本质上归结为“RTM”的答案(尤其是当我身无分文并且无法负担 手册!)重申一下,赏金和明确的答案将交给能够在一个有意义的、实际的例子中击中所有这些子弹的人。 这不一定是中间件纲要!!! 只需一两段,说明如何将所有这些协调使用以生成 Java 业务层解决方案。再次感谢。
最佳答案
SOA 主要原则:将系统构建为一组服务,其中每个服务都是
- 粗粒度
- 可互操作
- 松散耦合
一家公司提供了多年开发并以某种形式向用户(人类或其他系统)公开的大量业务服务(粗粒度)。设计和开发这些功能中的每一个的可能性更大,而不是牢记上述三个原则。此外,这些功能中的每一个都可能运行在不同的异构平台上,使用不同的技术等。
如果您想整合这些不同的功能从而创建新的解决方案(例如,亚马逊店面是由他们的目录服务、购物车服务等组成的新服务)怎么办?
你有两个选择:
- 牢记 3 条原则,从头开始构建新功能。但这是一项非常昂贵的努力,而且几乎永远不会成功。
- 一种有效且风险较小的替代方法是从现有的、经过验证的(经过良好测试的)服务组装/组合它。
选项 2 是 ESB 可以帮助他们支持路由、转换、监控等。 Apache Camel , Mule 是开源 ESB。 Endpoints & Routes 是这些 ESB 实现的 EIP (Enterprise Integration Patterns) 中使用的术语。当 ESB 想要路由/集成在异构平台上运行的服务时(例如,目录服务可能在大型机系统上运行,但购物车是使用在 Java 应用程序服务器中运行的 有状态 EJB 实现)。 消息队列是 MOM 中的一个概念,它在发送者和接收者之间充当消息的临时存储。这种临时存储提供了很多好处,如异步交付、保证交付等。有几个不同的 MOM 供应商,如 IBM (WebSphere MQ)、开源 ActiveMQ 等。我们可以使用 Message-Oriented-Middleware 让您的代码独立于供应商。
我试图将所有概念与一个例子联系起来。我也试图保持简短。请 提出后续问题以获得更多理解。
MOM 不是实现 SOA 的必要条件。例如如果您的所有服务都通过 HTTP 通过 SOAP 公开,那么在这种情况下您不需要 MOM。
关于java - 中间件和 SOA 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055290/