2011-07-04 12 views
1

J'ai développé une application (par exemple, disons que c'est une application de carte de membre),
où l'utilisateur glisse sa carte de membre et l'application récupère leurs détails, trouve leur histoire des achats, calcule ce taux d'actualisation qu'ils méritent etc.
l'application fait également « mise en correspondance de règle »: la détermination du taux d'actualisation selon des règles différentes en fonction de l'ancienneté, solde bancaire etc.comment partager des classes et des fonctionnalités entre deux applications

maintenant, on m'a demandé de créer un nouveau module/application dans lequel l'utilisateur glisse sa carte et le système affiche ensuite des informations promotionnelles en fonction de l'appariement des règles (ie jewlery commercial si votre solde bancaire est> 5.000 $, ou commercial pour des plaques de lisence personnalisées si votre profession listée est 'm.d' etc.).

Maintenant, les deux applications ne sont liées dans un sens que:
* ils utilisent une partie du même modèle de domaine (l'entité Member)
* ils partagent certains des mêmes fonctionnalités (récupération des informations de membre de détails de la carte , l'appariement des règles et la gestion des règles)
* l'application commerciale doit récupérer des informations à partir de l'application principale (détails des membres)
* aussi, je voudrais que les opérations 'infrastructure' développées pour que mon application soit disponible l'application commerciale (comme la capacité de journalisation ControllerBase ou httpModule qui gère la création de session et la destruction-session-par-requête).

mon application existante est une application (assez) simple MVC/n-tier. Ma meilleure idée quant à la façon d'aborder cela, est d'avoir l'application commerciale comme une application totalement différente, qui communique avec l'application principale (en utilisant les services wcf/web) afin de récupérer les détails des membres.

Je veux aussi avoir quelques classes communes (comme Member ou ControllerBase) partagées par les deux applications.
Pour ce faire, le plus simple serait de créer une DLL contenant Common qui contiendra tout ce que je souhaite partager.
mais ma préoccupation dans ce cas est que la dll Common serait tout simplement se transformer en un méli-mélo de bric et de broc, sans aucune relation cohérente (EntityBase et ControllerBase et ViewBase dans le même dll ??)
toutes les pensées au sujet mentionné ci-dessus solution, ou sur le sujet en général sont les bienvenus.

p.s. cela ne devrait pas vraiment importer, mais les technologies que j'utilise sont C# 3.5 (bientôt 4.0), nHibernate pour la persistance, winforms pour les terminaux où les clients scannent leurs cartes et un site web jQuery pour l'administration.

Répondre

1

Vous avez raison d'avoir des inquiétudes à propos de l'utilisation d'une DLL commune, car elle pourrait très rapidement se transformer en désordre. Je suggère d'utiliser plusieurs DLL partagées (aussi peu ou autant que vous le souhaitez), diviser logiquement. Vous allez vous retrouver avec plus de projets et de références, mais je ne vois pas cela comme un problème.

Questions connexes