2010-11-27 4 views
7

저는 종속성 주입을 배우는 중이었습니다 (이제는 기본을 이해했다고 생각합니다). 그리고 웹폼 응용 프로그램으로 구현하려고합니다.WebForms을 사용하는 종속성 삽입 프레임

제 질문은 웹 폼 프로젝트에 어떤 의존성 주입 프레임 워크를 사용해야합니까, 아니면 무엇이 가장 적합한 질문입니까?

저는 현재 Spring.Net, Ninject, Unity 및 StructureMap을 보았습니다. XML 또는 유창한 인터페이스 여부에 관계없이 구성에 선호하지 않는 경향이 있습니다. 그러나 XML 구성이 덜 유리하게되고 있습니까?

대부분의 정보는 MVC 환경에서 종속성 주입과 관련이 있습니다. Structure Map only work with webforms using version 2.0 or earlier.과 같은 일부 프레임 워크를 읽었습니다. 따라서 고려해야 할 사항은 웹 폼이 지속적인 지원이 될 것인지, 패턴에 비교적 새로운 사람이 쉽게 구성 할 수 있는지 여부입니다.

미리 감사드립니다.

답변

10

어떤 프레임 워크를 선택하든 상관 없습니다. 유일한 속임수는 System.Web.UI.Page 클래스와 같은 클래스에 종속성을 주입 할 수 있도록 허용하는 것입니다. ASP.NET MVC를 살펴보면 종속성 삽입 프레임 워크로 훌륭하게 재생되도록 특별히 설계된 것을 볼 수 있습니다. ASP.NET WebForms은이를 위해 명확하게 설계되지 않았습니다. 일부 프레임 워크는 기본적으로 WebForms을 지원하지만 다른 모든 프레임 워크의 경우이 작업을 수행하는 것이 어렵지 않습니다.

WebForms 응용 프로그램에서 페이지를 만드는 '물건'은 PageHandlerFactory입니다.

<?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> 

내가 작업 할 PageHandlerFactory를 만드는 방법에 대한 an article를 작성했습니다 : 당신이해야 할 것은의 PageHandlerFactory 기본 클래스를 오버라이드 (override) 이러한 유형의 일부 주입 동작을 구현하고, Web.config의에서이 새로운 유형을 등록입니다 Common Service Locator을 사용하고 있지만, 좋아하는 IoC 프레임 워크를 선택하고 한 줄의 코드 만 변경하여 작동시킬 수 있습니다.

행운을 빈다.

+0

통찰력에 감사드립니다. 추가 기능으로 인해 spring.net과 함께하기로 결정했습니다. – gdp

+0

Spring.net은 내가 제일 좋아하는 컨테이너입니다. 스프링 기능이 특별히 필요한 기능은 무엇입니까? – jonnii

+0

특히 양방향 데이터 바인딩 및 nhibernate 지원. – gdp