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있다
웹 서버와 상호 작용할 프레임 워크가없는 컨트롤러 등을 어떻게 호스팅 하시겠습니까? – Maess
그래서 자신 만의 MVC 프레임 워크를 만들고 싶습니까? – jrummell
컨트롤러가 본질적으로 프레임 워크 (및 언어) 고유 인 것 같습니다. 그 추상화를 어떻게 활용할 계획입니까? –