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.