实现前端而不是链接库的优点

Law*_*and 2 c++ linker frontend

我想写一个播放MP3的C++程序.在可用的MP3解码库中,我选择了mpg123.

我注意到,除了能够链接libmpg123并在我的代码中进行必要的函数调用之外,该库还包含一个后端/前端接口,使我能够与它的可执行文件通信,因此不必包含它的代码在我的程序中.

编写前端而不是简单地链接到库有什么好处?

Gab*_*ier 6

大多数优点来自可执行文件和库可执行文件之间的进程分离:

  • 提高安全性和安全性:如果磁带库崩溃,这不会导致应用程序崩溃.
  • 隐式多处理:由于两者都在不同的进程上运行,因此几乎是免费的.
  • 网络的易感性:如果进程之间的通信是使用管道或stdin/stdout完成的,您可以轻松地将它们转发到套接字并在单独的机器上运行可执行文件.
  • 语言中立:您可以使用您想要的任何编程语言.

当然,通过使用外部通信信道存在性能损失.但是,这种脱钩的好处可能会令人印象深刻.