【问题标题】:Web service vs JAR - is one approach better than the other?Web 服务与 JAR - 一种方法比另一种更好吗?
【发布时间】:2011-11-22 20:44:37
【问题描述】:

我们的容器 (Tomcat) 上有多个 Web 应用程序,它们彼此不交互,但它们共享相同的数据模型。一些基本的数据访问操作在多个 web 应用中使用,当然我们不希望在多个 web 应用之间重复相同的代码。

对于这种情况,是构建一个库来提供通用功能还是将这些功能公开为 Web 服务更好?

使用库,用户必须提供数据源才能访问数据库,而 Web 服务将是自包含的,并且有自己的日志记录。

我的问题类似于this SO question,但性能不是问题——我认为在同一个容器上使用 Web 服务将远远满足我们的需求。我很想知道是否有解决此问题的标准方法以及一种方法是否比另一种更好 - 我确定我没有考虑所有因素。

谢谢。

【问题讨论】:

标签: java web-services web-applications


【解决方案1】:

我会把它们变成图书馆。这将减少您因网络流量而导致的任何性能损失,并且通常可以更轻松地访问您的应用程序(因为您的库不能像网络服务器一样“关闭”)。如果您使用此库的应用程序不需要网络连接,那么您将能够完全摆脱网络连接限制。

如果您认为您可能希望向您的用户公开这个库的某些功能,您应该考虑围绕这个库创建一个网络服务。

【讨论】:

  • +1 - 以后很容易让它成为网络服务。是否公开为 Web 服务取决于组织和运营的限制和目标。
  • 虽然这是真的,但 OP 指出性能不是问题。
【解决方案2】:

如果它只是一个具有一些非持久性操作(非副作用计算等)的模型,我将使用 jar 库。如果它更像是一项服务(DB/Network/... 操作),我将创建一个单独的 Web 服务。如果你有很强的性能要求,本地库是唯一的解决方案。 您也可以使用接口来实现它,并在清楚时更改实现,使用什么。

【讨论】:

【解决方案3】:

Web 服务在 CPU 和代码库方面肯定会有自己的开销份额。如果您不在每个项目中复制相同的 jar,则可以考虑将其移动到服务器 lib,以便在更新后每个 webapp 都会得到更改。但是这种方法也有一个主要缺点,假设您在模型 jar 中进行了一些不向后兼容的更改并更新了一个 webapp 以使用较新的模型,那么您肯定必须更新所有其他 webapps 才能适应在模型 jar 中所做的更改普通罐子。您不能从同一个服务器库运行多个版本。您可以在每个 webapp 中打包适当版本的 common jar,但是即使是 common(模型)jar 中的微小更改,您也必须重新打包和部署所有 webapp。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-08
    • 2021-04-24
    • 2016-06-24
    • 2015-08-19
    • 2021-07-12
    • 2023-04-03
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多