다음 글을 한글로 바꾸었습니다.

Getting Started with ASP.NET Web API 2 (C#)

많이 부족합니다. 참고만 하셔요 ~ ^^

 

ASP.NET Web API 2 시작하기 (C#)

by Mike Wasson

Download Completed Project

HTTP 단순히 web Page 만을 serving 하기 위한 프로토콜이 아닙니다. 서비스와 데이터를 노출하기 위한 API 구축하는데 강력한 Platform 이기도 합니다.

HTTP 간단하고 유연하며 Ubiquitous 합니다. 머리에 떠오르는 거의 모든 Platform 에는 HTTP Library 포함하고 있으므로 HTTP Service 브라우져를 포함한 모바일 기기, 전통적인 데스크탑 어플리케이션에 이르기 까지 광범위한 클라이언트까지 연결할 있습니다.

ASP.NET Web API .NET Framework 기반위에 Web API 구축하기 위한 Framework 입니다., Tutorial 에서는 ASP.NET Web API 사용하여 Product 목록을 반환하는 Web API 생성합니다.

 

Tutorial 에서 사용 된 Software Version

  • Web API 2

 

Web API Project 생성하기

Tutorial 에서 ASP.NET Web API 사용하여 Product 목록을 반환하는 Web API 생성합니다.

Front-end web page 는 jQuery 사용하여 결과를 표시합니다.

 

Visual Studio 시작하고 Start Page 에서 New Project 선택합니다. 또는 File Menu 에서 New 선택하고 Project 선택합니다.

Template 창에서 설치된 Templates 선택하고 Visual C# Node 확장합니다. Visual C# 아래에 Web 선택합니다. Project Template 목록에서 ASP.NET Web Application 선택합니다. Project Name "ProductsApp" 입력하고 OK 클릭합니다.

 

ASP.NET Project 대화상자에서 Empty template( 템플릿) 선택합니다.

"Add folders and core reference for"("폴더 핵심 참조 추가") 하단의 Web API Check 하고 OK 클릭합니다.

[!주목] "Web API" Template 사용하여 Web API Project 생성할 수도 있습니다.. Web API template ASP.NET MVC 사용하여 API Help Page 제공합니다. MVC 없이 Web API 작성하는 모습을 보여주기 위해 Empty template 사용합니다. 일반적으로 Web API 사용하기위해 ASP.NET MVC 알필요는 없습니다.

 

Model 추가하기

Model application 에서 Data 표현하는 객체입니다. ASP.NET Web API model JSON, XML 또는 다른 형식으로 자동적으로 직렬화해줍니다. 그리고 직렬화된 data HTTP Response Message Body 작성합니다. Client 직렬화된 형식을 읽을 있다면 Object Deserialize 있습니다. 대부분의 Client 들은 XML 이나 JSON Parsing 있습니다. 게다가 HTTP request Message Accept header 설정하여 원하는 format  표시하는 것도 가능합니다.

 

그럼, Product 나타내는 간단한 Model 생성하는 부터 시작해 봅시다.

Solution Explorer 아직 보이지 않는다면, View Menu 클릭하여 Solution Explorer 선택하십시오.

 

Models 폴더를 마우스 오른쪽 버튼으로 클릭합니다. 나타난 Context Menu 에서 Add 선택하고 Class 선택합니다.

 

Class Name 으로 "Product" 지정합니다. Product Class 다음 Properties 추가합니다.

namespace ProductsApp.Models
{
    public class Product
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Category { get; set; }
        public decimal Price { get; set; }
    }
}

 

 

Controller 추가하기

Web API 에서 Controller HTTP Request 처리하는 객체입니다. 이제 Product 목록 이나 지정한 ID 단일 Product 정보를 반환하는 Controller 추가합니다.

[!주목] ASP.NET MVC 사용해 본적이 있다면 이미 controller 익숙할 것입니다. Web API Controller MVC Controller 유사하지만 Controller class 대신에 ApiController Class 상속합니다.

 

Solution Explorer 에서  Controller folder 마우스 오른쪽 버튼을 이용하여 클릭합니다. Add 선택한 Controller 선택합니다.

 

Add Scaffold 대화상자에서 Web API Controller - Empty 선택합니다. Add 클릭합니다.

 

Add Controller 대화상자에서 Controller 이름을 ProductsController 지정합니다. Add 클릭합니다.

 

Scaffolding Controller folder ProductsController.cs 라는 이름의 파일을 생성합니다.

[!주목]Controller 파일들을 Controllers 라는 이름의 folder 넣지 않아도 됩니다. Folder 이름은 단지 Source 파일들을 구성하기위한 편리한 방법중 하나입니다.

파일이 아직 열려있지 않다면, 파일을 더블클릭하여 엽니다. 열린 파일의 코드를 다음의 코드로 대체합니다.

using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;

namespace ProductsApp.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[]
        {
            new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 },
            new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M },
            new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
        };

        public IEnumerable<Product> GetAllProducts()
       
