Преимущества реализации внешнего интерфейса перед связью с библиотекой - PullRequest
2 голосов
/ 03 сентября 2010

Я хочу написать программу на C ++, которая воспроизводит MP3.Среди доступных библиотек декодирования MP3 я выбрал mpg123.

Я заметил, что, помимо возможности связываться с libmpg123 и выполнять необходимые вызовы функций в моем коде, библиотека включает в себя внутренний / внешний интерфейс, которыйпозволяет мне общаться с его исполняемым файлом и, следовательно, не включать его код в мою программу.

В чем преимущества написания внешнего интерфейса, а не просто создания ссылок на библиотеку?

Ответы [ 3 ]

6 голосов
/ 04 сентября 2010

Большинство преимуществ достигается за счет разделения процессов между исполняемым файлом и исполняемым файлом библиотеки:

  • Повышение безопасности и защищенности: если библиотека аварийно завершает работу, это не приведет к сбою приложения.
  • Неявная многопроцессорность: поскольку оба выполняются в разных процессах, это почти бесплатно.
  • Предрасположенность к работе в сети: если связь между процессами осуществляется с помощью каналов или стандартного ввода / вывода, вы можете легко перенаправить их в сокеты и запустить свой исполняемый файл на отдельной машине.
  • Независимый от языка: вы можете использовать любой язык программирования.

Конечно, при использовании внешнего канала связи снижается производительность. Но преимущества такого разделения могут быть весьма впечатляющими.

1 голос
/ 04 сентября 2010
  1. Вы можете обновить бэкэнд без перекомпиляции вашей программы.
  2. Если происходит сбой бэкэнда, он, вероятно, не забирает вашу программу.
0 голосов
/ 04 сентября 2010

Насколько я могу видеть, единственное использование исполняемого файла было бы в целях тестирования.Вы должны запустить эту стороннюю библиотеку как исполняемый файл, чтобы понять поведение различных предлагаемых API, чтобы вы могли лучше понять ее использование из своего кода и посмотреть, как они работают с различными входными данными.После этого вы должны связать его со своим процессом, чтобы вызовы библиотеки находились внутри адресного пространства вашего процесса.Если вы одновременно запустите исполняемый файл 2, у вас также будут накладные расходы IPC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...