• 목록
  • 아래로
  • 위로
  • 3
  • 0x00000FF
  • 조회 수 1432

본격적으로 작업에 들어가기 앞서, MVC가 무엇인지에 대해 알 필요가 있습니다.

MVC란 각각 Model, View, Controller 의 머릿글자를 따서 만들어진 용어입니다. 

데이터를 기술하는 Model과, Model로 부터 사용자에게 보여지는 부분을 정의하는 View, 그리고 각각의 처리에 대해 기술하는 Controller가 합쳐져 하나의 애플리케이션을 구성합니다.

기존의 사이트는 이들 역할을 하는 요소들이 한 데 모여있어 코드의 유지 보수가 많이 어려웠습니다.  ASP만 해도 컨트롤러 역할을 하는 코드와 뷰 역할을 하는 코드가 뒤죽박죽 섞여 있었고, 나름 코드를 분리하는 Code Behind라는 개념을 도입한 ASP.NET Web Form도 있었지만, 이 역시 MVC의 장점을 가지기에는 다소 어려웠던것이 현실입니다. 그러므로 코드의 유지보수 난이도 또한 같이 상승할 수 밖에 없었습니다.

이에 MVC 패턴을 적용한 프레임워크들이 등장하게 됩니다. 대표적으로 Java의 Spring Framework, PHP의 CodeIgniter/Laravel 등이 그러하고, 이 강좌에서 다루는 ASP.NET Core MVC 또한 MVC 아키텍쳐를 따르고 있습니다.




참고로 본 프로젝트에서 HTTP2를 사용할 예정이었지만, SSL 인증서를 받기 위해 도메인 주소가 필요하고, 또한 nginx 설정이 다소 길어지므로 원래 주제에 집중하기로 하였습니다. 해당 내용에 대해서는 모든 강좌가 끝난 후 부록으로 싣도록 하겠습니다.




이제! 드디어 ASP.NET Core MVC를 주무를 때가 왔습니다. 적당한 위치에 적절한 디렉토리를 만든 후(여기서 저는 github의 레포지토리 이름과 동일한 studyforus-aspnet-core-lect 라고 하였습니다.), 다음 명령을 내려주세요.

$ dotnet new mvc

그럼 몇줄의 메세지가 뜨고, Restore succeeded. 가 표시되면 완료된 것입니다. 이후 디렉토리를 확인해보면 다음과 같은 디렉토리/파일을 확인하실 수 있습니다. 그 중 신경써야 할 파일/디렉토리만 설명해보면..

obj
Controllers -> 컨트롤러 코드가 들어갈 디렉토리입니다.
Properties
Views -> 뷰 파일(.cshtml) 파일들이 들어갈 디렉토리입니다.
Models -> 모델 파일들이 들어갈 디렉토리입니다.
wwwroot -> 정적 파일(주소로 직접 접근할 수 있는) 파일들이 담긴 디렉토리입니다.
appsettings.Development.json -> 개발모드에서 사용하는 설정들이 기록된 파일입니다.
appsettings.json -> 전체 웹사이트의 설정들이 기록된 파일입니다.
Program.cs
Startup.cs -> 시작 설정을 수행하는 코드가 담긴 파일입니다.
studyforus-aspnet-core-lect.csproj

정도가 되겠습니다.

이 상태에서 다음 명령을 실행하면...

$ dotnet run

Using launch settings from C:\Users\pknowledge\studyforus-aspnet-core-lect\Properties\launchSettings.json...
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
      User profile is available. Using 'C:\Users\pknowledge\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
Hosting environment: Development
Content root path: C:\Users\pknowledge\studyforus-aspnet-core-lect
Now listening on: https://localhost:5001
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

저는 윈도우에서 이 명령을 실행했기 때문에 경로가 윈도우 식으로 표시되지만, 다른 운영체제에서도 동일하게 작동하므로 크게 신경쓸 필요는 없습니다.