{
            return products;
        }

        public IHttpActionResult GetProduct(int id)
       
{
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }
    }
}

 

예제를 단순하게 유지하기 위해서 Products Controller Class 내부에 고정된 배열로 저장되어 있습니다. 물론 실제 application 에서는 database 다른 외부의 data source 부터 Query 하여 사용합니다.

 

Controller 에서는 Product 반환하는 두가지 Method 정의합니다.

  • GetAllProducts Method 는 Ienumerable<Product> 형식의 Product 전체 목록을 반환합니다.
  • GetProduct Method ID   단일 Product 조회합니다.

 

작동하는 Web API 이게 다입니다. Controller Method 하나 이상의 URL 일치합니다 :

 

Controller Method

URI

GetAllProducts

/api/products

GetProduct

/api/products/id

 

GetProduct Method URL id placeholder 입니다. 얘룰 둘어 ID 5 product 조회하는 URL api/products/5.입니다.

Web API HTTP request Controller method Route하는 방법에 대해서는 Routing in ASP.NET Web API 참조하십시오.

 

javascript jQuery web API 호출하기.

이번에는 Web API 호출하기위해 AJAX 사용하는 HTML page 추가합니다. AJAX 호출을 만들고 반환된 결과로 Page Update  하기 위해서 jQuery 사용합니다.

 

솔루션 탐색기에서 Project 오른쪽 마우스 버튼을 클릭하여 Add 선택하고 New Item 선택합니다.

 

New Item 대화상자에서 Visual C# 포함된 Web node 선택하고 HTML Page item 선택합니다. Page 이름은 "Index.html" 으로 지정합니다.

 

파일의 모든 내용을 다름 내용으로 바꿉니다 : 

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Product App</title>
</head>
<body>

  <div>
    <h2>All Products</h2>
    <ul id="products" />
  </div>
  <div>
    <h2>Search by ID</h2>
    <input type="text" id="prodId" size="5" />
    <input type="button" value="Search" onclick="find();" />
    <p id="product" />
  </div>

  <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.0.3.min.js"></script>
  <script>
    var uri = 'api/products';

    $(document).ready(function () {
      // Send an AJAX request
      $.getJSON(uri)
          .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
              // Add a list item for the product.
              $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
          });
    });

    function formatItem(item) {
      return item.Name + ': $' + item.Price;
    }

    function find() {
      var id = $('#prodId').val();
      $.getJSON(uri + '/' + id)
          .done(function (data) {
            $('#product').text(formatItem(data));
          })
          .fail(function (jqXHR, textStatus, err) {
            $('#product').text('Error: ' + err);
          });
    }
 
</script>
</body>
</html>

 

jQuery 가져오는 방법에는 몇가지방법이 있습니다. 예제에서는 Microsoft Ajax CDN 사용했습니다. http://jquery.com/ 에서도 다운로드 받을수 있으며, ASP.NET "Web API" project template 에도 jQuery 포함되어 있습니다.

 

Product 목록 가져오기

product 목록을 조회해오기 위해서 "/api/products" HTTP GET Request 보냅니다.

jQuery getJSON function AJAX request 보냅니다. response 에는 JSON 객체의 배열이 포함되어 있습니다. done function request 성공했을 호출될 callback 지정합니다. callback 에서 product 정보를 가지고 DOM update 합니다.

