2012-05-15 2 views
1

POCO 개념을 컨트롤러에 적용하는 MVC 프레임 워크가 있습니까?MVC POCO 컨트롤러 및 유창한 경로

예 :
프레임 워크 컨트롤러 클래스에서 더 이상 상속 할 필요가없는 방식으로 내 컨트롤러를 모든 웹 프레임 워크에 종속시키지 않겠다고 가정합니다.
대신 몇 가지 규칙으로 경로를 지정하고 요청을 내 POCO 컨트롤러 클래스 인스턴스의 메서드 및 매개 변수에 매핑하는 방법을 설명합니다.

아래의 예는 그다지 좋지 않을 수 있습니다.

routes.MapPOCOController<MyPOCO>("MyWebAppName/{method}/{*parameters}",() => _container.Resolve<MyPOCO>()); 
routes.IfMethodReturns<MyCustomRedirectResult>().PerformRedirect(result => result.Url); 

을 다음 컨트롤러 클래스는 단지 POCO 개체입니다 :

public class MyPOCO { 
    public User  GetUser(Guid userId) {...} 
    public string Home() { 
     return _razorEngine.Render("~/Views/Home/Index.cshtml", new HomeModel { Message = "Hello world!"}); 
    } 
    public object RenderSomePageOrRedirect() 
    { 
     if(blabla) 
      return new MyCustomRedirectResult("/profile"); 
     else 
      return _razorEngine.Render(...); 
    } 
    ... 
} 
첫 번째 방법에서
  • "인 getUser는"JSON 직렬화가처럼 자동적으로 일어날 수
    우리는 다음과 같이 라우팅 가질 수 상상해 mvc4.
  • 두 번째 방법 인 "집"에서는 뷰를 수동으로 문자열로 렌더링해야하므로 다른 엔진을 조합하거나 현재의 asp.mvc에서보다 훨씬 자연스러운 방법으로 사용자 정의 엔진을 작성하는 등의 유연성을 제공합니다. 이행.
  • 세 번째 메서드 인 "RenderSomePageOrRedirect"에서는 현재 RedirectResult 구현과 관련이 없으며 작동하는 클래스를 사용하고 경로에서 제대로 매핑 할 수 있습니다.

이미 언급 한 개념 중 적어도 하나가 구현 된 프레임 워크가 있습니까? ... 어쩌면 "contrib"라이브러리가 있습니까? 당신이 할 수있는 (

  • 내가 DRY 원칙을 따르십시오 컨트롤러에서 비즈니스 로직으로 요청/응답 매핑 코드를 혼합하지 않으 :

    나는 그런 기능을 찾고 있어요 이유는 현재 인식하고있는 MVC 구현을 모두 수행하지 마십시오.)

  • 컨트롤러 클래스를 여러 상황에서 사용할 수있게 만들고 싶습니다. 단위 테스트, 재사용 등의 작업이 더 쉽습니다. (다른 웹 응용 프로그램에서 동일한 컨트롤러를 재사용 할 때 코드가 더 건조하게됩니다.) 약간의 경로 조정 만 필요합니다.
  • 이런 일을하는 것이 더 낫다는 느낌이 들었습니다. 미안하지만, 내 단어 렌더러는 포기합니다. (

PS :!. 사람들에게 감사의 마음 (StriplingWarrior 특히) 아래 주석과이 질문에 제대로 AFAIK있다

+0

웹 서버와 상호 작용할 프레임 워크가없는 컨트롤러 등을 어떻게 호스팅 하시겠습니까? – Maess

+3

그래서 자신 만의 MVC 프레임 워크를 만들고 싶습니까? – jrummell

+0

컨트롤러가 본질적으로 프레임 워크 (및 언어) 고유 인 것 같습니다. 그 추상화를 어떻게 활용할 계획입니까? –

답변

1

실제로는 FubuMvc입니다. 그것은 당신이 찾고있는 것 같아 보인다. 유일한 문제는 부족한 문서입니다.

+0

프레임 워크가 멋지다. 지적 해 주셔서 감사합니다! – IlliakaillI

2

를 형성하기 위해 나를 도와 준 같은 프레임 워크 아닌 ASP.NET MVC 컨트롤러는 Controller에서 파생되어야합니다, AsyncController 또는 ApiController 클래스입니다. 그런 개념을 구현하려면 고유 한 MVC 프레임 워크를 작성해야합니다. ts.

+0

그리고 너무 슬프다! : '( – IlliakaillI