Как сохранить версию API, чтобы обеспечить совместимость и простоту - PullRequest
1 голос
/ 13 февраля 2012

Я разрабатываю API плагина браузера для сайта. Вот более подробная информация:

  • пользователь установит плагин для браузера на компьютере пользователя, плагин будет обновлен в будущем. например Adobe Flash это плагин для веб-браузера.
  • наш сайт запустит плагин и будет использовать API, предоставляемый плагином. например используйте API для рисования графики на холсте плагина.

Проблема, которую я пытаюсь решить с помощью версии API:

  • в будущем у другого пользователя может быть установлена ​​другая версия плагина. потому что при обновлении плагина некоторые пользователи еще не должны обновляться при доступе к нашему веб-сайту. Таким образом, пользователь A может установить плагин 1.0, а пользователь B может иметь плагин 1.1, пользователь C может иметь 1.2.
  • у нас будет один веб-сайт для всех пользователей, поэтому он отвечает за обработку разных версий API при загрузке плагина.
  • Сайт состоит из нескольких модулей, мы можем обновить модуль A и использовать последнюю версию API плагина, а затем выпустить его. В то же время модуль B может по-прежнему использовать более старую версию плагина API.

Мое первоначальное решение:

  • обеспечивает максимальную совместимость API, но мы все равно можем удалить устаревшие функции для простоты.
  • при использовании API модули веб-сайта будут использовать что-то вроде var obj = plugin.api ("1.0") или plugin.api ("1.1"), чтобы получить конкретную версию API для использования. Модули могут изменить версию, которую использовали при обновлении. конкретная версия «obj» будет согласована, но 1.0 и 1.1 могут отличаться. (немного похоже на интерфейс COM)

Вопрос к исходному решению:

  • Плагин должен поддерживать другую версию API внутри и обеспечивать совместимость. Это представит сложность внутренней реализации плагина.
  • веб-сайт должен по-прежнему обрабатывать случай, когда плагин на компьютере пользователя не предоставляет требуемую версию API.

Есть предложения / комментарии?

...