$(document).ready(function () {
    // Send an AJAX request
    $.getJSON(apiUrl)
        .done(function (data) {
            // On success, 'data' contains a list of products.
            $.each(data, function (key, item) {
                // Add a list item for the product.
                $('<li>', { text: formatItem(item) }).appendTo($('#products'));
            });
        });
});

 

ID Product 정보 가져오기

ID Product 정보를 가져오기 위해서는 "/api/products/id" HTTP GET request 보냅니다. 여기서 id Product ID 입니다.

function find() {
    var id = $('#prodId').val();
    $.getJSON(apiUrl + '/' + id)
        .done(function (data) {
            $('#product').text(formatItem(data));
        })
        .fail(function (jqXHR, textStatus, err) {
            $('#product').text('Error: ' + err);
        });
}

 

AJAX request 보내기 위해 이전과 동일하게 getJSON 호출합니다. 하지만 이번에는 request URI ID 포함시킵니다. request 부터 전달된 response 단일 Product 표현된 JSON 입니다.

 

Application 실행하기

 

F5 눌러 application debugging 시작합니다. 다음과 같이 web page 보여야 합니다 :

 

ID Project 조회하기 위해서는 ID 입력하고 Search 버튼을 클릭합니다.

 

유효하지 않은 ID 입력하면 server HTTP 오류를 반환합니다.

 

F12 사용하여 HTTP Request Response 내용 보기

HTTP Service 이용하는 작업을 HTTP Request Response Message 확인하는 것은 매우 유용합니다. Internet Explorer 9 F12 개발자도구를 사용하면 작업이 가능하다. Internet Explorer 9 에서 F12 툴러 도구를 엽니다. Network Tab 클릭하고  Start Capturing 누릅니다. 이제 Web page 돌아가서 F5 눌러 Web page 새로고침합니다. Internet Explorer browser web server 간의 traffic capture 합니다. summery page page 에서 일어난  모든 network traffic 보여줍니다.

 

상대경로 URI 중에서 "api/products/" 항목을 찾으십시요. 항목을 선택하고 Go to detail view 클릭합니다. 상세 View request response header body 있는 tab 있습니다. 예를 들어, Request headers Tab 클릭하면 Accept header 속에 client 요청한 "application/json" 확인할 있습니다.

 

Response body tab 클릭하면 product list 어떻게 JSON 으로 Serialized 되어 있는지 확인할 있습니다. 다른 browser 들고 유사한 기능을 가지고 있습니다. 다른 유용한 Tool 로는 Fiddler 있으며 web debugging proxy 입니다. Fiddler 사용하여 HTTP traffic 있으며. HTTP request 재구성하여 request HTTP header 완벽하게 제어할 있게 해줍니다.

 

Azure 에서 App 실행하기

완성된 site 실제 구동하는 web app 으로 실행되는 모습을 보는 것은 어떻습니까? 다음 버튼을 간단히 click 하는 것만으로 여러분의 Azure 계정에 앱의 전체 버전을 배포하는 것이 가능합니다.

Azure Solution 배포하려면 Azure 계정이 필요합니다. 계정을 가지고 있지 않다면, 다음과 같은 옵션을 사용할 있습니다 :

  • 무료로 Azure 계정을 여십시오 - 유료 Azure service 사용할 있는 credits 얻습니다. 모두 사용한 후에도 계정을 유지할 있으며 무료 Azure service 사용할 있습니다.
  • MSDN 구독자 혜택 활성화 - 여러분이 가진 MSDN subscription 매월 유료 Azure service 사용할 있는 credits 지급합니다.

 

다음 단계

 

 

 

 

 

행복한 고수되셔요~

 

woojja ))*

\\\\\\\\\\\\\\\\

 

PS : OnoNote 에 썼다가 이쪽으로 옮기니 보여지는 글씨들이 맘에 안드네요. ㅡㅡ;

불편하셔도 이해해주셔요. ^^;

 

 













저작자 표시 비영리 변경 금지
신고
Posted by woojja

 

 

