2009-03-26 4 views
2

Nous avons un certain nombre d'applications de plug-ins qui peuvent tous fonctionner de façon indépendante, mais peut également fonctionner dans le même conteneur hôte. Les utilisateurs peuvent exécuter un seul conteneur hôte ou plusieurs conteneurs avec un ou plusieurs plugins.Le meilleur modèle pour l'intégration des plug-ins

Nous avons un certain nombre d ' « intégration » des cas d'utilisation où les gens veulent soit

  1. Envoyer des données d'un plug-in à l'autre
  2. Envoyer « actions » ou « commandes » à une autre application (parfois avec des paramètres)

Nous avons deux options:

  1. Avoir un puits k nown bus d'événements au niveau du conteneur que tous les plugins connaissent et peuvent publier et abonnez-vous des messages bien définis ou des objets

  2. Intégrer les dll de l'un dans l'autre et appeler l'API d'un plug-in d'un autre

  3. créer l'intégration des plugins qui connaissent les points d'intégration communs, donc chaque plugin est complètement autonome et le plugin d'intégration est la seule chose qui connait l'intégration. Cela nous a permis d'expédier chaque plugin individuel sans aucune dépendance supplémentaire.

Réflexions ou autres suggestions?

+0

Cela ressemble à une grande question, si seulement il y avait un peu plus en détail. Que diriez-vous de quelques exemples de comment deux plugins pourraient interagir? –

Répondre

1

Le Smart Client Software Factory est un peu d'orientation à considérer. C'est WinForms pour la plupart et peut-être légèrement plus complexe que la version plus récente de WPF (qui a été complètement ré-architecturée). Cependant, cela vous donnerait aussi des idées pour atteindre vos objectifs modulaires. Les liens et la documentation couvrent bien la manière dont les modules sont séparés, mais peuvent transmettre des données à travers le cadre commun.

0

Tenir compte des modèles de Microsoft et pratiques Composite Application Guidance for WPF and Silverlight. Même si ce n'est pas exactement ce dont vous avez besoin, il serait bon d'apprendre quelques méthodes pour accomplir ce dont vous avez besoin pour la modularité, comme le partage de données entre les modules.

2

je prendrais un coup d'œil à la nouvelle bibliothèque Extensibility Framework (MEF) géré actuellement développé par Microsoft. Voir the Codeplex site. Si je comprends bien, VS 2010 utilisera également ce framework pour fournir un point d'extensibilité dans Visual Studio.