2010-05-15 4 views
1

J'ai un projet où une logique métier est séparée d'un projet DLL, cette DLL contient la logique métier de ce logiciel pour un client spécifique. Maintenant j'ai un problème après qu'un autre client avec différentes règles veuille implémenter le logiciel, j'ai besoin que l'application charge la DLL appropriée selon le client utilisant le logiciel, considérant que cette DLL contient les mêmes noms de fonctions mais différents corps. J'utilise C# 3.5, y at-il un moyen de le faire?dll logique métier personnalisée

+0

Avez-vous plusieurs clients différents utilisant la même instance du logiciel? Ou est-ce que chaque client utilise une instance différente? –

Répondre

5

Oui, vous pouvez certainement. Vous pouvez brancher le projet, modifier l'implémentation des classes, conserver les signatures de toutes les classes et des membres de la classe, les recompiler, et votre logique métier se comportera comme vous le souhaitez.

Mais, c'est pas bon. Vous aurez deux branches différentes, avec des implémentations différentes, pour lesquelles vous devrez garder les signatures en synchronisation pour toujours. Et puis vous aurez un autre client, et un autre. Ce sera un cauchemar qui ne finira jamais.

Est-il possible que les différentes fonctionnalités puissent être séparées? Vous pouvez:

  • mettre la configuration dans la base de données ou les fichiers de configuration (probablement XML). Une grande partie de votre application devrait fonctionner sur la base de tables ou de fichiers de configuration, pour cette raison.
  • vous pouvez implémenter plug-ins et providers pour les endroits où le code doit être différent.
  • kindof oldschool, mais vous pouvez implémenter la fonctionnalité plug-and-play en utilisant la partie CodeDom qui compile le code (ignorez la partie concernant le code de sortie graphique). Vous pouvez ensuite mettre des fonctionnalités dans des fichiers texte facilement édités. Jetez un oeil à la Managed Extensibility Framework, construit pour ce genre de chose.
+1

Alors, quelle est votre solution recommandée? –

+0

@Robert: Il suffit de mettre quelques options. Configurer un logiciel pour travailler pour différents clients est difficile, surtout ce 2ème client. Le problème est que certains vendeurs ou boss ont pensé qu'il serait facile de "l'ajuster un peu", maintenant Mustafa doit le faire fonctionner. –

+0

+1 pour les options et MEF. MEF est cool. –

1

Coder la logique métier par rapport à une interface - IBusinessLogic.

Vous pouvez conserver les deux logiques métier dans le même assembly et utiliser l'injection de dépendance basée sur la configuration pour spécifier la logique métier à utiliser lors du déploiement auprès du client.

1

Si j'ai bien compris votre problème alors que vous recherchez une personnalisation de la logique métier. Vous pouvez l'atteindre de plusieurs façons. l'un d'eux que je décris ici.

Créez un dossier dans le répertoire de votre application pour les DLL de personnalisation. Créez tous vos objets métier via un wrapper. qui va d'abord vérifier sur la personnalisation dll pour la classe appropriée avant tout objet métier en utilisant la réflexion sinon il va créer une logique métier à partir de la classe régulière. J'espère que cela aidera.

+0

Utiliser une interface avec injection de dépendance serait mieux préférable que d'utiliser la réflexion dans ce sens. – Skuld

Questions connexes