Framework Version 2 이후의 MVC와 Web API 간의 주된 차이점은 Web API handler 의 경우 HttpTaskAsynHandler 의 Subclass 인 반면 MVC 버전의 MvcHandler 는 IHttpAsyncHandler 를 직접 구현하였다.

 

HttpTaskAsyncHandler 는 Web API 2 에서 지원되는 .NET version 인 .NET 4.5 에만 있다.

 

동일한 ASP.NET process 내에서 MVC와 Web API 를 동시에 구동할 때 ASP.NET 은 HttpApplication을 사용하게된다.

Request 가 들어오면 MapRequestHandler event 에서 사용할 Http Handler 를 결정한다.

이 단계에서 route matching 이 일어나고 request 는 선택된 route 와 관련된 IRoutHandler 를 통해 이동하게된다.

 

IRouteHandler 의 유일한 목적은 request 를 처리(handle)할 수 있는 IHttpHandler 를 생성하는 것이다.

만일 IRouteHandler 가 HttpControllerRouteHandler (Web API route) 라면 Web API 경로가 선택되어 Request 는 HttpControllerHandler 에서 끝마치게되며, 반대로 Route Handler 가 MvcRouteHandler 라면 MVC 경로를 취하여 MvcHandler 로 이동한다.

 

 

(APRESS) ASP.NET Web API 2 Recipes 중에서...

 

 

행복한 고수되셔요. ^^*

 

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 

 

 













저작자 표시 비영리 변경 금지
신고
Posted by woojja
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (1)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (2)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (3)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (4)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (5)

지난번까지는 ASP.NET MVC2 Application 구성에 대해서 간단하게 살펴보았습니다.
그리고 MVC Application 을 생성했을때 기본적으로 만들어지는 파일들로 Build 까지 해 보았습니다.

이번 부터는 본격적으로 Application 을 만들어 나가려고 하는데요.
지난 아티클에서 만든 기본적인 Web Application 을 바탕으로 이어 나가려고 합니다.

고객들의 List 를 뿌려보고요. 고객 정보를 조회하고 고객의 주소를 생성, 수정, 삭제하는 코드를 작성해 보도록 하겠습니다. 

다음 세 개의 Controller 를 작성할 것입니다. 고객 리스트, 고객정보를 다루는 Controller, 주소를 생성, 수정, 삭제하는 Address Controller 와 마지막으로 Application 의 환영 Page View를 다루는 Home Controller 입니다. 

음 그럼 먼저 master 파일을 아래의 Source 로 변경합니다.

    1 <%@ Master Language="VB" Inherits="System.Web.Mvc.ViewMasterPage" %>

    2 

    3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    4 <html xmlns="http://www.w3.org/1999/xhtml">

    5 <head runat="server">

    6     <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title>

    7     <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />

    8 </head>

    9 

   10 

   11 <body>

   12     <div class="page">

   13 

   14         <div id="header">

   15             <div id="logo">

   16                     <h1>My MVC Application</h1>

   17             </div>           

   18             <ul id="menu">

   19                 <li>

   20                     <%= Html.ActionLink("Home", "Index", "Home")%>

   21                 </li>

   22                 <li>

   23                     <%= Html.ActionLink("About Us", "About", "Home")%>

   24                 </li>

   25                 <li>

   26                     <%= Html.ActionLink("Customers", "Index", "Customer") %>

   27                 </li>

   28             </ul>

   29         </div>

   30 

   31         <div id="main">

   32             <div id="content">

   33 

   34                 <asp:ContentPlaceHolder ID="MainContent" runat="server" />

   35 

   36             </div>

   37             <div id="footer">

   38                 <p>

   39                     My Sample MVC Application &copy; Copyright 2009

   40                 </p>

   41             </div>

   42         </div>

   43 

   44     </div>

   45 </body>

   46 </html>


그럼 EDM (Entity Data Model) 을 사용하는 것으로부터 시작하겠습니다.

AdventureWorks Entity Data Model 을 추가하도록 하겠습니다.
Models 폴더를 오른쪽 클릭해서 Entity Data Model 을 생성합니다.

파일명은 AdventureWorks.edmx 입니다. 

