ASP.NET MVC 3 오픈
소개
ASP.NET의 MVC 프레임워크가 버전이 2.0에서 3.0으로 업그레이드가 되었습니다.
사실, MVC 3에 대한 얘기를 진행할 예정입니다만. 그래도 아직 국내에서는 ASP.NET Web Forms이 짱입니다…
ASP.NET Web Forms에 뒤를 이어 ASP.NET MVC 그리고, ASP.NET Web Pages(이건 태어난지 이틀밖에 되지 않아서…)
어쨌든, 어제 날짜로 ASP.NET MVC 3가 정식 버전으로 발표가 되었습니다.
아래 경로에서 ASP.NET MVC 3 정식 버전을 다운로드 받으실 수 있습니다.
http://dul.me/ASPNETMVC3
또한, ASP.NET MVC 3는 이전 버전과 동일하게 오픈소스로 발표가 되어, 아래 경로에서 소스 코드를 다운로드 받으실 수 있습니다.
http://dul.me/ASPNETMVC3Source
새로운 특징
이번에 새롭게 업그레이드된 ASP.NET MVC 3의 새로운 기능 및 향상된 기능은 아래와 같습니다.
1. Razor Syntax(레이저 구문) 지원
ASP.NET MVC 3에서는 새로운 뷰 엔진인 Razor 뷰 엔진을 추가로 선택해서 웹 페이지를 작성할 수 있습니다.
기존 ASPX 뷰 엔진에 더불어 Razor 문법을 제공하는 Razor 뷰 엔진을 제공함으로써, 동일한 내용을 좀 더 짧게 타이핑해서 웹 페이지를 제작할 수 있는 장점을 가질 수 있습니다.
1년 전쯤인가 MS에 새롭게 입사한 신입사원의 머리에서 나온 Razor 문법이 이렇게 폭풍 성장할 수 있으리란 생각은 차마하지 못했는데, 올해 초 MS 웹 개발 파트의 최고의 화두로 떠오르는 단어가 바로 Razor란 단어가 되었습니다.
기존 ASP/ASP.NET에서의 <% %>구문이 Razor 문법으로 서서히 대체되어가지 않을까 하는 염려(?)도 들게 됩니다.
어쨌든, ASP.NET MVC 3에서는 Visual Studio 2010 또는 Visual Web Developer 2010 Express에서 모두 인텔리센스 기능을 지원하기에 기존 개발 방법을 그대로 이용해서 쉽게 ASPX 뷰 엔진에서 Razor 뷰 엔진으로 넘어올 수 있을 듯 합니다. 사실, 필자도, Razor 문법 자체는 별로 관심을 두지 않았지만, ASP.NET MVC 3에서 정식으로 지원하기에 이제는 조금 써볼까 하는 생각입니다…
2. JavaScript 지원 향상
ASP.NET MVC 3는 jQuery의 최신 버전을 기본으로 템플릿에 탑재하였습니다.
이미 ASP.NET MVC 2.0까지도 jQuery는 기본으로 클라이언트 측 자바스크립트 영역을 담당해서, 기존 유효성 검사 등도 손쉽게 jQuery와 ASP.NET AJAX 클라이언트 라이브러리를 사용해서 구현할 수 있었지만, 이를 더 향상시키는 몇가지 기능을 더했고, MS에서는 꾸준히 jQuery 오픈 소스 진영에 많은 수의 공헌(코어 및 플러그인 업데이트 제공)을 제공하여 왔습니다.
사실, MS에서 jQuery팀을 MS로 포함시키면 더욱 좋지 않을까 하는 저만의 생각이지만, jQuery 팀은 그럴 생각은 전혀 없는 듯 합니다…
3. 유효성 검사 기능 향상
Remote Validation
사용자 이름과 같이 서버측에 전송되어야만 알 수 있는 기능을 클라이언트 측 유효성 검사에서 손쉽게 처리할 수 있도록, 서버측 컨트롤러의 액션 메서드의 결과값을 클라이언트 측에서 접근할 수 있는 원격 유효성 검사 기능을 제공합니다. jQuery Validation 또한 이러한 기능을 구현할 수 있지만, 미리 ASP.NET 웹 서비스가 또는 WCF 서비스가 구현되어있어야한다는 점이 차이가 될 듯 합니다.
모델 측 유효성 검사
ASP.NET MVC 3와 ADO.NET Entity Framework 4.0은 뗄래야 뗄 수 없는 사이입니다. 2.0 때와 마찬가지로 3.0에서는 모델 측 유효성 검사 기능을 제공하기에 모델에 추가로 유효성 검사 로직을 구현하여, 클라이언트 측에서 쉽게 유효성 검사를 도입할 수 있습니다.
4. OutputCaching
ASP.NET 2.0에도 URL 레벨 또는 액션 메서드 레벨의 캐싱 기능을 제공해 왔지만, ASCX(Partial Page) 기반 캐싱 기능을 추가로 제공합니다. 즉, ASP.NET Web Forms에서 제공하던 ASCX를 사용하여 부분 페이지 캐싱 기능을 ASP.NET MVC 3에서도 제공합니다. 사실, 조금 늦었지만, 빠른 반영에 감사할 따름입니다.
5. 기타 특징들
ViewBag
컨트롤러에서 View 페이지로 상태 데이터를 전송할 때 많이 사용하던 ViewData[] 속성에 더불어 Dynamic 형태로 값을 보내줄 수 있는 ViewBag 속성을 기본적으로 제공합니다.
ViewData["Title"], ViewData["Page"] 식의 인덱서 형태로 값을 Object로 전달 후 형변환을 거친 후 사용하던 방식에서 아예 컨트롤러에서 뷰로 보내줄 때 명확한 타입으로 값을 보내줄 때 인덱서 형태가 아닌 ViewBag에 정확한 타입의 속성으로 보내줄 수 있어 좀더 명확한 프로그래밍이 가능할 수 있습니다. C# 4.0에 처음으로 도입된 dynamic 키워드의 대단함을 새삼 느끼고, 엔더스 헤즐스버그에게 싸인 좀 받아봤으면 좋겠다라는 생각을 합니다.
Global Filter
2.0의 [HandleError] 특성과 같이 웹 페이지 전역적으로 사용할 수 있는 Global Filter 기능을 제공하여, 보안 또는 특정 출력 관련 기능을 메인(Global.asax)에서 관리할 수 있습니다.
손쉬운 Dependency Injection (DI) 기능 도입
[AllowHtml] 특성 제공
HttpNotFoundResult, RedirectPermanent 등의 ActionResult 타입 제공
Html.Raw() 헬퍼메서드 제공
Crypto 헬퍼메서드 제공
등등…
위에서 제공한 기능 외에도 여러가지 기능 제공합니다.
6. 2.0에서 3.0으로 업그레이드
ASP.NET MVC 3 개발팀에서는 기존 2.0에서 3.0으로 업그레이드를 손쉽게 할 수 있는 유틸리티를 제공합니다. 물론, Visual Studio 2010 기반으로 작성된 프로젝트여야겠지요… 만약, 이 툴이 맘에 들지 않으면 수작업으로 업그레이드 하셔도 무관합니다… 다운로드 경로는 아래와 같습니다.
http://blogs.msdn.com/b/marcinon/archive/2011/01/13/mvc-3-project-upgrade-tool.aspx
참고 자료
http://www.asp.net/mvc
http://channel9.msdn.com/Shows/Web+Camps+TV/CodeMash-2011-WebMatrix-Launch-Keynote
http://weblogs.asp.net/scottgu/archive/2011/01/13/announcing-release-of-asp-net-mvc-3-iis-express-sql-ce-4-web-fa rm-framework-orchard-webmatrix.aspx
마무리
어느덧 ASP.NET MVC도 그 버전을 3.0까지 끌어올렸습니다.
ASP.NET MVC와 함께 자주 등장하던 단어 중에 이미 LINQ to SQL은 아웃 되고 Entity Framework로 옮겨가고,
IoC도 점점 언급이 없을 것이고… 왜? MS 자체 기술이 아니기에… 서서히 걷어내어지겠지요^^
테스트프로젝트는 아마도 조금씩 더 도입이 될 듯 하는 등의 현상을 경험합니다.
사람들이 Test, Test 말은 많지만, 현실에서는 Test 프로젝트가 아닌 Excel 스프레드시트로 작업을…
어찌되었든, 3.0입니다. 이제 시작해야하지 않을까요???
늦지 않았습니다. 2011년은 ASP.NET MVC 3를 본인 능력에 추가를 해도 좋을 듯 하여, 권장하는 바입니다…
끝.