8
votes

Comment programmer trois éditions Light, Pro, Ultimate dans une solution

J'aimerais savoir la meilleure façon de programmer trois éditions différentes de mon application C # ASP.NET 3.5 dans VS2008 Professional (qui comprend un projet de déploiement Web). J'ai une édition lumineuse, pro et ultime (ou version) de ma demande. Pour le moment, j'ai tout mis en une solution avec trois versions de construction dans Configuration Manager et j'utilise des directives de préprocesseur sur tout le code (il existe environ 20 constructions de ce type dans environ dix mille lignes de code, il est donc supervisible): Xxx

J'ai lu dans Stackoverflow pendant des heures et j'ai pensé à rencontrer comment par exemple Microsoft le fait avec ses différentes éditions Windows, mais n'a pas trouvé ce que je m'attendais. Quelque part, il y a une forte discussion sur si les directives de préprocesseur sont diaboliques.

Ce que j'aime avec ces directives # si:

  • le code de différences côte à côte, donc je comprendrai le code pour le différentes éditions après six mois
  • et l'avantage spécial à ne pas donner Out code compilé d'autres versions au client.

    OK, longue explication, question répétée: Quelle est la meilleure façon d'aller?


0 commentaires

3 Réponses :


0
votes

Je suggérerais de créer les classes de base et les fonctionnalités comme normales, mais pour permettre la dérogation à ces Mathod qui serait spécifique à l'édition.

Ensuite, vous créez une assemblée d'édition léger / pro / ultime qui remplace cette méthode.

Ensuite, vous avez besoin d'une usine, instançant les types de remplacement appropriés en fonction de l'édition.

Ici, vous pouvez travailler avec l'accesseur interne et rendre l'assemblage de code interne visible par l'édition-assemblys


0 commentaires

7
votes

Je serais tenté de gérer les différences pendant Runtime avec des licences différentes et activer / désactiver les fonctionnalités à l'aide de cette configuration. Pourquoi?

  1. Il vous suffit de construire un déploiement.
  2. Vous pouvez le tester beaucoup plus facilement, plutôt que de construire 3 versions et testez ceci.
  3. Les utilisateurs peuvent mettre à niveau et simplement envoyer une nouvelle licence. Ils n'auront pas à améliorer / réinstaller.

    Vous devez peser cela contre votre préoccupation pour la distribution d'une solution que vos clients n'ont pas réellement payé (et peuvent simplement activer via une clé de licence sécurisée correctement).


1 commentaires

Merci beaucoup pour cette réponse. J'ai lu beaucoup à propos de la licence Keys et al .. Mon opinion actuelle est de mieux mettre l'effort dans la mise au point de nouvelles fonctionnalités que d'investir du temps dans la licence / obscurcissement qui complique tout et est facilement contourné par des pirates. Comme il s'agit d'une application ASP.NET, utilisée dans les sociétés: - J'envoie la bonne édition (Light, Pro ..) à chaque entreprise - et payez par année - près de la fin de la licence qu'un rappel apparaît (j'appelle aussi le Client) - Si aucun renouvellement n'est effectué, un fuseau horaire arrête l'exécution - sur le renouvellement, j'envoie une nouvelle application avec un fuseau horaire différé



2
votes

Ma première pensée consiste à diviser votre logiciel en différents modules (projets / assemblys), puis créer trois projets de configuration différents dans votre solution, une pour chaque version. Dans la configuration, vous n'incluez que les modules dont vous avez besoin.

Vous perdrez le code "côte à côte", mais IMHO ceci crée simplement des méthodes compliquées, au lieu d'un code maintenu. Utilisez des méthodes d'extension, si vous souhaitez fournir plus de fonctionnalités pour un type ou des classes dérivées.


0 commentaires