선택을 하게되면 Entity Data Model Wizard 가 열립니다.
"Generate from database" 항목을 선택합니다.
Connection 정보가 없군요.
그럼 생성을 해 줘야겠죠. "New Connection..." 버튼을 클릭해 줍니다.

SQL Server 를 선택해 주고요. "Continue" 버튼을 클릭합니다.

서버를 선택할 수 있는 창이 뜹니다.
서버를 선택하고 Database 를 선택한 후 연결상태를 테스트 합니다.
그리고 "OK" 버튼을 꾹 눌러주면...

선택한 사항에 대한 내용이 채워져 있습니다.
Connection String 에 대해서는 한번 살펴보셔도 좋을 듯 합니다.
Wizard 를 사용해서 뿐만이 아니라 직접 코딩할때도 쓸수 있을 테니 말이죠.
그리고 Checkbox 의 내용을 보면 Textbox 에 적혀진 이름으로 Web.config 파일에 ConnectionString 정보를 저장하겠느냐 라는 옵션을 달아 놨습니다.
Web.config 파일을 확인해 보셔도 좋을 듯 합니다.

Database 를 선택했으니 사용하려는 Table 을 선택해야겠지요?

과정을 모두 마치게 되면 아래와 같이 Entity Model 이 생성됩니다.
이 파일을 직접 별도의 Text Editor 로 열어보십시요. Address, CustomerAddress, Customer Class 가 만들어 진것을 확인 하실수 있습니다.

이번엔 AdventureWorksRepository 라는 Repository Class 를 생성할 텐데요... 이 Repository 라는 녀석은 방금 생성한 Model 의 Entity 들을 검색하기위한 Mehtod 를 노출하는 역할을 합니다.


아래는 AdventureWorksRepository.vb 파일의 코드입니다.

    1 Public Class AdventureWorksRepository

    2     Private context As New AdventureWorksLT2008R2Entities()

    3 

    4     Public Function GetCustomers(ByVal page As Integer, ByVal size As Integer) As IEnumerable(Of Customer)

    5         Return context.Customer.OrderBy(Function(c) c.CustomerID).Skip(page * size).Take(size)

    6     End Function

    7 

    8     Public Function GetCustomerById(ByVal customerId As Integer) As Customer

    9         Return context.Customer.Include("CustomerAddress.Address").Where(Function(c) c.CustomerID = customerId).First()

   10     End Function

   11 

   12     Public Sub AddAddress(ByVal address As Address, ByVal customerId As Integer)

   13         address.rowguid = Guid.NewGuid()

   14         address.ModifiedDate = DateTime.Now

   15         context.AddObject("Address", address)

   16 

   17         Dim customerAddress As New CustomerAddress()

   18         customerAddress.Address = address

   19         customerAddress.Customer = GetCustomerById(customerId)

   20         customerAddress.rowguid = Guid.NewGuid()

   21         customerAddress.AddressType = "Shipping"

   22         customerAddress.ModifiedDate = DateTime.Today

   23         context.AddObject("CustomerAddress", customerAddress)

   24         context.SaveChanges()

   25     End Sub

   26 

   27     Public Sub UpdateAddress()

   28         context.SaveChanges()

   29     End Sub

   30 

   31     Public Sub DeleteAddress(ByVal address As Address, ByVal customerId As Integer)

   32         Dim customerAddress As CustomerAddress = GetCustomerAddressById(address.AddressID, customerId)

   33         context.DeleteObject(address)

   34         context.DeleteObject(customerAddress)

   35         context.SaveChanges()

   36     End Sub

   37 

   38     Public Function GetAddressById(ByVal addressId As Integer) As Address

   39         Return context.Address.Where(Function(a) a.AddressID = addressId).First()

   40     End Function

   41 

   42     Public Function GetCustomerAddressById(ByVal addressId As Integer, ByVal customerId As Integer) As CustomerAddress

   43         Return context.CustomerAddress.Where(Function(a) a.AddressID = addressId AndAlso a.CustomerID = customerId).First()

   44     End Function

   45 End Class


