我对将大型应用程序(工业监控软件)重构为一堆Libraries / NuGet包而不是作为独立服务的优缺点感兴趣。人们认为它们几乎完全相同,即服务可以构建为应用程序中托管的库,也可以构建为Web服务并在应用程序外部进行管理。唯一的区别是集成(代码级别与网络SOAP或REST流量)。我不确定它是那么简单,寻找每个人的利弊。
答案 0 :(得分:0)
认为它们几乎相同......
如果你用力眯眼,我觉得它们可能看起来很相似。但只有一点。
您在Web服务中实现某些功能,您也可以在库中实现它。网络服务 提供了一个API来调用,该库也提供了一个API来调用。您可以调用Web服务 图书馆也是。
但是有一些东西是你无法通过替换Web服务来做的 图书馆。
您的库是否在.dll文件中? PHP应用程序如何使用它们?还是Java应用程序? SOAP / REST与客户端无关。您的Web服务可以使用任何技术堆栈,您的客户端可以使用任何技术堆栈。 使用库时,您将使用与编写库时相同的技术。
Web服务是可单独部署的组件。修复Web服务,部署的错误,您的10个客户端将在下次调用时获得修复。现在修复库的一些错误,然后更新所有10个客户端使用 新版本的库。
安全性怎么样?例如,Web服务可以具有数据库。您无法直接访问数据库,而是直接访问数据库 使用Web服务为您提供的API。你有一个使用数据库的库?猜猜连接在哪里 找到字符串,用户名和密码。
可扩展性如何?如果您有网络服务,您可以横向扩展它,您的客户立即受益 从改善。如果库在客户端,您将如何扩展它?通过扩展客户端?
您可以在其他地方找到类似的回复(例如Web Service vs. Shared Library),但要带回家的重点是,这取决于您正在构建什么以及为谁制作。一个不是另一个的一般替代品,反之亦然。
如果要构建一个使用所有这些组件的单一应用程序,那么如果组件是微服务或托管库,则可能对您没有关系。使用libs实际上可能更容易构建。但是,如果您的计划是实际向其他客户提供服务,那么托管的库将无法一直运行。