Организация платформ для клиента, сервера и плагинов - PullRequest
3 голосов
/ 08 июня 2011

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

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

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

Я не уверен, как правильно структурировать фреймворки, необходимые для поддержки этого.

Нужно ли иметь 2 отдельных фреймворка? Или я могу иметь 1 фреймворк, который включает в себя все заголовки и предоставляет 2 отдельные библиотеки?

Если мне нужно иметь 2 отдельных каркаса, что мне делать с заголовочными файлами, которые совместно используются всеми аспектами системы? Я не хочу копировать их в каждую платформу, чтобы избежать возможных проблем с версиями.

Будет ли приемлемым вариант для 3-й структуры заголовков?

Кто-нибудь может порекомендовать лучший способ структурирования такого рода вещей с помощью Frameworks на OS X?

1 Ответ

1 голос
/ 08 июня 2011

Framework = библиотека + заголовки для , что библиотека

В каждой инфраструктуре должны быть только заголовочные файлы для интерфейсов, которые вы хотите предоставить.Даже если общие * заголовки использовались для сборки всех трех фреймворков, вы не обязаны их объединять.

Подход с 3-мя фреймворками подойдет, даже если одна из фреймворков объединяет только общие заголовкии никакой библиотеки вообще.Пример: если вы установите Qt на свой Mac, вы увидите, что он разделен на многие фреймворки, но заголовки между ними никогда не дублируются.Существуют также некоторые фреймворки, которые содержат только заголовки и не содержат код (например, QtScript.framework).

...