2010-11-27 12 views
7

ich lernen Dependency Injection gesucht haben (ich glaube, ich habe jetzt die Grundlagen begriffen) und bin auf der Suche in ein Webformular-Anwendung zu implementieren.Was Dependency Injection-Framework mit WebForms

Meine Frage ist, was Dependency Injection-Framework soll ich für ein webforms Projekt verwenden, oder ist es eine Frage, was für Sie am besten funktioniert?

ich zur Zeit bei Spring.Net, Ninject, Einheit und StructureMap ausgesehen habe, neige ich dazu in der Konfiguration keine Präferenz haben, ob seine XML oder fließend Schnittstellen. Wird die XML-Konfiguration jedoch weniger günstig?

Die meisten der Informationen, die ich über gekommen betrifft Injektion während in einer MVC-Umgebung Abhängigkeit. Und habe auch gelesen, dass einige Frameworks wie Structure Map only work with webforms using version 2.0 or earlier. Also die Art von Dingen, die ich berücksichtigen muss, sind, ob Webforms kontinuierliche Unterstützung sein wird, und die Leichtigkeit der Konfiguration für jemanden relativ neu in dem Muster.

Vielen Dank im Voraus.

Antwort

10

Es spielt keine Rolle, welches Framework Sie auswählen, der einzige Trick besteht darin, dass Klassen wie Ihre System.Web.UI.Page Klassen mit ihren Abhängigkeiten injiziert werden. Wenn Sie sich ASP.NET MVC ansehen, sehen Sie, dass sie speziell dafür entworfen wurden, um mit Frameworks zur Abhängigkeitsinjektion zu spielen. ASP.NET WebForms ist eindeutig nicht dafür ausgelegt. Einige Frameworks unterstützen WebForms standardmäßig, aber für alle anderen ist es nicht schwer, dies zu tun.

In einer WebForms Anwendung, das ‚Ding‘, die Seiten für Sie erstellt, ist die PageHandlerFactory. Was Sie tun müssen, ist die PageHandlerFactory Basisklasse außer Kraft setzen, einige injizierende Verhalten in dieser Art implementieren und registrieren diese neue Art in der 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> 

ich geschrieben habe an article darüber, wie eine PageHandlerFactory zu schaffen zu arbeiten mit der Common Service Locator, aber Sie können Ihre Lieblings-IoC-Framework auswählen und ändern Sie nur eine Zeile Code, um es zum Laufen zu bringen.

Viel Glück.

+0

Danke für Ihre Einsicht. Aufgrund seiner zusätzlichen Funktionen entschied er sich für spring.net. – gdp

+0

Spring.net ist mein am wenigsten bevorzugter Container. Welche Eigenschaften benötigen Sie speziell, die der Frühling bietet? – jonnii

+0

Speziell die bidirektionale Datenbindung und die Nhibernat-Unterstützung. – gdp