2.1 웹프로그래밍 기술구성요소
2.2 클라이언트 vs 서버 & 관련기술들
2.3 ASP.NET MVC5 기술소개
2.4 VisualStudio 2015 개발툴 사용법
2.5 ASP.NET MVC5 프로젝트 개발기초
2.6 윈도우 서버 와 IIS 웹서버 소개
본격적으로 우리가 사용할 ASP.NET MVC5 기술을 알아보기전에 먼저 .NET이란것에 대해 먼저 알아보겠습니다.
1..NET Platform
여러분들은 개발자분들이 아니기에 Platform이란 말도 다소 어려울듯하여 개발플랫폼,개발프레임워크,개발라이브러리등의 용어먼저 풀어나가 보겠습니다.
A.개발라이브러리(Development Library)?
특정 개발언어를 통해 특정 개발환경에서 쉽게 개발이나 코딩이 가능하게 1차 초벌구이 프로그래밍된 작은 규모의 개발소스라고 할수있습니다.
대표적으로 자바스크립트를 좀더 편리하고 빠르게 활용할수 있고 개발생산성을 높여 개발할수 있게 만든게 JQuery 라이브러리인것처럼 우리주변에 찾아보면 작은규모의 1차 프로그래밍이 된 오픈소스 라이브러리 소스는 엄청많습니다.
B.개발 프레임워크(Development Framework)?
라이브러리가 특정목적에 의해 작은규모로 개발된 초벌구이 개발소스라면 프레임워크는 좀더 규모가 있고 특정 개발환경에서 다양한 문제들을 해결하고 개발의 편리성을 제공해주기 위한 수많은 라이브러리들의 집합입니다.
예를 들면 ASP.NET Framework은 Microsoft .NET 이란 개발 및 서비스 환경에서 웹개발 관련 다양한 기술들을 쉽게 구현해줄수 있는 다양한 라이브러리들의 집합을 통칭합니다.
ASP.NET 안에는 웹프로그램을 개발하기 위한 ASP.NET Webforms, ASP.NET MVC3,4,5,6, ASP.NET SignalR, ASP.NET WEB API등 웹개발 및 웹기반 실시간 통신,오픈 API기술등 현대의 웹환경에서 필요로 하는 다양한 웹기술을 쉽게 구현해줄수 있는 다양한 라이브러리들로 구성되어 제공되는마이크로소프트의 웹 개발 프레임워크입니다.
C.개발 플랫폼(Development Platform)?
ASP.NET 프레임워크는 MS의 웹개발 프레임워크인데요.
주로 Visual C#.NET, Visual Basic.NET 등의 개발언어를 이용해 웹 응용프로그램을 쉽게 개발할수 있게 제공되는 라이브러리들의 집합이라면
이외에도 DespkTop 어플리케이션을 개발할수 있는 Winform 개발 프레임워크,WPF 개발프레임워크, 서버측에서 다양한 메시징 통신을 담당하는 WCF 개발프레임워크, 다양한 워크플로우를 관리할수있는 WF 개발프레임워크등 추가로 다양한 기능을 제공하는 프레임워크들이 존재합니다.
이러한 프레임워크들의 전체 집합인 개발 및 서비스 환경을 통칭해 .NET이라고 하며 또는 .NET 개발 플랫폼이라고합니다.
.NET 플랫폼의 주요 특징은 하나의 통합된 개발툴(IDE)(Visual Studio)로 다양한 .NET기반 개발언어(C#,VB.NET,VC++.NET,F#..)를 이용해 하위에 존재하는
다양한 개발 프레임워크들을 이용해 다양한 종류의 어플리케이션을 개발할수 있게 풀세트 형태로 개발환경을 제공할 뿐만 아니라 이렇게 개발된 개발소스들은 .NET 플랫폼이 설치된 클라이언트 및 서버 환경에서 서비스되어집니다.
자, 한번 .NET 플랫폼의 전체 구성을 들여다 보시겠습니다.
상기 .NET4.5 플랫폼내 주요 프레임워크를 간략소개 드립니다.
ㅁUX Application 개발 프레임워크들
-ASP.NET : 웹 어플리케이션 개발 프레임워크
-WPF : 차세대 윈도우 DeskTop Application 개발 프레임워크(C/S,XBAP,Silverlight)
-Windowsforms : 윈도우 Desktop Application 개발프레임워크( C/S 프로그램)
ㅁ데이터 핸들링 프레임워크들
-ADO.NET : .NET 기반 기본 DATA 처리기능 개발 프레임워크
-ADO.NET Entity Framework : ORM 기반 DATA처리 개발 프레임워크
-LINQ : .NET언어를 이용한 프로그래밍 기반의 쿼리 언어기술
ㅁ통신,메시징 핸들링 프레임워크들
-WCF : (XML)웹서비스 및 각종 서버기반 통신 및 메시징 개발 프레임워크
-WF : 워크 프로우 개발용 프레임워크
-ASP.NET SignalR : 웹기반 실시간 통신 기술 개발 프레임워크
-ASP.NET WebAPI : 웹기반 오픈 API 개발 프레임워크
ㅁMS의 NET 개발 및 서비스 이중화 전략
PC시대에서 모바일시대로 넘어오면서 모바일 주도권을 놓쳐버린 마이크로소프트가 나델리 CEO로 바뀌면서 모바일 퍼스트,클라우드 퍼스트 기치아래
대대적인 오픈소스전략을 펼치하고 있는데요. 대표적인 사례로 .NET 전략을 재정비하고 .NET 플랫폼의 오픈소스화 와 .다른 O/S에 대한 개발 및 서비스 환경지원을
본격화하고 있고 그결과물을 계속 내놓고 있습니다.
상기그림은 오픈소스 전략을 펼치는 마이크소프트의 O/S별 .NET 개발 및 서비스 이중화 전략 구조입니다.
ㄴ.NET Framework 4.6 : 윈도우즈(서버)군에서 .NET 개발 및 서비스 환경을 제공해주는 전통적인 .NET 플랫폼 -개발툴: Visual Studio(2015,2017)
ㄴ.NET Core 5 : 맥OS,리눅스OS(윈도우즈포함)에서도 .NET 개발 및 서비스 환경을 제공해주는 .NET 플랫폼 - 개발툴: Visual Studio Code
ㄴ.NET Core5 & Xamarin : MAC OS 에서 각종 Native App 개발 및 ASP.NET Core기반 웹앱 개발기능제공 -개발툴 Visual Studio for MAC (2017년 05월 공식출시됨)
이외에 .NET 개발 플랫폼처럼 JAVA언어나 기타 다른 언어들도 대부분 개발프레임워크 또는 개발 플랫폼을 제공하여 개발되어지고 서비스되어집니다.
JAVA언어환경: Java2(JDK) 플랫폼(Java Tools&API(프레임워크),JDK,JRE,JVM)
Java2 플랫폼은 .NET 플랫폼과 같이 JVM 기반에서 작동할수 있는 다양한 종류의 어플리케이션 개발이 가능한 JAVA언어 기반의 개발 플랫폼입니다.
PHP언어환경: PHP프레임워크
-PHP는 웹개발중심의 기능만을 제공하기에 규모의 면에서 보면 플랫폼보다는 프레임워크 수준으로 바라봅니다.
2.ASP.NET 프레임워크
조금 어려우셨을지도 모르지만 위에서는 .NET플랫폼 전반적인 구조를 살펴보았구요.
이제부터는 우리의 개발환경 및 서비스환경에 직접적인 영향을 미치는 ASP.NET 에 대해 알아보도록 하겠습니다.
ASP.NET 개발 프레임워크를 구성하는 기술 구성요소를 간략히 소개해드리겠습니다.
대표사이트: http://www.asp.net/
ASP.NET vs ASP.NET Core (중요)
ㄴ ASP.NET 은 윈도우 O/S 기반에서 Visual Studio 2015(2017)등의 개발툴과 .NET Framework 4.6 개발환경에서 ASP.NET 관련 각종 웹 어플리케이션을 개발할수 있는 프레임워크이며
ㄴ ASP.NET Core는 윈도우/MAC/Linux O/S기반에서 Visual Studio 2017,Visual Studio for Mac,Visual StudioCode 개발툴과 .NET Core 개발환경에서 ASP.NET 관련 각종 웹 어플리케이션을 개발할수 있는 프레임워크입니다.
ㅁ웹사이트 개발 관련 기술들
-ASP.NET Webforms : 전통적인 MS 웹응용 프로그램 개발기술(MVP) http://www.asp.net/web-forms
-ASP.NET MVC : MVC 패턴을 이용한 MS 신규 웹 응용 프로그램 개발기술 http://www.asp.net/mvc
-ASP.NET Webpages : Razor 기반 Simple,Light 신규 웹 응용프로그래 개발기술 http://www.asp.net/web-pages
ㅁ메시징 서비스 관련기술들
-ASP.NET WebAPI : ASP.NET 기반에서 쉽게 OPEN API환경을 개발 서비스할수 있는 웹 서버측 기술입니다.
http://www.asp.net/aspnet/overview/building-web-apis-with-aspnet
-ASP.NET SignalR : HTML5 표준 실시간 통신 기술인 Websocket을 지원하는 서버측 메시징기능으로 node.js에 대응되는 MS의 실시간 웹통신 서버측 기술입니다.
http://www.asp.net/signalr
3.ASP.NET MVC 환경
ASP.NET MVC는 개발 패턴중 ASP.NET 프레임워크 기반에서 MVC패턴을 이용해 웹 응용프로그램을 개발할수 있는 개발 및 서비스 환경을 통칭해 말합니다.
ASP.NET MVC를 알기전에 먼저 패턴 및 MVC패턴에 대해 알아 보겠습니다.
A.MVC 패턴
-패턴(Pattern)?
소프트웨어 공학에서 패턴이란 용어는 근/현대에서 다양한 언어를 이용 다앙한 소프트웨어/시스템을 구축하면서 직면했던 유사형태의 문제들을 해결했던 방법들을 정리하여 패턴화 시킨것을 말합니다.
-패턴은 소프트웨어란 현실세계의 문제를 해결하기 위한 솔루션이며 현실세계에는 다양한 크고작은 문제들이 있지만 대표적인 문제들에 대해서는 유사한 해결방법들로 문제들을 해결해왔으며 그 해결방안들을 정리하여 이후 개발 세대들이 시행착오를 덜 격고 동일/유사한 문제들을 빨리해결수 있도록 도울수 있는 체계 및 방법론을 잡아둔것이죠. 일명 디자인패턴(Design Pattern)이라고도 하고요.
일종의 S/W업계에서 사용되는 의사의 감기약 처방전이나 다양한 업종에서 사용되는 사고대응,문제해결 매뉴얼과 같은것입니다.
MVC 디자인 패턴은 화면을 통한 데이터 처리 설계패턴들중에 사용자로부터 데이터를 받아 DB를 통해 저장하고 조회하여 사용자에게 데이터를 돌려주는 일반적인 UI기반 DATA처리 패턴중의 하나입니다.
[그림2-11]
MVC 패턴 호출 프로세스
일반적으로는 MVC패턴의 구성요소와 그역할은 다음과 같습니다.
-Model: 데이터 또는 데이터를 담고있는 구조,데이터를 처리하는 내부 프로세스 구조를 통칭해 말합니다.
-View: 화면을 말하며 사용자와 인터액션하는 주체이며 사용자로부터 데이터를 받아들이고 컨트롤로에서 제공되는 데이터를 보여주는 주체입니다.
-Controller: 사용자의 요청을 처음으로 받아들이고 그요청 내용에 따라 업무로직처리, 데이터(모델) 처리나 화면(뷰)을 처리해주는 MVC에서의 핵심주체입니다.
상기 그림은 HTTP 메시징에서 Request와 Response의 프로세스내에서의 MVC 호출흐름을 나타내며 MVC이름과는 다르게
HTTP Request 요청이 Controller를 최초 호출하고 데이터처리가 필요하면 모델영역을 호출하며 데이터처리가 없으면 바로 뷰를 찾아 웹서버에 던저주고
HTTP Response에 의해 브라우저에 HTML결과물이 전달됩니다.
B.ASP.NET MVC Request & Response Processing
ASP.NET MVC 호출 프로세스도간략히 보도록 하겠습니다.
[그림2-12] ASP.NET MVC5 웹 프로그램 호출 프로세스
기본적으로 상기 MVC 패턴 호출 프로세스와 주체들의 기능 또한 동일합니다. 차이점은 아래와 같습니다.
컨트롤러를 호출하기전 라우팅 엔진이란 녀석을 통해 요청한 자원에 대한 조회 및 필터링 과정을 거친 후 컨트롤러가 호출됩니다.
그리고 컨트롤러가 화면을 호출할때 뷰를 다양한 뷰엔진을 통해 만들어진 다양한 종류의 뷰를 선택 처리하여 웹서버에 전달할수 있는게 좀 차이가 있습니다.
ASP.NET에서는 뷰를 표현하고 기술(코딩)하는 방법을 다양하게 제공하는데 그걸 뷰엔진이라고 하고 대표적으로 전통적인 ASP.NET 화면(뷰)를 표현했던
WEBFORM 뷰엔진과 기존 ASP,PHP,JSP와 유사한 방식의 인터프리팅 방식의 Razor뷰엔진이 존재합니다.
WEBFORM 뷰엔진 보다는 뷰에서 HTML코드와 믹스(스파게티소스?)하여 HTML코드를 쉽게 조작코딩할수 있는 Razor 뷰엔진 사용을 권장드립니다.
간략하게 .NET & ASP.NET&ASP.NET MVC에 대해 알아 보았는데 어떠세요?
무엇인가 내가 S/W 공학이나 컴퓨터 공학을 배우시는 느낌도 받으셨나요?
저 또한 비전공자 이긴 하지만 개념을 잡으면 사실 개발이라는 일 자체는 어렵지 않다고 생각합니다.
개발에 대한 두려움은 S/W에 대한 개념이 약하고 그 구조인 어플리케이션 아키텍처를 이해못하고 아키텍처 구성요소에서 사용되는 기술에 대한 이해가 없어서 오는 두려움이 반이 아닐까 싶네요.
여러분들에게는 믹스드코드도 있고 저도 있으며 저말고도 여러분들을 도와줄수 있는 다양한 개발커뮤니티에서 활동하고 있는 전문가가 많습니다.
여러분이 꿈이 있고 열정이 있다면 현실세계에서는 이제 불가능이란 없을것입니다.
ASP.NET MVC5 책 한권을 추천드리며
프로 ASP.NET MVC5 프레임워크
http://www.yes24.com/24/goods/14860968?scode=032&OzSrank=1
다시한번 화이팅 하시고 다음강에서는 Visual Studio 개발툴과 C# 이란 언어에 대해 알아보겠습니다.
감사합니다.
서현 on 9/1/2016 9:28:46 AM
MVC 모델이라는 것, '패턴'이라고 하는데... 기초가 없는 저로서는 항상 알 듯 말듯 한 개념인 것 같아요.
오늘 강의에서 제발 조금이라도 가닥이 잡혔으면 좋겠네요...
언덕이 마련되면...그 담은 금방인데...ㅠ.ㅜ
믹스드코드 on 8/29/2016 4:39:28 PM
댓글을 올려주셨군요.
문과출신 개발자라 일반 개발자보다는 말하는게 좀더 자연스런것 같은데 칭찬으로 알고 감사하게 생각하겠습니다.^^;
10월에 동일 커리큘럼으로 2차교육 오프라인 강의를 계획하고 있습니다.
상황이 되면 마이크로소프트사의 지원을 좀 받아 지금보다는 좀 크고 알차게 해보려합니다.
공식일정이 나오면 온오프믹스를 통해 공지토록하겠습니다. 교육 및 믹스드코드에 관심 가져주셔서 감사드립니다.
페친 on 8/29/2016 8:58:10 AM
강대표님의 스토리텔링은 정말 대단하네요.
글을 읽는데 옆에서 애기하는듯한 착각이 들정도..
오프라린 강의도 하신다니
담엔 저도 시간내서 청강해봐야할듯..
페북에 올리신대로 MS의 이중화 전략이 시장에서
잘 먹혔으면 하는 바램입니다.
수고여~