我们的容器(Tomcat)上有多个Web应用程序,它们不相互交互,但它们共享相同的数据模型。一些基本的数据访问操作用于多个Web应用程序,当然我们不希望在多个Web应用程序之间复制相同的代码。
对于这种情况,最好是构建一个库来提供常用功能还是将这些功能公开为Web服务?
使用该库,用户必须提供数据源才能访问数据库,而Web服务是自包含的,并且拥有自己的日志记录。
我的问题类似于this SO question,但性能不是问题 - 我认为在同一个容器上使用Web服务将不仅满足我们的需求。我很想知道是否有一种标准方法可以解决这个问题,如果一种方法比另一种更好 - 我确信我没有考虑所有因素。
谢谢。
答案 0 :(得分:3)
我会让他们成为一个图书馆。这样可以减少因网络流量而导致的任何性能损失,并且通常可以更轻松地访问您的应用程序(因为您的库不能像网络服务器那样“关闭”)。如果您使用此库的应用程序不需要网络连接,那么您将能够完全免除网络连接限制。
如果您认为您可能希望向用户公开此库的某些功能,则应考虑围绕此库进行Web服务。
答案 1 :(得分:1)
如果它只是一个带有一些非持久性操作的模型(非副作用计算等),我将使用jar库。如果它更像是服务(DB / Network / ...操作),我将创建一个单独的Web服务。如果您有强大的性能要求,本地库是唯一的解决方案。 此外,您可以使用接口实现它,并在明确,使用什么时更改实现。
答案 2 :(得分:0)
Web服务肯定会有自己的开销,无论是在cpu还是代码库方面。如果你不想在每个项目中复制相同的jar,你可以考虑将它移动到服务器lib,这样一旦更新,每个webapp都会得到更改。但是这种方法也存在一个主要缺点,假设您在模型jar中进行了一些非向后兼容的更改并更新了一个webapp以使用更新的模型,您肯定必须更新所有其他Web应用程序才能适应在常见的罐子。您无法从同一服务器lib运行多个版本。您可以在每个webapp中打包适当版本的通用jar,但是为了对公共(模型)jar进行微小的更改,您将需要重新编译和部署所有Web应用程序。