한번 웹 브라우저를 열고 localhost:5000 을 입력해보세요. 페이지가 표시되면 성공입니다. 만일 https 페이지로 연결되면서 인증서 오류를 내뿜는 경우, Properties/launchSettings.json 파일을 열어 다음 부분을 이렇게 고쳐주세요.

    "studyforus_aspnet_core_lect": {
         "commandName": "Project",
         "launchBrowser": true,
         "applicationUrl": "http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }

그리고난 뒤 기존의 dotnet 을 종료하고 dotnet run을 다시 한 후 페이지에 접속하면...



사실, https://localhost:5001 로도 (인증서 오류만 무시한다면) https 웹사이트 개발이 가능하지만, 강좌 초반에서도 말했듯 HTTP2 및 SSL을 사용하지 않을 것이므로 해당 부분에 대한 설명은 생략하고, 이후 부록에서 다루도록 하겠습니다. 




축하합니다! 처음으로 ASP.NET Core 홈사이트를 구동하는데 성공하셨습니다.

다음 강좌에서는 어떤 웹사이트를 만들게 될 지, EF(Entity Framework)에 대해 간략하게 짚고 넘어가 보겠습니다.

오늘도 수고하셨습니다. 다음 강좌에서 뵙겠습니다.

이니스프리님 이니스프리 포함 1명이 추천

추천인 1

작성자
0x00000FF 5 Lv. (0%) 2000/2880EXP

잉여입니다.

댓글 3

이니스프리
profile image
감사합니다! 주말에 시간을 내서 연습해봐야겠네요~ ^^
comment menu
2018.09.07. 19:54

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

NoYeah
profile image
저도 연습해봐야겠네요.

국내 많은 사이트들이 WAS로 ASP를 선택하는데에는 이유가 있겠죠 ㅎㅎ
comment menu
2018.09.07. 23:47

신고

"NoYeah님의 댓글"

이 댓글을 신고 하시겠습니까?

title: 에그joyful
profile image
딱 알고있눈게 MVC밖에 없네요
comment menu
2018.09.09. 08:53

신고

"joyful님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [작업 완료] 설 명절 맞이 서버 업데이트 안내 3 마스터 마스터 24.02.11.17:21 686
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 4 마스터 마스터 23.01.14.02:23 4365
217 [Pillow] 파이썬 Pillow 라이브러리를 이용하여 이미지의 배경을 transparent하게 만들기 11 image 이니스프리 이니스프리 19.08.04.13:40 7838
216 [번외편 - 법률] 나무위키의 서술 중 법률용어의 사용에 있어 바로잡아야 할 부분 image 이니스프리 이니스프리 19.07.17.22:44 447
215 [번외편 - 유튜브] Youtube API를 이용하거나 또는 이용하지 않고 채널ID를 추출하는 방법 2 image 이니스프리 이니스프리 19.07.16.17:55 2751
214 24. 메탄올과 에탄올 듀오였츄 14 image 국내산라이츄 국내산라이츄 19.07.07.22:10 1297
213 [Selenium] Selenium에서 send_keys를 막아놓은 경우 해결책 이니스프리 이니스프리 19.07.04.05:52 4410
212 웹디자인 第三강 <head> 上 2 image PRASEOD- 19.05.03.14:34 815
211 [2019 고1] 통합사회_ 내멋대로 정리 끝 {협스} 16 갱생협스 갱생협스 19.04.26.21:30 2551
210 [Git] 자주 사용하는 Git 명령어 8 네모 네모 19.04.26.19:05 1213
209 웹디자인 第二강 html5로 구조 짜보기 9 image PRASEOD- 19.03.25.17:03 793
208 23. 완충용액이츄 2 image 국내산라이츄 국내산라이츄 19.03.24.02:35 2691
207 웹디자인 第一강 홈페이지는 어떻게 만드는건가 6 PRASEOD- 19.03.19.22:29 811
206 22. 혈액입니츄 1 image 국내산라이츄 국내산라이츄 19.02.05.01:35 966
205 [번외편 - 아미나] Basic Youtube Title Widget 1.0에서 처음에 엑박으로 뜨는 경우의 해결책 3 image 이니스프리 이니스프리 18.12.15.23:02 751
204 [번외편 - 아미나] 아미나의 회원 이미지와 관련하여 x2 3 image 이니스프리 이니스프리 18.12.10.19:57 705
203 21. 혈액형입니츄 12 image 국내산라이츄 국내산라이츄 18.12.08.04:58 1290
202 [번외편 - 법률] 현행 저작권법 제30조(사적이용을 위한 복제)에 대하여 - 음원 다운로더의 처벌과 관련하여 6 이니스프리 이니스프리 18.12.07.14:16 1313
201 [번외편 - 아미나] 그누보드/아미나에서 게시글의 날짜를 최종수정일로 변경하고, 목록스킨 및 위젯을 최종수정일 순으로 정렬하기 2 image 이니스프리 이니스프리 18.11.11.22:36 2573
200 [번외편 - 구글뉴스] 리뉴얼된 구글뉴스에서 RSS 피드를 생성하는 방법 6 image 이니스프리 이니스프리 18.10.07.17:58 3533
199 20. 알레르기츄 3 image 국내산라이츄 국내산라이츄 18.10.03.23:44 935
198 아실분들은 아실 미디어위키 웹호스팅상에서의 시각편집기 설치방법(게시판 이동) 4 image 퓨처마츠 퓨처마츠 18.10.03.20:33 1358