2008-12-08 7 views
2

Dans une situation où vous avez quelque chose comme des niveaux Lite, Normal, Ultimate et des ensembles de fonctions qui peuvent avoir des fonctionnalités réduites, quel serait le moyen le plus simple simple du point de vue du développement?Comment compiler/concevoir une application à plusieurs niveaux ayant des ensembles de fonctionnalités différents

Je n'ai travaillé qu'avec des applications disposant d'une licence monolithique, d'une licence de sous-fonctionnalité où des composants/fonctionnalités spécifiques étaient activés/désactivés ou d'une licence de siège/ressource. J'ai quelques idées, mais quelques idées fraîches seraient bonnes.

Répondre

4

J'ai travaillé sur des applications avec des niveaux de service. Bien que ce ne soit pas la meilleure façon, voici comment je l'ai vu faire.

1) Déterminez quelles caractéristiques sont communes à tous les niveaux. Les fonctionnalités communes n'ont pas besoin de logique car elles sont accessibles à tous.

2) Les caractéristiques qui ne sont pas communes doivent être éclatées de manière granulaire. donc ils peuvent être activés/désactivés un à la fois.

3) Affectez une matrice d'entités aux niveaux.

Nous avions une application de licence qui était essentiellement un tas de cases à cocher de toutes les fonctionnalités granulaires. Choisir "Lite" permettrait de cocher les cases appropriées alors quand le code de licence a été généré, il inclurait ces fonctionnalités.

Au démarrage, le serveur de licences a été interrogé en toute sécurité. (Il s'agissait d'une application serveur, elle ne démarrait et n'arrêtait donc pas très souvent, et Internet était garanti) Une liste de fonctionnalités autorisées était renvoyée à l'application.

Dans le code, il vous suffit de vérifier la météo pour activer une fonction et laisser le serveur de licences déterminer le niveau dans lequel se trouve l'utilisateur.


Une autre façon que j'ai vu dans les jeux PC pour les disques de démonstration est d'avoir une cible de compilation pour chaque niveau.

#DEFINE TIER_NORMAL 1

#DEFINE TIER_LITE etc.

then

#ifdef TIER_NORMAL

do tier normal stuff

#endif

Notez que vous devez garder une trace de 3 binaires différents, ce qui peut être une douleur. Mais le résultat est que vous n'avez aucun code livré que l'utilisateur n'a pas payé. Peut-être plus facile dans un projet plus petit que d'obtenir le bon serveur de licences.

+0

C'est ce que j'ai pensé, merci pour la réponse. – JGeiser

Questions connexes