다음으로는 CustomerController 가 고객 List 를 표시하는데 사용할 ViewData 를 생성할 것입니다.
ViewData 파일들을 저장할 ViewData 폴더를 생성해 줍니다.


CustomerViewData Class 를 생성해줍니다.


다음은 CustomerViewData Class 의 내용입니다.

    1 Public Class CustomerViewData

    2     Public Property Customers As IEnumerable(Of Customer)

    3     Public Property PreviousPage As Integer

    4     Public Property NextPage As Integer

    5 End Class


다음은 AddressController 가 사용할 ViewData를 생성할 것입니다.

다음은 AddressViewData Class 의 내용입니다.

    1 Public Class AddressViewData

    2     Public Property Address As Address

    3     Public Property CustomerId As Integer

    4 End Class


생각외로 이미지를 Capture 를 하면서 설명을 하다보니 내용은 별개 없는데 엄청 기네요...
이렇게 해야하나 싶기도 한데... ㅡㅡ'
그래도 한번은 끝까지 해보려 합니다.

오늘은 Entity Data Model 을 생성하는 방법을 살펴봤구요.
Entity Data Model 이 Entity 를 노출하기위한 Repository Class 를 생성했습니다.
그리고 Controller 가 사용할 ViewData 까지 생성해 보았습니다.

다음은 오늘 생성한 것들을 바탕으로 본격적으루다가 Controller 들과 View 들을 생성해 보겠습니다.


행복한 고수되십시요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\












저작자 표시 비영리 변경 금지
신고
Posted by woojja

