2008-12-08 2 views
2

В ситуации, когда у вас есть что-то вроде Lite, Normal, Ultimate tiers и перекрывающихся наборов функций, которые могут иметь уменьшенную функциональность, что было бы самым простым способом сохранить вещи простой с точки зрения развития?Как бы вы скомпилировали/разработали многоуровневое приложение, имеющее разные наборы функций

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

ответ

4

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

1) Выясните, какие функции являются общими для всех уровней. Общие функции не нуждаются в какой-либо логике для них, поскольку они доступны для всех.

2) Характеристики, которые не являются общими, должны быть разбиты гранулированным способом. поэтому их можно включить/отключить по одному за раз.

3) Назначьте матрицу признаков уровням.

У нас было лицензионное приложение, которое было в основном пакетом флажков всех подробных функций. Выбор «Lite» будет проверять соответствующие поля, поэтому, когда код лицензии был сгенерирован, он будет включать эти функции.

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

В коде, который вы только что указали, функция погоды включена, и пусть сервер лицензирования определяет, на каком уровне пользователь включен.


Другой способ, который я видел в компьютерных играх для демонстрационных дисков, - иметь цель компиляции для каждого уровня.

#DEFINE TIER_NORMAL 1

#DEFINE TIER_LITE etc.

then

#ifdef TIER_NORMAL

do tier normal stuff

#endif

Обратите внимание, что вам необходимо отслеживать 3 разных бинарных файла, что может быть больно. Но у вас нет кода, на который пользователь не платил. Может быть проще в меньшем проекте, чем получить лицензионный сервер.

+0

Вот что я понял, спасибо за ответ. – JGeiser 2008-12-08 21:16:48