상세 컨텐츠

본문 제목

프로 ASP.NET MVC 프레임워크(Pro ASP.NET MVC Framwork) - MVC 강좌 #1

전체 출간 도서

by 비제이퍼블릭 2009. 9. 18. 08:30

본문



현재 10월 중(다음달)으로 번역서가 출간될 Apress의 프로 ASP.NET MVC 프레임워크(Pro ASP.NET MVC Framwork)를 출판사의 압박!으로 열심히 번역하고 계신 김태영(태오)님과 송원석(송군)님이 운영자이자 운영진으로 계신 Taeyo.net에서 작년에 태오님께서 올리신 MVC 관련 강좌를 발견하였습니다. 4회까지 연재를 하신 것 같으신데, 모두 올려드리도록 하겠습니다. 원본은 다음 링크에서 확인 가능합니다.

강좌 #1 [바로가기]

ASP.NET MVC 프레임워크의 등장


ASP.NET MVC 프레임워크는 현재 ASP.NET 3.5에 추가적으로 준비되고 있는 MVC(Model-View-Controller) 개발 지원을 위한 프레임워크입니다. 이제 ASP.NET도 공식적으로 MVC 패턴을 지원하기 시작한다는 것은 꽤나 기쁜 소식이 아닐 수 없습니다. 물론, ASP.NET에 MVC 패턴을 적용하는 것이 기존에도 불가능한 것은 아니었지만 공식적인 프레임워크가 지원된다는 것은 ASP.NET 기반의 개발에서도 다양한 개발 방법을 개발자가 선택해서 사용할 수 있다는 것을 의미하므로 더욱 개발환경이 풍부해지는 느낌을 갖게 합니다.

하여, 태오는 이번 강좌를 시작으로 연재 식으로 4-5회에 걸쳐 ASP.NET MVC 프레임워크에 대한 이야기를 해볼까 합니다. 그럼 이제 MVC에 대한 이야기를 시작으로 해서 하나씩 이야기 보따리를 풀어보겠습니다~ 아라비안나잇!! 펼쳐라 펼쳐라~ 너의 모험담~ 불끈불끈 용기가~~~ -_-;;

물론, 이미 MVC 패턴에 대해서는 많이들 알고 계실 것이라 생각합니다. 이는 꽤 오랫동안 각광을 받아 온 패턴이기 때문이죠. 아? 잘 모르시겠다고요? 아~~ 괜찮습니다. 충분히 그럴 수 있습니다. 잘 몰라도 크게 문제가 될 것은 없습니다. 이제부터 알아나가면 되니까요(단, 스스로 학습을 통해서 말이죠 ㅎㅎ) 하지만, 이 패턴이 무엇을 의미하는 지는 몰라도 MVC라는 용어는 지난 날 한번씩은 들어보지 않으셨나요? 하하. 못 들어 보셨다구요? 하하~ -_-; (이거 어쩐다..)

MVC는 애플리케이션의 구조를 모델과 컨트롤러 그리고 뷰라는 3가지 컴포넌트로 분리하여 보다 효율적인 개발을 가능하게 하는 개발 패턴입니다. 이는 각 컴포넌트 간의 종속성을 줄이고, 각 모듈의 역할을 명확히 분리하여 TDD(Test-Driven Dev)를 가능하게 함과 동시에, 병행적인 개발을 원활하게 하는 기반을 제공합니다. 이미 웹 애플리케이션 개발에 있어 폭넓게 사용되고 있는 패턴이며, 몇몇 소프트웨어 벤더들은 이를 쉽게 개발에 적용할 수 있게 하는 다양한 프레임워크들을 제공하고 있기도 합니다.

