대상

  • .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에서 비동기 로깅을 지원
    • 별도의 로깅 구성은 필요하지 않다.

+ Recent posts