2010-11-27 4 views
7

J'ai étudié les injections de dépendance d'apprentissage (je crois que j'ai maintenant compris les bases) et je cherche à l'implémenter dans une application webform. Ma question est, quel cadre d'injection de dépendance dois-je utiliser pour un projet webforms, ou est-ce une question de ce qui fonctionne le mieux pour vous?Qu'est-ce que la dépendance Framework d'injection avec WebForms

J'ai actuellement regardé Spring.Net, Ninject, Unity et StructureMap, j'ai tendance à n'avoir aucune préférence dans la configuration, que ce soit ses interfaces XML ou fluides. Cependant, la configuration XML devient-elle moins favorable?

La plupart des informations que je rencontre concernent l'injection de dépendances dans un environnement MVC. Et ont également lu que certains cadres tels que Structure Map only work with webforms using version 2.0 or earlier. Donc le genre de choses que je dois prendre en compte est de savoir si les formulaires Web seront un support continu, et la facilité de configuration pour quelqu'un relativement nouveau dans le modèle.

Merci d'avance.

Répondre

10

Peu importe le framework que vous choisissez, la seule astuce consiste à autoriser l'injection de classes telles que vos classes System.Web.UI.Page avec leurs dépendances. Quand vous regardez ASP.NET MVC, vous voyez qu'ils l'ont spécialement conçu pour jouer avec les frameworks d'injection de dépendance. ASP.NET WebForms n'est clairement pas conçu pour cela. Certains frameworks ont un support pour WebForms prêt à l'emploi, mais pour tous les autres, ce n'est pas si difficile à faire.

Dans une application WebForms, la 'chose' qui crée des pages pour vous est le PageHandlerFactory. Ce que vous devez faire est de passer outre la classe de base PageHandlerFactory, mettre en œuvre un comportement d'injection dans ce type, et d'enregistrer ce nouveau type dans le web.config:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <httpHandlers> 
     <add verb="*" path="*.aspx" 
     type="MyPageHandlerFactory, MyAsm"/> 
    </httpHandlers> 
    </system.web> 
    <system.webServer> 
    <handlers> 
     <add name="CSLPageHandler" verb="*" path="*.aspx" 
     type="MyPageHandlerFactory, MyAsm"/> 
    </handlers> 
    </system.webServer> 
</configuration> 

J'ai écrit an article sur la façon de créer un PageHandlerFactory travailler avec le Common Service Locator, mais vous pouvez choisir votre framework IoC préféré et modifier une seule ligne de code pour le faire fonctionner.

Bonne chance.

+0

Merci pour votre avis. Décidé d'aller avec Spring.net en raison de ses fonctionnalités supplémentaires. – gdp

+0

Spring.net est mon conteneur préféré. Quelles caractéristiques avez-vous besoin spécifiquement que le printemps offre? – jonnii

+0

Spécifiquement la liaison de données bidirectionnelle et le support nhibernate. – gdp

Questions connexes