# ASP.NET MVC5 프로젝트 생성
1. 빈 솔루션 생성
2. ASP.NET 웹 응용 프로그램으로 새 프로젝트 추가
3. ASP.NET 템플릿 중 MVC 선택, 일단 Host in the cloud와 단위 테스트 추가는 체크하지 않으며 WEB API 참조 추가 체크를 한다.

# ASP.NET MVC5 디렉터리 구조
## App_Data
- 파일 형태의 데이터 파일이 존재하는 폴더
- SQL Server Express, Access, SQList File DB. 
- 분산 DB가 아닌 로컬 DB 파일이다

## App_Start
- WAS가 실행되는 시점에서 코드를 통해 애플리케이션의 환경설정을 하는 디렉터리

## Content
- CSS등 리소스를 저장, 관리하는 공간

## Controllers 
- MVC의 Controller 클래스들이 정의된 디렉토리

## fonts 
- 폰트 폴더(유동적)

## Models 
- MVC의 Model 클래스들이 존재하는 공간

## Scripts 
- jQuery 등의 각종 자바스크립트 파일 및 JS 라이브러리 파일 저장 공간

## Views
- MVC에서의 View들이 존재하는 디렉터리
- View는 컨트롤러에 의해서 자동으로 만드는 것도 가능하다.
	* Home : Home 컨트롤러 관련 View 파일들이 존재하는 디렉터리
	* Shared : 각 화면에서 공유해서 사용하는 View(레이아웃(마스터) View, 부분(파셜) View 등)이 존재하는 디렉터리
	* _ViewStart.cshtml : 디폴트 레이아웃 View를 설정하는 곳 
- View 페이지의 종류
	* 레이아웃 페이지 View : 웹 페이지 전체 레이아웃을 잡아주고 마스터(공통) 영역 개념을 표현한다.(/Views/Shared 디렉토리 참고)
	* 콘텐츠 View : 각 웹 페이지의 고유 컨텐츠를 구성하고 표현하는 View (/Views/Test 디렉토리 참고)
	* 파셜 View : 두번 이상 중복되는 컨텐츠를 표기하고 재사용 목적으로 만드는 부분 View
## Global.asax 
- 애플리케이션의 실행부터 종료까지의 생애주기를 관리하는 전역 정보 관리 파일

## packages.config 
- Nuget 패키지 구성 정보를 관리하는 파일

## Web.config 
- 웹 애플리케이션의 각종 환경 설정 정보를 xml파일 형태로 관리한다.

-------------------------------
# 개발 환경 구축
1. Visual Studio 2015 설치.
2. MS SQL 2014 설치
	- SQL Server Browser 시작 유형 : 자동
	- 인증 모드 : 혼합 모드

-------------------------------
# 웹 애플리케이션 관리하기

## 솔루션 탐색기 오른쪽 마우스 주요 메뉴
- 빌드 : 개발 소스 중 변경된 부분에 한해 실행 결과물을 만들어 냄.
	* 빌드란 : 소스 코드 파일을 실행 코드로 변환되는 컴파일 과정을 거쳐 소스 코드를 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정.
- 다시 빌드 : 개발 소스의 모두를 재빌드하여 결과물을 새로 만듬.
- 정리 : 기존 빌드/ 재빌드 과정에서 생성된 실행가능 산출물을 모두 삭제

