2009-11-27 2 views
0

Est-il possible de charger des "parties Web" externes sur un site Web ASP.NET? Je voudrais faire des DLL autonomes contenant un User-Control ou une page à inclure dans un site principal. Comme une architecture de plug-in pour les sites Web.Pouvez-vous avoir une architecture de plugin dans ASP.NET?

Les seuls exemples que je peux trouver pour lier le contrôle utilisateur au projet principal, vous devez avoir une référence "dure" au contrôle.

Ce que je voudrais est de définir une interface partagée que les plugins peuvent implémenter, et le site Web peut charger et afficher.

+0

Vous pouvez certainement avoir une DLL qui contient un tas de contrôles utilisateur. Et vos contrôles utilisateur peuvent bien sûr implémenter une interface de votre choix. Cependant, vous semblez vouloir plus que cela - mais je ne sais pas exactement quoi. – RickNZ

+0

Les contrôles utilisateur ne peuvent pas sembler être chargés "à la demande", comme un plugin. Vous devez inclure une référence dans le site Web hôte. Je voudrais pouvoir charger n'importe quel .dll qui implémente mon interface, sans changements dans le site Web d'hôte. –

Répondre

3

Il y a une discussion ici sur la compilation UserControl s en dll

ASP.NET UserControl class library

Pour quelque chose comme ce que vous décrivez, je recommande fortement creating custom server controls. Vous pouvez fournir une classe de base abstraite pour tous les plug-ins. Ensuite, vous pouvez rechercher un répertoire pour les assemblages et rechercher dans chaque assemblage tout ce qui dérive de ce type.

DirectoryInfo di = new DirectoryInfo(path); 
    FileInfo[] assemblies = di.GetFiles("*.dll"); 
    foreach (var assembly in assemblies) { 
     Assembly a = Assembly.LoadFrom(assembly.FullName); 
     foreach (Type type in a.GetTypes()) { 
      if (type.BaseType == typeof(PluginBase)) {      
       //load plugin 
      } 
     } 
    } 

Vous pouvez également enregistrer vos plug-ins dans votre web.config en fournissant une section de configuration comme dans l'exemple here

+0

Cela semble être une bonne solution. Devriez-vous construire complètement le WebControl en code, ou est-il possible d'utiliser le moteur de template? –

1

Plugins peut mettre en œuvre votre interface. L'interface peut définir une méthode. Cette méthode prend les entrées générales nécessaires au contexte du plugin. La responsabilité du plugin sera de renvoyer le balisage html qui peut être placé sur la page de sortie finale. De cette façon, vous pouvez élargir ceci mais compromettre les fonctionnalités du cycle de vie et de la publication, car la page n'a aucune idée de ce qui est retourné par le plugin.

+0

Aurais-je également perdu les fonctionnalités de publication si l'interface implémente le WebControl comme le suggère Bob? –

+1

Oui, vous perdrez les fonctionnalités de publication. Juste pour vous donner une idée UserControls est un mécanisme de plugin intégré fourni par asp.net. UserControl dérive de System.Web.UI.Page ce qui le rend apte à la publication. Je recommande plutôt que de réinventer la roue que vous devriez essayer de spécialiser UserControls en créant votre propre classe de base UserControl et la rendre disponible pour les développeurs de plug-ins. Il peut être si spécial qu'il peut exposer des méthodes et des accessoires qui sont couplés à votre architecture d'application et à votre logique métier principale. –

1

Je pense que vous voulez avoir une infrastructure capable de charger des modules découplés. (Inversion de contrôle, ou IoC)

en savoir plus sur WCSF Web Client Software usine www.codeplex.com/websf

si vous voulez bien l'exemple de code sur l'application web design à l'approche modulaire s'il vous plaît télécharger Cuyahoga

Cuyahoga est une open source .NET web framework de site. Il offre des fonctionnalités de gestion de contenu et a une approche modulaire

après tous lu le ASP.NET 3.5 Social Networking très beau livre.

Créer un complet, réseau social de qualité entreprise à l'aide ASP.NET 3.5 En savoir des sujets clés nouvelle ASP.NET dans une pratique, façon pratique: LINQ, AJAX, C# 3.0, n-tiers des architectures et MVC Construire listes d'amis, systèmes de messagerie, profils utilisateur, blogs, messages conseils, des groupes, et plus Rich avec le code exemple, des explications claires, des exemples intéressants, et des conseils pratiques - un vraiment mains sur le livre pour les développeurs ASP.NET

www.packtpub.com/expert-guide-for-social-networking-with-asp-.net-3.5/book~~V~~3rd

la auteur nous montre comment appliquer des modèles de conception à l'applicatio web du monde réel ns. tous les modules qui mettent en lumière avec Bold sont développés avec le modèle IoC avec l'utilisation de StructureMap

Ce livre a aussi un exemple de code très bien que vous pouvez télécharger sur le site Packt Publishing.

Questions connexes