ASP.NET MVC Framework이 발표된 후 두어 차례 CTP가 발표되었고 MIX08 시점에 다음 CTP를 발표할 예정이다. MIX08에 발표할 ASP.NET MVC는 이전 CTP와는 다르게 많은 기능 보강과 편의성을 제공할 것으로 보인다. 새롭게 변화될 특징에 대해 Scott Guthrie에 블로그에 올라온 글을 통해 정리해보자

1. ASP.NET MVC 설치 과정 불필요. 관련 DLL 복사만으로 사용 가능
지금까지 CTP에서는 별도의 설치 과정을 통해 System.Web.Mvc.dll을 GAC에 등록하는 과정을 거쳤으나 앞으로는 구축하는 애플리케이션의 \bin 디렉토리에 System.Web.Mvc.dll을 복사하는 것 만으도 ASP.NET MVC를 사용할 수 있다.
또한 ASP.NET MVC가 partial/medium trust를 지원함으로써 호스팅 업체 입장에서 부담을 줄여줄 계획이다.

2. URL Routing 기능 개선
지금까지 ASP.NET MVC에는 Rails에서와 같은 URI 기반의 직관적이고 간편한 라우팅 기법을 기본으로 제공하였다. 다음 CTP에서는 라우팅 룰에 이름을 부여하여 이름만으로 해당 라우팅 룰을 접근하여 사용할 수 있게 할 것이며, 와일드카드 룰을 사용할 수도 있고, 라우팅 룰을 선언하고 확장할 수도 있게 할 예정이다.  또한 이러한 라우팅 컴포넌트만을 MVC에서 분리하여 다른 ASP.NET 기반 기술 (가령, ASP.NET Dynamic Data, ASP.NET Web Forms) 등에서도 사용할 수 있게 할 예정이다. 

3. VS2008 툴 지원 향상
지금까지 ASP.NET MVC는 VS2008에서 project template을 제공하는 수준이었으나, project item template, project 환경 기본 설정 기능,  MSTest 이외의 NUnit, MBUnit, XUnit 등의 단위 테스트 기본 내장 지원 등이 포함될 예정이다.

4. [ControllerAction] 제거
Controller 클래스의 action 메소드들은 [ControllerAction] attribute을 지정하여 action 메소드임을 명시하였지만, 앞으로는 아래 그림처럼 Controller 클래스내의 모든 public 메소드는 기본적으로 action 메소드로 인식하게 된다.

5. 필터 지원
요청 전 후에 필터 체인을 만드는 것은 웹 프레임웍의 가장 기본적인 기능이다. ASP.NET MVC에서도 Controller 클래스에 필터를 적용할 수 있게 된다. 적용 단위는 Controller 클래서 전체 혹은 개별 action 메소드 단위이다. 아래 그림은 ASP.NET의 OutputCache를 활용하는 action 메소드와 Authorization을 활용하는 action 메소드를 보여준다.
 

6. HTML Helper 기능 내장
지금까지 ASP.NET MVC 내에는 내장된 기능으로 약간의 HTML UI Helper 메소드를 지원하였고 별도의 다운로드를 통해 부가적인 helper 메소드를 사용할 수 있었다. 하지만 앞으로는 이러한 helper 메소드를 모두 내장하여 별도의 다운로드 없이 사용할 수 있도록 할 예정이다.  아울러 ASP.NET AJAX 라이브러리와 ASP.NET MVC와의 원활한 상호운용을 위해 AJAX helper 메소드를 만들고 있다.

7. Refactoring & Design Improvement
앞으로의 ASP.NET MVC는 리팩토링을 통해 디자인 면에서 향상을 꾀할 것이며 이로써 확장성과 테스트에 좀 더 용이한 프레임웍이 될 것이다. 즉, 기본적으로 내장된 기능을 사용할 수도 있고, 내장 기능을 사용하되 약간의 커스터마이징을 가할 수도 있고, 완전히 내장 기능을 드러내고 자체 기능을 사용할 수도 있게 할 것이다. ASP.NET MVC는 각 구성 요소(model-view-controller)를 원하는 모듈로 치환할 수 있는 데, 여기에 완전 치환외에 커스터마이징을 쉽게하여 약간의 기능을 수정할 수 있도록 확장한 것이다. 뷰 엔진 locator 로직을 치환하기 위해서 이제는 뷰 엔진 구현 로직 전체를 치환하지 않고서도 가능하다. 물론 뷰 엔진을 통째로 치환하는 것도 가능하다. 그 밖에 많은 관심을 받고 있는 DI Container와의 통합도 쉬워진다. 지금까지 ASP.NET MVC에서 기본 제공하는 객체 라이프싸이클 관리 모듈을 쓰지 않고 가령,Spring.NET의 ObjectFactory를 쓰고자 한다면, ObjectFactory를 사용하는 ControllerFactory를 만들어 ASP.NET MVC의 Controller Factory로 삼으면 되었는데, 여기에 부가 기능을 추가할 예정이다.

8.  ASP.NET MVC 소스 공개 및 디버깅
얼마전 공식적으로 .NET Framework 의 기본 라이브러리 소스가 공개되어 디버깅시 좀 더 편리한 환경을 구축할 수 있게 되었는데, ASP.NET MVC도 마찬가지로 소스가 공개될 예정이다. 또한 Visual Studio의 project에서 빌딩할 수 있는 형태로 다운로드가 되기 때문에 디버깅에 곧바로 활용할 수 있다.  또한 필요하면 ASP.NET MVC 소스에 버그 패치를 하여 애플리케이션 개발에 활용할 수도 있으나 패치된 ASP.NET MVC 소스를 배포하는 것은 허용되지 않는다.

이 글은 Scott Guthrie의 블로그 포스트를 번역한 것이며 일부 필자의 의견 및 내용이 첨가되었다. 원문은 아래에서 확인할 수 있다.
원문보기

Posted by 장현춘

댓글을 달아 주세요