过程比库更好的情况
最近,我与一位同事争论了如何通过引入第三方库作为该应用程序的依赖项来扩展关键应用程序的功能(由高度重要的功能组成)。 以下是向应用程序提供该功能的两种基本方法。 图1:作为库的能力与作为另一个过程的能力 将功能添加为第三方库–在这种方法中,新功能被添加为程序的内部编译依赖项。 将功能用作另一个过程–在这种方法中,新功能将不是内部编译依赖项。 它是单独编译的,将作为另一个进程运行。 新功能可以用作该特定过程公开的服务。 如果我们要将此功能添加为应用程序的主要功能或作为主要功能的扩展,我会同意我同事的建议。 但是,我们的情况如下。 该应用程序的主要预期功能应该是经过良好测试的最少组件。 新添加的功能经常更改。 因此,需要频繁部署。 不能假定环境是同质的。 我同事的一个论据是, 引入另一个进程将给系统带来负担,因为即使我们不经常使用该进程,我们也需要为其分配资源。 但是,当使用库时,它将成为我们程序的内部编译依赖项,这通过引入更新的代码行而增加了另一种复杂性。 图2:地址空间正被第三方库和进程破坏 图3:运行时正被第三方库和进程崩溃…