【问题标题】:Using webservices to connect front-end and back-end, a good idea?使用 webservices 连接前端和后端,好主意吗?
【发布时间】:2011-01-09 03:22:05
【问题描述】:

这个项目在一个 JVM 上运行前端 Web 服务器,在另一个 JVM 上运行后端。为了让 Web 在后端调用任何 biz-logic 方法,它必须通过 Web 服务 (JAX-WS) 进行调用。

我可以理解,对于需要与其他系统集成的应用程序部分,通过使用 web 服务分发服务是一个好主意,但我还没有看到一个系统 每个 biz-logic 调用作为 Web 服务公开。

性能?交易?总的来说是个好主意?

【问题讨论】:

    标签: java architecture enterprise


    【解决方案1】:

    我是 KISS 原则(保持简单愚蠢)的忠实拥护者。在 JVM 之间拆分应用程序并创建 WS 接口层需要有一个令人信服的理由。可能的原因包括需要以不同于业务层的方式扩展表示层。 JVM 调优差异,例如不同的垃圾收集算法。或者需要一个 DMZ。

    如果不存在令人信服的理由,那么分离会增加不必要的复杂性,这很可能会导致从开发到运营的麻烦。

    将业务逻辑暴露给其他应用程序的需求并不代表在 JVM 之间拆分层的令人信服的理由。业务逻辑仍然可以通过 WS 公开给外部应用程序,而您的表示层物理上驻留在同一个 JVM 中,并通过业务服务的 POJO 实现直接引用业务层。虽然 POJO 实现会有一个 Web 服务包装器,将业务服务公开为 Web 服务。

    【讨论】:

      【解决方案2】:

      一般来说,如果您的“后端”(我称它们为“服务”)打算被其他应用程序重用,那么这种方法是一个好主意。

      请注意,Web 服务只是系统之间的实际传输/消息接口。这里还有很多其他选项可以处理两者之间的接口——Java RMI、Spring 远程处理、REST 等。设计良好的服务解决方案将不知道您使用哪种消息传递技术(并且应该能够支持多个) .

      【讨论】:

        【解决方案3】:

        您拆分应用程序的想法并不少见。当您的大部分服务都打算被重用时,最好将它们部署为单独的应用程序并将其解耦,以便其他系统可以轻松访问它们。它肯定会对性能产生一些影响,但从技术上讲,它不应该对事务产生任何影响(除非您需要在可以使用 WS-Reliability 的服务调用之间进行事务)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-07-06
          • 2020-12-03
          • 1970-01-01
          • 1970-01-01
          • 2022-10-06
          • 2023-01-30
          相关资源
          最近更新 更多