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


이번엔 Controller 에 대해 알아보도록 하겠습니다.

기존의 ASP.NET Web Appliction 의 사용자 상호작용(User interaction)은 Page 를 대상으로 조직화되고 이들 페이지의 Event를 발생시키고, 처리하도록 되어있습니다.
반면에 ASP.NET MVC application에서의 User interaction 은 Controller 들과 Controller 가 포함하고 있는 Action 들로 짜여져 있습니다. ASP.NET MVC framework은 Controller 라고 하는 Class 들과 URL을 연결시켜주는데 Controller 는 들어오는 Request 를 처리하고 사용자들의 입력과 상호작용(interaction)을 다루며,  적절한 application 로직을 실행합니다. Controller 는 Request 에 대한 HTML 을 생성하기 위해서 분리된 View Componet 를 호출합니다. MVC application에서 iew는 단순히 정보만을 표시하며 controller 는 사용자들의 입력과 상호작용을 처리하고 응답합니다.

Controller 생성시 주의할 점은 모든 Controller Class 는 반드시 "Controller" 접미사를 붙여야 합니다. 모든 Controller class 는 iController interface 를 구현하거나 Controller base class 를 상속해야 합니다. Controller 는 Action method 를 정의하고 있고 MVC Web application 의 workflow 에서 Controller 의 action method 는 들어오는 web request 를 처리합니다. 이들 Action mehtod 는  parameter 를 받게 되는데 이들 parameter를 이용하여 application code를 실행시키고 database 로 부터 가져온 data object들을 부려주고 수정하며, Browser 에 뿌려주기 위해 View 를 결정하는 역할을 합니다.
 
그럼 HomeController 가 어떻게 생겼나 살펴보도록 하지요.

    1 <HandleError()> _

    2 Public Class HomeController

    3     Inherits System.Web.Mvc.Controller

    4 

    5     Function Index() As ActionResult

    6         ViewData("Message") = "Welcome to ASP.NET MVC!"

    7 

    8         Return View()

    9     End Function

   10 

   11     Function About() As ActionResult

   12         Return View()

   13     End Function

   14 End Class


클래스 위에 보이는 HandleError() 라는 Attriute filter 는 MVC application 이 동작하다 발생하는 경우 친숙한 에러를 보여주기위해 Controller 나 Action Method 위에 명시적으로 표시해줍니다.

각 Method 명은 요청받은 URL 을 통해 Action 에 연결됩니다. action method 가 호출가능하려면 public 이어야 하고 NonActionAttribute 속성을 가지고 있지 않아야 합니다.

action method 로 사용하려면
  • method 는 반드시 public 이어야 합니다.
  • method 는 static method 일 수 없습니다.
  • method 는 extension method 가 될 수 없습니다.
  • method 는 constructor, getter, setter일 수 없습니다.
  • method 는 generic types을 포함할 수없습니다.
  • method is controller base class의 method 가 아니어야 합니다.
  • method ref 나 out parameter를 가질 수 없습니다.
    등과 같은 제약이 따릅니다.

    Action Method 는 ActionResult instance를 반환해야합니다. action result 는 browser 요청에 대한 응답에서 모든 실행을 마친후에 Controller action 이 반환하는 것입니다.
    ActionResult 에는 View randering, 다른 action 으로의 redirecting, 다른 페이지로의 redirecting 등이 포함됩니다.
    ASP.NET MVC framework 은 다음과 같은 몇가지 타입의 acion result 를 지원합니다.
    ViewResult, EmptyResult, RedirctResult, JsonResult, JavaScriptResult, ContentResult, FileContentResult, FilePathResul, FilestreamResult

    여기서는 ViewResult()를 반환하지 않고 Controller base Class의 View() Method 를 반환하고 있는데 주로 ActionResult 를 직접 반환하지 않고 다음과 같은 Controller base Class 의 Method들중 하나를 반환합니다.
    View(), Redirect(), RedirectToAction(), RedirectoRoute(), Json(), JavaScriptResult(), Content(),File()등입니다.

    그리고 View 에 Data를 전달하기 위해서 위코드에서 보는 바와 같이 Controller base class 의 ViewData Property을 사용할 수 있습니다.
    ViewDtaDictionar 는 대소문자를 구분하는 문자열을 Key로 사용합니다.

    흠...
    대략적인 Controller 의 내용을 살펴봤습니다.

    아래 링크를 통해 더욱 자세한 내용을 살펴보시기 바랍니다.
    http://www.asp.net/mvc/tutorials/asp-net-mvc-controller-overview-cs
    제가 적은 위 내용들은 위 페이지 내용과 hands on lab을 정리한 것입니다.
  • 행복한 고수되십시요.


    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 ))*
    \\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    반응형
    Android Application 을 Debug 하고 Deploy 를 하려고 하면 두가지 Key 가 필요합니다.
    Debug 를 위해 필요한 SDK Key 의 경우 Android SDK 를 설치하게되면 기본적으로 부여됩니다.
    하지만 개발자가 개발하게될 각각의 Application 은 Deploy를 하기 위해서 각각의 Custom Key 가 필요하게 되는데요.
    그 Custom Key를 생성하는 방법을 알아보겠습니다.

    먼저 방법은 두가지가 있습니다.
    그것은 Android Tools>Export Signed Application Package... 메뉴를 사용하는 방법과
    Export 하는 방법입니다.

    차례로 알아보도록 하겠습니다.

    프로젝트를 오른쪽 클릭해서 나타나는 메뉴중  Android Tools>Export Signed Application Package... 를 선택합니다.

    나타난 화면의 Project 란에 알맞은 프로젝트명을 입력합니다.
    NetworkTest 프로젝트를 선택했으므로 기본적으로 NetworkTest 가 입력되어있습니다.
    Next를 클릭합니다.

    기존의 KeyStore 를 사용할 수 있지만 새로운 Keystore를 생성하겠습니다.
    Password 를 잊지 마십시요.

    여기서 다시 넣게 되니까요... ㅋㅋㅋ

    deploy 할때 생성될 Package 의 .apk 를 명을 입력합니다.

    폴더도 선택해 주어야 겠죠?
    Finish 버튼을 클릭해 줍니다.

    만들어 졌군요.

    그럼 device 에 install 하겠습니다.
    Success 됐군요... ^^


    이번엔 두번째 방법인 프로젝트를 Export 하는 방법을 알아보도록 하겠습니다.

     프로젝트를 오른쪽 클릭해서 나오는 메뉴중 Export... 를 선택합니다.

    Export 할 대상 항목을 선택을 하고요...

    Export 할 프로젝트를 선택합니다.
    선택한 프로젝트명이 기본적으로 입력되어 있습니다. 
    이 아래 부터는 이전 방법과 동일한 순서로 진행됩니다.







    설치해 보겠습니다.
    Success 가 나왔군요...


    이상으로 각 Android Application 을 배포하는데 필요한 Custom Keystore 생성하는 방법을 알아보고 배포까지 해 보았습니다.


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

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

     
    반응형

    'ETC > Android' 카테고리의 다른 글

    [Android] Samsung Galaxy Emulator 추가하기  (0) 2010.06.10
    [Android] 구글 TV  (0) 2010.05.25
    [Android] Android 개발환경 구축  (2) 2010.05.16

    + Recent posts