- 추가 : ASP.NET MVC 개발에 필요한 프로그램 리로스 및 파일 추가
- Nuget 패키지 관리 : Nuget 패키지를 통해 솔루션 및 프로젝트에 각종 라이브러리 패키지들을 관리할 수 있는 관리자를 연다.
- 시작 프로젝트 설정 : 하나의 솔루션에 여러개의 UI 프로젝트가 존재 시 시작 UI 프로그램 지정
- 디버그 : 디버깅 모드 실행
- 소스 제어 : 솔루션 내 존재하는 각종 개발 소스의 버전 및 형상 관리를 위한 소스 제어 서버와의 통신 및 소스 관리 기능 제공
- 프로젝트 언로드 : 솔루션 내 등록된 프로젝트를 솔루션에서 제외시킨다.
- 파일 탐색기에서 폴더 열기 : 해당 프로젝트 및 파일의 물리적 탐색기 위치를 봉준다.
- 속성 : 프로젝트 속성 정보 관리.
	* 응용프로그램 탭
		+ 어셈블리명 : 빌드 실행 시 프로젝트는 물리적으로 .dll 확장자의 특정 파일 형태로 만들어지며 해당 파일의 명칭
		+ 기본 네임스페이스 : 어셈블리 파일 내에 실제 존재하는 클래스 파일들의 고유한 논리적 경로 및 표시 구분 체계. 클래스 풀 네임의 구조(_01_Start.Controllers.TestController). 특정 클래스가 다른 클래스 호출 시 참조 위치나 이름을 찾기 위한 방법으로 사용됨.
		+ 대상 프레임워크 : .NET 프레임워크의 버전 정보
		+ 출력 형식 : 빌드 시 포맷 형태 결정
			- Windows 응용프로그램 : ~.exe 형태의 파일 출력. 실행 시 데스크톱 화면
			- 콘솔 응용프로그램 : DOS창 형태의 콘솔 프로그램
			- 클래스 라이브러리 : 컴포넌트 또는 DLL 형태의 파일 출력. 
	* 빌드 탭
		+ 출력 경로 : 빌드생성 후 결과물이 저장되는 위치 지정/변경
		+ XML 문서 파일 체크 여부 : 체크 시 각종 클래스 파일 내의 주석 정보가 XML파일로 저장되며 해당 XML을 이용해 개발자에게 해당 클래스의 기능과 속성을 인텔리센스 기능으로 제공한다.
	* 웹 탭
		+ 시작 작업 : 디버깅 시 시작 페이지 지정
		+ 서버 : 웹 서버를 개발용 웹 서버, 로컬 웹 서버로 사용할 지의 여부
		+ 디버거 : 기본 디버거 설정 변경

-------------------------------
# 서버
웹 프로그래밍은 정확히 웹 서버 프로그래밍이라고 말한다.    
웹 서버라는 소프트웨어를 통해 프로그래밍된 소스가 서비스된다. 따라서 개발 소스를 실제 서비스하기 위해서는 웹 서버가 필요하다.    
일반적으로 ASP.NET 기반 개발 소스는 IIS(Internet Information Service)라는 Windows OS 기반 웹 서버 소프트웨어를 통해 서비스된다.    
윈도우 서버(++IIS 서버)   

## 윈도우 서버
- 윈도 서버용 OS는 기본적으로 PC용 윈도우 OS처럼 동일한 UI를 제공하여 사용하기 쉬운 것이 장점.
- 각종 서버용 소프트웨어를 설치하여 다양한 서버 기능을 제공할 수 있다.
- 윈도우 서버 OS에 IIS를 설치하여 웹 서버 기능을 제공할 수 있다.
- MS SQL Server를 설치운영 시 DB서버 기능을 제공할 수 있다.
- 메일 서버 SW를 설치하면 메일 서버 기능을 제공할 수 있다.
- 버전
	+ Windows 10의 서버 버전 : Windows Server 2016
	+ Windows 8의 서버 버전 : Windows Server 2012
	+ Windows 8.1의 서버 버전 : Windows Server 2012 R2
- 리눅스 기반에 배포 시 응용 프로그램을 우분투 혹은 Docker를 통하여 배포 서비스가 가능하다.

## IIS 서버
- 서버용 OS 환경 안에 웹 서버라는 프로그램 환경에서 웹 애플리케이션이 구동된다.
- IIS(Internet Information Service)는 인터넷 정보 서버, 서비스라고 칭한다.
- 이는 웹 애플리케이션을 실제로 서비스하는 운영 주체이며 구동되는 기본 환경을제공한다.
- IIS의 유형
	* 로컬 IIS 웹 서버 : Client PC에서 설치, 작동되는 IIS 유형
	* IIS Express : Visual Studio 2015 설치 시 개발 및 디버깅용으로 사용되는 개발용 웹 서버
	* 운영 IIS 웹 서버 : 실제 Window Server에서 제공되는 서비스용 웹 서버
- 버전
	+ Windows 10, Windows Server 2016 의 IIS 서버 버전 : IIS 10
	+ Windows 8, Windows Server 2012 의 IIS 서버 버전 : IIS 8
	+ Windows 8.5, Windows Server 2012 R2 의 IIS 서버 버전 : IIS 8.5

## 권장 서버 버전
- Server OS : Windows Server 2012 (R2 권장)
- WebServer : IIS 8.0 혹은 IIS 8.5
- .NET Framework 4.6 이상
