[원문보기]

URL Routing 이란 무엇인가? (What is URL Routing?)

URL 라우팅은 ASP.NET 3.5 SP 1 과  함께소개되었고 ASP.NET MVC 응용프로그램에서 이미 사용된 "web 2.0" 에 적합한 기능이다.
URL 라우팅은 물리적 파일경로에 맵핑되지 않은 요청을 받아 들일수 있도록 응용프로그램을 설정해야 한다. 
사용자에게 의미있고 검색엔진에 최적화 (search-engine optimization, SEO) 된 URL 들을 정의하기 위해서 라우팅을 사용할 수 있다. 

예를 들어, 제품 분류들을 보여주는 페이지를 표현하기 위한 일반적인 URL 은
http://www.mysite.com/products.aspx?category=software
와 같이 표현이 된다면 ASP.NET 4 에 있는 URL 라우팅 엔진을 사용한다면 
http://www.mysite.com/products/software 
와 같이 나타낼 수 있다.

ASP.NET 4.0 를 사용하여 URL들은 ASP.NET MVC 컨트롤러 클래스들과 ASP.NET 웹폼 페이지들에 맵핑될 수 있다.

ASP.NET MVC에서 URL 맵핑하기 (Mapping URLs using ASP.NET MVC)

ASP.NET 3.5 SP1 에서 소개된 URL 라우팅엔진은 요청되는 URL을 다루는 데 강력한 방법을 제공한다.
일반적으로, 특정  URL형식에 대하여 핸들러와 연결시키기 위해서 응용프로그램 startup  부분에 코드를 작성한다.

아래 코드는  /products/software URL 를 "Browse" 액션 메소드를 가진 "Products" 컨트롤러로 맵핑하기 위해서 ASP.NET MVC를 사용하는 방법의 예이다.


MapRoute() 도움 메소드의 첫 "products-browse" 파라미터는 라우트에 대한 대표이름 이다.
두번째 파라미터인 "products/{category}" 파라미터는 /products/software URL 을 맵핑시키기 위한 URL필터이다. 이 파라미터는 Products 컨트롤러의 Browse 액션메소드로 보내줄 것이다.

ASP.NET 웹폼에서 URL 맵핑하기 (Mapping URLs using ASP.NET Web Forms)

ASP.NET 4.0 에서 ASP.NET MVC 컨트롤러와 같이 ASP.NET 웹폼에서 URL 라우팅엔진을 사용할 수 있다.

아래 예는 MapPageRoute 도움 클래스를 사요하여 /products/software URL를 응용프로그램의 루트 디렉토리에 "Products.aspx" 로 맵핑해준다.



MapPageRoute() 함수의 첫번째, 두번째 파라미터는 MVC 의 MapRoute()의 파라미터와 같다. 
세번째 파라미터는 컨트롤러 클래스 대신에 URL을 Products.aspx  페이지로 보내준다.

또한 MVC와 같이 선택적으로 다수의 파라미터를 추가하여 라우트 제한, 파라미터에 대한 기본값 설정할 수 있다. 
Products.aspx 페이지 내에서 Page.RouteData 속성을 사용하여 /products/{category} URL 필터에 맵핑된 "category"  파라미터 값을 가져와 제품 분류를 보여주기 위하여 데이터 바인딩 할 수 있다.



또, 위에처럼 코드로 데이터바인딩 하는것 외에 ASP.NET 데이터소스 컨트롤에 있는 새로운 <asp:routeparameter> 를 사용하여 라우트 값을 바인딩할 수 있다.
예를 들어, 아래처럼 select 문의 @category 파라미터를 바인딩하기 위해서<asp:routeparameter> 선언을 사용한다.
 


ASP.NET내에서 URL 가져오기 (Retrieving URLs within an ASP.NET Web Form)

ASP.NET 의 라우팅 엔진은 유입되는 URL를 핸들러로 연결시키기 위해서 사용되거나, 같은 맵핑제한 논리를 사용하여 출력 URL 를 프로그램적으로 생성하는데 사용될 수 있다.

예를 들어, 위의 예에서 우리가 /products/{category} URL를 맵핑할 때, 우리는 "products-brows" 라는 이름을 주었다. 이는 URL 라우팅 시스템을 내의 라우트 검색하기 위해 새로운 Page.GetRouteUrl() 도움 함수를 사용할 수 있다. 그리고 반대로 맵핑을 하는 실제 URL를 가져올 수 도 있다.

예로, 아래 코드는 "/products/software" 의 URL 값을 가져온다.


코드 비하인드 파일 또는 .aspx 마크업 파일내에서 위의 도움 메소드에 접근할 수 있다.

이 외에 Response.RedirectToRoute() 함수가 있는데 이 함수는 한 라우트로 리다이렉트 할 수 있게한다.

포스트백 다루는 상황 (Handling PostBack Scenarios)

ASP.NET 4.0 의 URL 라우팅은 포스트백도 지원한다. <form runat="server"> 컨트롤은 자동적으로 같은 URL로 가게 되어있다. 예를 들어, 만일 /products/software  URL로 접근을 한다면 서버부분의 <form runat="server"> 컨트롤은 <form action="/products/software">HTML 요소로 렌더링하여 클라이언트로 되돌려준다. 

이는 깔끔하고 검색엔진 친화적이며 웹폼과 포스트백 상황에서 쉬운 URL를 주게한다.










Posted by hgjung

댓글을 달아 주세요