Разработка базы кода для нескольких версий продукта - PullRequest
4 голосов
/ 01 января 2009

Я знаю, что это возможно, поскольку существует так много пакетов, в которых у вас есть «Стандартная», «Профессиональная» и «Корпоративная» версия пакета ... но есть ли у кого-нибудь приличные учебные пособия о том, как использовать uISV пойдет на изучение методов, связанных с разработкой многоуровневого программного обеспечения?

Я провел несколько поисков по разным каналам, которые вы обычно используете (Google, MSDN и т. Д.), Но пока пусто.

Любые идеи / предложения будут оценены.

Thx.

Ответы [ 6 ]

2 голосов
/ 01 января 2009

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

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

С помощью .net вы можете взглянуть на пространство имен System.AddIn или материал для отражения ...

1 голос
/ 01 января 2009

Я бы пошел на более простое решение:

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

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

Недостатком является то, что вы не можете обновить пользователя со «Стандартного» до «Профессионального», просто отправив новый ключ, пользователь должен загрузить и установить новое приложение.

0 голосов
/ 01 января 2009

С точки зрения компьютерного пиратства вы можете использовать условную компиляцию (используя # define и # if ) или отдельные сборки - в основном: если функция не доступна в стандартной или пробной версии, выполните не отключать его, но полностью удалить.

Если вы пытаетесь работать с каким-то глобальным перечислением "LICENSETYPE {Standard, Enterprise}", имейте в виду, что Crack.net существует, что позволяет легко его изменить.

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

0 голосов
/ 01 января 2009

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

0 голосов
/ 01 января 2009

Это зависит от того, какие функции вы хотите запретить пользователю. если все ваши функции независимы, то решение Bramha является хорошим, но если ваши функции нет, то это целая другая история, вам нужно разработать внутреннюю «структуру», которая позволит абстрагировать каждую функцию.

0 голосов
/ 01 января 2009

Возможно, вы захотите взглянуть на безопасность на основе ролей (при условии, что это веб-приложение) в .Net Membership Provider. Вы можете добавить роли «Уровень 1» и «Уровень 2» или добавить роль для каждой функции, которую уровень позволяет пользователю. Затем на странице, которая реализует многоуровневую функцию, вы отображаете ее, если user.IsInRole ("featurename").

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