[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (1)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (2)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (3)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (4)

이번엔 ASP.NET Routing 에 대해서 살펴볼까 합니다.

ASP.NET MVC Framework 에서는 Controller Class와 Action 에 URL을 연결하기 위해서 ASP.NET Routing 을 사용합니다. ASP.NET Routing 은 여러분이 먼저 정의해 놓은 패턴에 따라 URL 내의 parameter 를 파싱합니다. 그리고 자동적으로 parameter argument 로 Controller Action 에 변수로 전달합니다. 이 과정에서 Web site 내의 특정파일을 연결할 필요는 없습니다.

기본적으로 ASP.NET MVC Project 는 미리 설정된 URL Routing Rule Set 을 가집니다.
새로운 ASP.NET MVC project template 에 의해서 생성되는 Global.asax 의 ASP.NET Application Class 내에 선언된 기본적인 이름 기반(name-based) URL mapping 규칙 set 을 사용하여 개발을 시작할 수 있습니다.
기본적으로 [Controller]/[Action]/[id] 의 패턴을 가지고 있습니다.

우리가 만든 Web Site 를 호출해 보겠습니다. 50000번 포트를 사용하고 있었죠?
http://localhost:50000 를 날립니다. 
안뜬다면... ASP.NET Development Web Server 가 호출되어있나 확인하시고...
아래와 같이 뜹니다.

 우리가 Web Server 에 http://localhost:50000 라는 Request 를 날리면 ASP.NET Routing Engin 은 이 Request 를 가로 채서 기본적으로 등록된 [Controller]/[Action]/[id] 패턴의 Route 를 적용할 것입니다.
그런데 URL 에는 Pattern 에 적용할 내용이 포함되어 있지 않죠?
그럼 Routing Engin은 기본 Controller 와 기본 Action 으로 instance를 생성합니다.
기본 값들은 어떻게 알 수 있냐고요?

Global.asax 파일의 Application Class 를 보면 알 수 있습니다.

    7     Shared Sub RegisterRoutes(ByVal routes As RouteCollection)

    8         routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

    9 

   10         ' MapRoute takes the following parameters, in order:

   11         ' (1) Route name

   12         ' (2) URL with parameters

   13         ' (3) Parameter defaults

   14         routes.MapRoute( _

   15             "Default", _

   16             "{controller}/{action}/{id}", _

   17             New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _

   18         )

   19 

   20     End Sub


17 Line 을 보시면 아시겠죠?

음... 또한가지 알아 두셔야 할 점은 이 RegisterRoutes Method 를 수정해서
 [Controller]/[Action]/[id] 패턴의 Route Rule 을 새롭게 수정하실수 있다는 것입니다.

이번 아티클까지 MVC Framework 을 이용해서 Site 를 제작하는데 필요한 내용을 간략하게 살펴보았고 다음에는 Site를 제작해 보도록 하겠습니다.

그럼 행복한 고수되십시요.


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\












저작자 표시 비영리 변경 금지
신고
Posted by woojja
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (1)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (2)
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (3)

이번엔 View 를 살펴보도록 하겠습니다.

View 는 MVC application 에서 View 는 application 의 User interface 를 표시하기위한 응답가능한 Component 로 presentation logic 을 은닉화하기 위한 용도로만 존재합니다. 그래서 View 는 어떤 application logic 이나 데이터 검색 코드는 포함하지 않아야 합니다. View 는 Controller 가 제공하는 MVC view와 관련된 data object인 View Data Class를 이용해서 적합한 UI 를 만듭니다.

View 는 .aspx, ascx 와 .master 뿐만아니라 View 를 rendering 하는데 관련된 다른 파일들을 사용합니다. 그리고 Views 폴더는 각 Controller 용 View 폴더를 포함하고 있으며 Controller 의 접두어를 사용합니다.

아래와 같이 말이죠...


Views Folder 내에 AccountController, HomeCotroller 들에 해당하는 Account, Home 폴더가 있음을 확인할 수 있습니다.

View template은 기본적으로 Code behind 파일이 없습니다.


행복한 고수되십시요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\












저작자 표시 비영리 변경 금지
신고
Posted by woojja
[.NET/ASP.NET] - [ASP.NET] ASP.NET MVC2 Site 만들기 (1)

먼저 프로젝트를 구성하는 각 폴더에 대해서 살펴보려 합니다.


  • App_Data : Data file 을 담아 놓는 폴더입니다.
  • Content : CSS 파일이나 image 같은 정적인 파일들을 저장하는 폴더죠.
  • Controllers : 폴더 명을 보면 알 수 있죠? Controller Class들을 담아 놓는 폴덥니다.
    잠시후에 다시 설명을 하겠지만 Controller 는 MVC 기반의 application 에서 사용자 상호작용을 처리한다거나 데이터를 조작한다거나, UI를 표시할 View 를 선택하는데 사용되는 component 라고 할 수 있습니다.
    MVC Framework 에서는 모든 컨트롤로의 접미사로 Controller 를 붙여야 한다는거... 잊지마셔요.
  • Models : MVC Web application 에서 사용하는 application model 들을 담아 놓는 폴더입니다. 주로 Object를 정의하고 데이터 저장소 작업을 위한 로직을 정의한 코드를 포함하고 있습니다.
  • Scripts : 말그대로 JavaScript 파일을 저장합니다.
  • Views : View 파일을 담는 걸 추천하죠. View 는 application의 User interface를 표시하는  component 라고 할 수 있습니다. View 로는 .aspx, .ascx 와 .master 파일과 View 를 만들어 내는 기타 파일들이라 하겠습니다. View 폴더는 각 Controller 를 위한 폴더를 포함하고 있는데 폴더명은  Controller의 접두어를 사용합니다. 위 그림에서 보시면 Views 폴더내에 Account, Home 폴더가 있는 것을 보실 수 있습니다.
    그리고 그 내부에는 기본적으로 Shared 폴더가 생성되는데 여러 controller 에서 공통적으로 사용하는 .master 파일과 같은 View 가 포함되어있습니다. 
  • Global.asax : MVC Web application 이 사용하는 기본적인 URL Routing을 포함한 전역적인(global 한) 항목들에 대한 코드가 담겨 있습니다.  
  • Web.config : application 설정 정보를 담고 있습니다.

여기까지는 MVC Web Application 을 구성하는 폴더에 대한 설명이었습니다.

다음은 Controller, Model, View 에 대한 사항들을 하나하나 설명하기로 하겠습니다.



행복한 고수되셔요.

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\













저작자 표시 비영리 변경 금지
신고
Posted by woojja
TAG ASP.NET, MVC2
이전버튼 1 이전버튼

티스토리 툴바