2

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

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

编写前端而不是简单地链接库有什么优势?

4

3 回答 3

6

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

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

当然,使用外部通信通道会降低性能。但这种脱钩的好处是相当可观的。

于 2010-09-03T20:13:04.967 回答
1
  1. 您可以升级后端而无需重新编译程序。
  2. 如果后端崩溃,它可能不会带您的程序使用它。
于 2010-09-03T20:17:02.940 回答
0

据我所知,可执行文件的唯一用途是用于测试目的。您可以将此第三方库作为可执行文件运行,以了解所提供的各种 API 的行为,以便您可以从代码中更好地了解其用法,并了解它们如何处理各种输入。之后,您会将其链接到您的进程,以便库调用位于进程的地址空间内。如果你只是同时运行 2 个可执行文件,你也会有 IPC 开销。

于 2010-09-03T20:12:42.113 回答