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
Répondre
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.
Alors, quelle est votre solution recommandée? –
@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. –
+1 pour les options et MEF. MEF est cool. –
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.
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.
Utiliser une interface avec injection de dépendance serait mieux préférable que d'utiliser la réflexion dans ce sens. – Skuld
- 1. EntityFramework logique métier sur EntitySetReference
- 2. Autorisations et logique métier d'ACL
- 3. Placez la logique métier dans Java Beans?
- 4. conception OO pour la logique métier
- 5. Conseils d'architecture: logique métier/accès aux données
- 6. Les validateurs dupliquent-ils la logique métier?
- 7. codeiginter - logique métier - contrôleurs, modèles ou bibliothèque?
- 8. Réutilisation de la logique métier de l'application MVC (DLL) dans Reporting Services
- 9. Comment consommer la logique métier héritée d'une application Silverlight?
- 10. Linq pour les entités et la logique métier
- 11. comment découpler les données de la logique métier
- 12. Méthode de couche logique métier Callling à partir de PageMethods
- 13. Refactoring pour séparer la logique métier du code derrière
- 14. Comment utiliser spring security3.0.3 pour sécuriser une telle logique métier?
- 15. Réflexions sur mon approche MVC (données + domaine + logique métier). Newb
- 16. Ruby On Rails Routage avec la logique métier
- 17. Logique métier lors de l'enregistrement dans Entity Framework
- 18. Classes imbriquées et logique métier dans un référentiel?
- 19. ASP.NET MVC: Où devrait aller cette logique métier?
- 20. Comment empêcher la répétition de la logique métier?
- 21. Sécurité de la logique métier dans les applications Web
- 22. Différencier mise à jour des entrées (objets de logique métier)
- 23. Puis-je avoir une logique métier dans le bloc Finally?
- 24. Le système de balisage doit-il interagir avec la logique de données ou la logique métier?
- 25. Est-ce la logique métier de code ou la logique de présentation?
- 26. LoginView utilisé pour la logique personnalisée
- 27. haricot personnalisée logique instanciation dans Spring MVC
- 28. Séparer les règles métier des processus métier
- 29. Objet métier et linq2SQL
- 30. Attribut d'incrémentation automatique avec une logique personnalisée dans SQLAlchemy
Avez-vous plusieurs clients différents utilisant la même instance du logiciel? Ou est-ce que chaque client utilise une instance différente? –