하지만, 그 동안의 ASP.NET 기술은 MVC 모델보다는 개별 페이지 단위로 기능을 소화하는 Page 컨트롤러 패턴을 사용해 왔습니다. 우리가 친숙한 웹폼(Web-Form) 프로그래밍 방식이 바로 그 대표적인 예이죠. 웹 폼 방식은 페이지의 상태 정보를 유지하기 쉽게 하고, 이벤트 중심적인 개발을 가능하게 하기에 웹 애플리케이션의 개발을 편리하게 했던 것이 사실입니다. 사실, MVC 패턴이나 Page 컨트롤러 패턴인 웹폼 방식이나 모두 웹 애플리케이션 개발에 있어 나름대로의 장단점을 가지고 있어서, 어떤 것이 절대적으로 좋은 패턴이라고는 말하기 어렵습니다. MVC 패턴이 더 효과적인지, Page 컨트롤러 패턴이 더 효과적인지는 주어진 시나리오나 개발 환경 및 웹 사이트의 설계 기반에 따라 달라질 수 있기 때문입니다.

현재 ASP.NET이 MVC 프레임워크를 지원하겠다고 발표한 것이 MVC 패턴이 웹 개발에 있어 궁극적인 개발 패턴이라는 것을 의미하지는 않습니다. 이는 기존 ASP.NET 기술이 웹 폼 방식을 위한 프레임워크만을 지원해 왔고, MVC 패턴을 위한 프레임워크를 지원하지 않은 상황이었기에, 이를 제공하겠다는 결정이 박수를 받고 있는 것이지, 웹 폼이 불 합리한 기술이었기에 MVC로 대체하겠다는 의미는 아니기 때문입니다. 이 부분은 오해를 하시면 안 됩니다. 개발자들이 혹은 설계자들이 선택해서 사용할 수 있는 프레임워크가 하나 더 제공되는 것이기에, 그에 따라 선택의 폭이 넓어지고 다양한 시도가 가능해질 것으로 보이기 때문에 현재 주목을 받고 있는 것입니다. ^^;

ASP.NET을 능숙하게 다루시는 분들은 "무슨 소리야~ 기존에도 MVC 패턴을 ASP.NET에 적용하는 것이 그렇게 어려운 일은 아니었다고!"하시는 분들도 계시겠지만, 어쨌든 기존의 ASP.NET은 프레임워크 차원에서의 MVC 패턴은 지원하지 않았습니다. 물론, ASP.NET 숙련자들이 생각하고 계시는 것처럼 MVC 패턴을 ASP.NET에서 구현할 수 없었던 것은 아닙니다만, 쉽게 MVC를 개발할 수 있게 하는 기반 구조는 별도로 제공되지 않았기에, 경험이 많은 개발자들이 직접 기반 구조를 작성해서 사용할 수 밖에 없었다는 것입니다. 그리고, 그렇게 개발된 모듈들은 업무 인수인계나 전파 교육이 제대로 이루어지지 않을 경우, 해당 숙련자가 프로젝트에서 제외된 상황에서는 오히려 복잡한 구성으로 취급되고, 사후 관리나 유지보수가 쉽지 않은 문제를 일으키기에 잘 만들어진 골치거리로 다루어지기도 했습니다.

예를 들면, ASP.NET에 MVC 패턴을 적용한 예로는 제가 2년 전에 작성했던 "UserControl 템플릿을 이용한 공통 UI 렌더링( View.aspx?SEQ=187&PSEQ=8&IDX=0)" 강좌를 들 수 있습니다. User Control을 사용해서 뷰를 독립적으로 구성하게 하는 그 강좌는 MVC 패턴을 ASP.NET에 적용한 하나의 예라고 볼 수 있습니다. 하지만, 강좌에서 보이다시피 관련된 모든 기능을 개발자가 직접 작성하고 구성해야 하는 불편함(?)이 존재하죠. 그리고, 그러한 내용은 어느 정도 ASP.NET 기술에 능숙한 사람들은 이해할 수 있지만, 경력 2-3년 차의 개발자들에게는 쓸데없이 복잡한 방법처럼 보일 수 있습니다. 굳이 그 방법을 사용하지 않고 ASPX 페이지를 직접 작성해도 동일한 결과를 얻을 수 있기에, 초급자들에게는 그 강좌가 쉬운 방법을 괜히 어렵게 꼬아놓은 것처럼 보일 수 있을테니까요.

