Как бы вы скомпилировали / спроектировали многоуровневое приложение с различными наборами функций? - PullRequest
2 голосов
/ 08 декабря 2008

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

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

1 Ответ

4 голосов
/ 08 декабря 2008

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

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

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

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

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

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

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


Еще один способ, который я видел в PC Games для демонстрационных дисков, - это иметь цель для компиляции для каждого уровня. </p> <p>#DEFINE TIER_NORMAL 1</p> <p>#DEFINE TIER_LITE etc.</p> <p>then</p> <p>#ifdef TIER_NORMAL </p> <p>do tier normal stuff</p> <p>#endif

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

...