대상
- .NET Core/Framework 를 처음 학습하는 분들을 위한 커리큘럼
- 타 객체지향언어 사용 경험이 있는 사람
- 웹프로젝트를 처음부터 끝까지 만들어본 적 있는 사람
1. .NET Framework 와 .Net Core
- .NET Framework
- 마이크로소프트에서 개발한 소프트웨어 프레임워크
- 다양한 프로그래밍 언어 지원(C#, Visusal Basic, F# 등)
- 웹 애플리케이션, 데스크톱 애플리케이션, 서버 애플리케이션 등 다양한 종류의 소프트웨어 개발 지원
- windows 운영 체제 환경에서 실행되는 다양한 애플리케이션을 개발하고 실행하기 위한 프레임워크
- .Net Core / .Net 6
- 크로스 플랫폼 지원: .NET Core는 Windows, macOS, Linux 등 다양한 플랫폼에서 동작하도록 설계되었습니다. 이는 개발자들이 운영 체제에 구애받지 않고 애플리케이션을 개발하고 실행할 수 있도록 합니다.
- 오픈 소스: .NET Core는 오픈 소스 프로젝트로, 개발자들이 소스 코드를 확인하고 기여할 수 있습니다. 이는 커뮤니티의 지원과 협력을 유도하며, 더 나은 플랫폼의 개발과 개선에 도움이 됩니다.
- 경량화된 구조: .NET Core는 .NET Framework보다 더 경량화된 구조를 가지고 있어서, 빠른 실행 속도와 더 적은 메모리 사용을 제공합니다.
- self-contained 배포: 응용 프로그램은 필요한 런타임과 라이브러리를 함께 패키징하여 self-contained 방식으로 배포할 수 있습니다. 이는 호스트 시스템에 .NET Core 설치 없이도 응용 프로그램을 실행할 수 있게 합니다.
- 응용프로그램을 배포하는 방식
- 실행에 필요한 모든 라이브러리와 .NET core 런타임을 패키징하여 응용프로그램이 독립적으로 실행 될 수 있도록 한다.
- 호스트 시스템에서 .NET core 런타임 설치가 필요 없다.
- 운영체제에 따라 빌드/배포 방식을 다르게 할 필요 없다.
- NuGet 패키지 관리: .NET Core는 NuGet을 통해 개발자들이 재사용 가능한 코드 패키지를 손쉽게 관리하고 사용할 수 있도록 지원합니다.
- 멀티 언어 지원: .NET Core는 C#, Visual Basic, F# 등 다양한 프로그래밍 언어를 지원하며, 개발자들은 선호하는 언어로 애플리케이션을 개발할 수 있습니다.
- 모듈성: .NET Core는 모듈화된 설계로, 개발자들은 필요한 기능만 선택하여 사용할 수 있습니다. 이는 애플리케이션의 크기를 줄이고, 필요한 기능에만 집중하여 개발할 수 있도록 합니다.
- ASP.NET Core: .NET Core와 함께 사용되는 ASP.NET Core는 경량화된 웹 개발 프레임워크로, 크로스 플랫폼에서 웹 애플리케이션을 개발하고 호스팅하는 데에 사용됩니다.
- .NET Core는 현대적이고 유연한 애플리케이션 개발을 위한 강력한 플랫폼으로 인기를 얻고 있습니다.
- 두 프레임워크의 차이 요약
.NET framework | .NET Core 3 / .Net 6 | |
지원하는 OS | windows 운영체제 위주 | 다양한 OS 지원 |
오픈소스 | X | O |
프로그램 형태 | 데스크톱 애플리케이션, 웹 서버 애플리케이션 개발 적합 | 멀티 플랫폼 개발 |
종속성 관리 | GAC(Global Assembly Cache)를 사용하여 어셈블리 버전 관리 | 응용 프로그램 내의 self contained 배포를 통해 관리 |
- .Net Core 3과 .Net 6의 차이
.Net core 3 | .Net 6 | |
크로스 플랫폼 지원 | windows, macOS, Linux 등 다양한 플랫폼 지원 | NET Core 의 확장판 .Net framework 애플리케이션 대부분 이식하도록 개선(.NET Upgrade Assistand 도구 제공) Hot reload rlsmd cnrk MAUI(Multi platform App UI) 프로젝트 지원 |
2. .Net 6 실습
프로젝트 생성
1. API 템플릿:
- API 템플릿은 주로 웹 API를 개발하는 데 사용됩니다.
- API 템플릿은 RESTful 서비스와 같이 HTTP 요청과 응답을 처리하는 데에 특화되어 있습니다.
- 주로 클라이언트와 서버 간에 데이터를 주고받기 위해 사용되며, JSON, XML 등의 데이터 형식을 반환합니다.
- API를 사용하여 데이터를 제공하거나 외부 서비스와 통신하는 애플리케이션을 개발할 수 있습니다.
2. 웹 애플리케이션 템플릿:
- 웹 애플리케이션 템플릿은 기본적인 웹 애플리케이션을 개발하는 데 사용됩니다.
- 정적 웹 페이지나 동적 컨텐츠를 제공하는 웹 애플리케이션을 구축할 수 있습니다.
- 사용자 인터페이스가 필요한 경우, 따로 UI를 개발해야 합니다.
- ASP.NET Core 기반으로 웹 페이지를 만들 수 있습니다.
3. 웹 애플리케이션 (Model-View-Controller) 템플릿:
- 웹 애플리케이션 (Model-View-Controller, MVC) 템플릿은 MVC 패턴을 사용하여 웹 애플리케이션을 개발하는 데 사용됩니다.
- MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 구성되며, 데이터, 표현 및 애플리케이션의 로직을 분리하여 개발할 수 있습니다.
- 웹 애플리케이션의 구조가 명확하고 유지보수가 용이하며, UI와 로직을 분리하여 작업할 수 있습니다.
- 데이터베이스와 연결되는 웹 애플리케이션을 구축하는 데에 적합합니다.
프로젝트 구조(API 프로젝트 기준)
1. Controllers:
- API 엔드포인트를 정의하고 처리하는 컨트롤러 클래스가 위치하는 폴더입니다.
- 각각의 컨트롤러는 특정 URI 경로와 HTTP 요청 유형에 대한 액션 메서드를 포함합니다.
- 주로 [Route] 및 [HttpVerb] 특성을 사용하여 엔드포인트와 요청 유형을 설정합니다.
2. Models:
- API에서 사용되는 데이터 모델이나 DTO(Data Transfer Object) 클래스가 위치하는 폴더입니다.
- 이 폴더에서는 API 요청 및 응답에 사용될 데이터 구조를 정의합니다.
3. Services:
- API의 비즈니스 로직이나 외부 서비스와의 상호 작용을 처리하는 서비스 클래스가 위치하는 폴더입니다.
- 주로 데이터베이스 연결, 외부 API 호출, 데이터 처리 등을 수행하는 로직이 포함됩니다.
4. Middleware:
- API 요청과 응답을 처리하는 미들웨어 컴포넌트가 위치하는 폴더입니다.
- 미들웨어를 사용하여 인증, 로깅, 예외 처리 등과 같은 공통적인 기능을 처리할 수 있습니다.
5. Filters:
- API 요청과 응답에 대한 필터링을 수행하는 필터 클래스가 위치하는 폴더입니다.
- 주로 인증, 권한 부여, 데이터 유효성 검사 등을 처리하는 필터를 구현합니다.
6. Startup.cs:
- API의 구성과 초기화를 담당하는 파일입니다.
- ConfigureServices 메서드에서 의존성 주입(Dependency Injection) 설정 및 미들웨어 구성 등을 처리합니다.
- Configure 메서드에서 요청 파이프라인의 미들웨어 순서와 라우팅 설정을 정의합니다.
7. appsettings.json:
- API의 설정 정보를 포함하는 파일입니다.
- 데이터베이스 연결 문자열, 로깅 설정 등을 설정합니다.
8. wwwroot (선택적):
- 정적 파일(이미지, CSS, JavaScript 등)을 저장하는 폴더입니다.
- 주로 웹 API에서 클라이언트에게 제공하는 정적 리소스를 저장합니다.
로깅
- Serilog 라이브러리 설치 및 설정
- serilog는 .NET 에서 사용되는 대표적인 로깅 라이브러리로 비동기적인 로깅을 지원한다.
- NuGet 패키지 관리자를 통해 Serilog, Serilog.Sinks.Console 패키지를 프로젝트에 추가한다.
- Microsoft.Extensions.Logging
- .NET의 기본 로깅 라이브러리
- .NET Core 및 .NET 5 이후 버전부터 기본적으로 제공하는 라이브러리
- logging provider를 활용하여 로그 메시지 출력 대상 선택
- Serilog, NLog 등 다른 로깅 라이브러리와 함께 사용 가능
- 기본적으로 .NET Core에서 비동기 로깅을 지원
- 별도의 로깅 구성은 필요하지 않다.
'공부 > 스터디' 카테고리의 다른 글
[묘공단/Go 언어] 터커의 Go언어 프로그래밍 스터디 1주차 (0) | 2023.09.27 |
---|---|
회사에서 진행하는 이색 체험, 그림책 상상력 워크숍 (0) | 2023.06.21 |
[영어][스터디미니][단계완료] 성인 영어 학습지 후기 - 1단계 (0) | 2023.06.03 |
[영어][스터디미니]성인 영어학습지 - 환급원정대 시작하기 (0) | 2023.04.10 |