Microsoft는 MVC 패턴의 효용성이 업계에서 폭넓게 수용되고, 여타 벤더들의 기술에도 MVC가 널리 적용되기 시작하자, ASP.NET에서도 이를 위한 프레임워크를 포함시키기로 한 것 같습니다. 다른 벤더에 비해 약간 늦게 제공하는 감은 없지 않지만, 이는 매우 훌륭한 결정으로 받아들여지고 있으며, 그 프레임워크가 어떤 기능들을 제공할 지에 많은 관심이 몰리고 있습니다. 현재도 커뮤니티의 피드백을 통해서 기능이 보강되고 있는 상황이기에(아직 CTP 버전이기에), 최종 버전이 제공하는 기능들은 대단히 풍부할 것으로 기대되고 있습니다.

Microsoft의 ASP.NET 팀이 MVC 패턴을 위한 프레임워크를 지원하기로 결정한 데에는 SEO(Search Engine Optimization)과 REST(Representational State Transfer)와 같은 기법이 현재의 웹에서 중요한 의미로 다루어지기 시작하면서 더욱 더 힘을 얻은 것으로 보이기도 합니다(ASP.NET MVC의 핵심 기능 중 하나에는 이와 관련된 URL 매핑 기법이 들어있습니다).

SEO(Search Engine Optimization)란 검색 엔진의 검색에 자사의 웹 사이트로 향하는 트래픽의 질과 양을 더욱 높게 만들고자 하는 작업을 말합니다. 즉, 콘텐트나 링크 URL에 검색어와 관련된 내용이 많으면 많을수록 검색 랭킹에서는 상위에 놓여질 수 있으며, 이는 웹 사이트를 고객에게 보다 효과적으로 노출할 수 있게 되기 때문입니다. 단적인 예로, 자사 웹 사이트에 노트북과 관계된 제품 목록을 나열하는 페이지가 있다고 가정할 경우, 이 URL로 /Data/List.asp?category=1과 같이 그 회사 사람들만이 알아볼 수 있는 경로를 사용하는 것 보다는 /Product/Notebook/ 과 같이 검색엔진과 사용자들도 쉽게 알아볼 수 있는 경로를 사용하는 것이 보다 SEO에 부합하는 행동으로 평가를 받습니다. 왜냐하면, 이렇게 URL을 제공하는 것이 검색엔진을 통한 노출에 있어 훨씬 상위 랭크를 차지할 수 있을 것이기 때문입니다.

하지만, 주의하셔야 할 사항은(거듭 강조드립니다만) MVC 프레임워크가 ASP.NET 기반 개발의 궁극적인 모델이라거나 기존의 개발된 모든 웹 애플리케이션들도 이후에는 MVC를 적용한 모델로 바꿔야 한다거나 하는 것이 아니라는 겁니다. 이는 개발자들이 선택할 수 있는 또 하나의 선택적인 기법일 뿐입니다. ASP.NET MVC의 등장은 기존 웹폼 모델이 그릇되었다는 것을 증명하기 위한 것이 아니며, MVC 패턴 개발을 좋아하는 개발자들에게 또 하나의 선택을 제시하고자 함을 이해하셔야 합니다(그렇다 하더라도, 이후의 개발은 MVC 쪽에 많은 무게를 둘 것 같기는 합니다만). Microsoft의 공식 입장도 웹 폼과 MVC는 각각 발전시켜 나갈 것이라고 하고 있으며, MVC가 웹 폼의 대안이 되는 기술이 아닌 선택적으로 사용할 수 있는 기술이라고 이야기하고 있다는 것을 기억하세요.

그렇다면, 이제 ASP.NET MVC 프레임워크 자체에 대해서 구체적으로 알아보는 시간을 시작하도록하겠습니다. 이것이 여러분에게 웹 폼 기반의 개발보다 그럴듯한 기술인지, 아니면 여러분에게는 웹폼 모델보다 그다지 매력적이지 않은지는 강좌가 모두 끝난 뒤에 스스로 판단할 수 있을 것입니다. 비록, 그 선택이 남과 다르다 해서 문제가 되는 것은 없습니다. 이미 말했듯이, 이러한 선택은 다양한 요소들에 의해 변할 수 있으며, 특정 환경에서는 특정 패턴이 더 나을 수도 있기 때문입니다.

패턴은 단지 패턴일 뿐! 왼손은 거들 뿐! (응?)




관련글 더보기

댓글 영역