본문 바로가기

WEB/ASP.NET

[ASP.NET 공부] ASP.NET 4.6 MVC 프레임워크(1) - 짱우의 코딩일기 - 티스토리

반응형

  'ASP.NET & Core를 다루는 기술'이라는 책을 통해서 ASP.NET 공부를 하기 시작했다. 공부를 하다보니 예제와 설명이 적절하게 섞여서 나온 책인 것 같다. 위의 책을 바탕으로 공부한 내용을 글로 쓰려한다.


ASP.NET 4.6 MVC 프레임워크

  MVC 패턴은 Model, View, Controller 세 가지 영역으로 나눠서 개발하는 패턴을 말한다. 모델(Model)은 데이터(Data)를 의미하고, 뷰(View)는 프레젠테이션(Presentation) 영역을 다루고, 컨트롤러(Controller)는 입력(Input) 및 비즈니스 로직(Business Logic)을 전담한다.

모델, 뷰, 컨트롤러 간단 정리

모델

  • MVC에서 모델은 C#의 클래스
  • 모델(Model)은 데이터 액세스 및 비즈니스 로직을 처리
  • 일반적으로 데이터 액세스 레이어(Data Access Layer)로 봄

  • UI
  • 프레젠테이션 레이어(Presentation Layer)
  • 애플리케이션의 외양이며 모델 데이터를 렌더링하는 역할을 담당
  • 모델을 통해 데이터에 액세스해 데이터가 어떻게 나타나야 하는지를 정함

컨트롤러

  • 응용 프로그램과 사용자 입력 간의 관문 역할
  • 컨트롤러는 전체 패턴의 연결 고리
  • 모델을 조작하고 이를 출력할 UI를 결정하는 역할을 수행
  • 비즈니스 로직(Business Logic) 처리

실습 ( MVC 웹 프로젝트 만들어보기 )

  • 프로젝트를 'MvcHello'로 새로 만들고 비어 있음(Empty) 템플릿을 선택한다. 그리고 다른 참조 추가는 아무것도 하지 않는다.
  • 프로젝트에 'Controllers' 디렉토리를 하나 만들어준다.
  • Controllers 디렉토리 -> 마우스 오른쪽 클릭 -> 컨트롤러 -> MVC 5 컨트롤러 - 비어있음 -> 이름은 'HelloController'로 설정
  • 'HelloController.cs' 파일을 다음과 같이 코드를 수정한다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcHello.Controllers
{
    // 컨트롤러 : 클래스
    public class HelloController : Controller
    {
        // 액션 메서드 : 메서드
        // GET: Hello
        public string Index()
        {
            return "<em>짱우의 코딩일기!!!</em>";
        }
    }
}
  • 프로젝트 -> 마우스 오른쪽 클릭 -> 시작 프로젝트로 설정 클릭

  URL을 위와 같이 바꿔준 후에 페이지 요청을 하게 되면 화면이 제대로 뜨는 것을 확인할 수 있다.


스캐폴딩

  ASP.NET MVC에서 제공하는 스캐폴딩(Scaffolding)이란 기능은 하나 이상의 클래스(테이블)를 기반으로 신속하게 데이터 입출력 기능을 구현해 CRUD를 구현하는 코드와 뷰 페이지를 자동으로 만들어준다.


실습 ( 간단한 컨퍼런스 정보 입출력 기능을 EF Code First로 구현하기 )

  • MvcConf 프로젝트를 생성해준다.
  • 템플릿은 MVC로 설정해준다.
  • Models 폴더에 'Room.cs' 클래스를 만들어 주고 코드는 다음과 같이 입력한다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace MvcConf.Models
{
    public class Room
    {
        public int RoomID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Speaker> Speakers { get; set; }
    }

    public class Speaker
    {
        public int SpeakerID { get; set; }
        public string Name { get; set; }
        public int RoomID { get; set; }

        public virtual Room Room { get; set; }
    }
}
  • Controllers 폴더에 컨트롤러를 만들어 준다. 'Entity Framework를 사용하며 뷰가 포함된 MVC 5 컨트롤러'로 만들어 준다.

  위와 같이 설정해주고 추가를 눌러준다. 만약 추가를 눌렀는데 오류가 발생하면 프로젝트를 빌드 시킨 후 다시 컨트롤러를 추가해주면 된다.

  • 위와 같은 방법으로 Controllers 폴더에 Speaker 클래스에 대한 컨트롤러를 생성한다.
  • 프로젝트를 빌드 한 후에 /Rooms/Index 경로를 요청하면 다음과 같은 화면이 뜬다.

  • 다음과 같이 방 두 개를 생성해서 리스트를 출력해보았다.

  스캐폴딩 기능으로 구현된 코드는 Entity Framework에 의해서 자동으로 테이블을 만들고 데이터를 저장한다. 이때 기본으로 만들어지는 데이터베이스에 대한 정보는 Web.config 파일의 connectionStrings 섹션에 컨텍스트 이름으로 데이터베이스 연결 문자열이 자동으로 생성되어 그곳에 만들어진다.

  SQL Server 개체 탐색기에서 만들어진 방 데이터들을 확인해볼 수 있다.

반응형