c#

c#

    [ASP.NET Core] ASP.NET Core 개요

    ASP.NET Core는 마이크로소프트의 웹 개발 플랫폼입니다. 본래 ASP.NET은 2002년에 등장하였는데 현재의 ASP.NET Core로 완성되기 위해 수많은 재개발 과정을 거쳐오게 되었고 현재의 ASP.NET Core는 HTTP 요청을 처리하기 위한 플랫폼과 애플리케이션을 생성하기 위한 일련의 주된 프레임워크, 몇몇 기능 지원을 제공하기 위한 부수적인 유틸리티 프레임워크로 구성하게 되었습니다. 마이크로소프트가 만들어낸 .NET이름과 ASP.NET Core사이에는 특별한 연관성이 있는데 몇 년 전 마이크로소프트의 ASP.NET 담당 부서는 자체적인 .NET 플랫폼 버전을 만들어 다른 .NET보다 더 자주 ASP.NET이 업데이트될 수 있게 하였습니다. 이렇게 크로스-플렛폼 개발이 가능한 ASP.NE..

    [.NET] C#과 NET의 프로젝트 유형 - 4. Entity Data Model

    6. entity data model 생성하기 (SQLite) 일반적으로 대부분의 Application은 데이터를 다루는데 관계형 데이터베이스와 같은 DB를 사용합니다. 이와 관련하여 SQL Server나 SQLite에 저장된 데이터베이스를 어떻게 entity data model로 정의할 수 있는지에 대해서 알아보고자 합니다. 우선 이를 위해 SQLite용으로 사용 가능한 Northwind.db를 만들어 두었습니다. 이 파일은 아래 링크에서 내려받으시면 됩니다. 위의 파일을 적당한 위치에 내려받고 나서 이제 해당 db파일을 상대로 dotnet-ef을 통해 entity model을 scaffold 할 것입니다. (1) SQLite의 entity model을 위한 class library 생성 data mo..

    [.NET] C#과 NET의 프로젝트 유형 - 3. Project 구조설계및 프로젝트 템플릿

    4. project의 구조화 크고 복잡한 설루션에서는 내부의 코드를 파악하는데 어려움이 있을 수 있습니다. 이것은 프로젝트를 구조화해야 하는 주요 이유가 될 수 있는데 이로 인해 필요한 컴포넌트를 쉽게 찾을 수 있도록 하는 것입니다. 큰 하나의 설루션은 여러 프로젝트로 나뉘어 구성될 수 있으며 이때 프로젝트의 이름은 나름대로의 체계성을 가지고 있는 것이 좋습니다. 프로젝트의 이름을 붙이기 위한 다양한 방법이 존재하는데 예를 들어 모든 프로젝트의 접두사로 해당 회사의 이름을 붙이는 것도 하나의 방법이 될 수 있습니다. 예를 들어 회사명이 Northwind라면 아래와 같이 각 프로젝트의 유형별로 나뉘어 구성할 수 있을 것입니다. Northwind.Common 일반적인 공통기능의 Class Library 모음..

    [.NET] C#과 NET의 프로젝트 유형 - 2. ASP.NET Core와 Windows 전용 Desktop App

    2. ASP.NET Core의 새로운 기능 지난 몇 년 동안 Microsoft는 ASP.NET Core의 능력을 급속히 확장시켜 왔으며 각각의 Version은 아래와 같은 Flatform을 지원합니다. ASP.NET Core 1.1 ~ 2.2 : .NET Core 및 .NET Framework ASP.NET Core 3.0 ~ : .NET Core 3.0 및 이후 버전 (1) ASP.NET Core 1.0 ASP.NET Core 1.0은 2016년 6월에 릴리즈 되었으며 Windows, macOS, Linux등의 OS에서 cross-platform Web이나 Service를 구축하기 위해 필요한 최소한의 안정된 API를 구현하는데 집중한 버전입니다. (2) ASP.NET Core 1.1 ASP.NET C..

    [.NET] C#과 NET의 프로젝트 유형 - 1. App Model

    1. C#과 .NET의 App Model App Model은 일반적인 Application을 제작하는 대부분의 경우에 사용됩니다. 이와 관련하여 마이크로소프트는 App Model에 대한 광범위한 문서를 제공하고 있는데 이는 아래 주소에서 확인할 수 있습니다. .NET Application Architecture Guides (microsoft.com) .NET Application Architecture Guides Free e-books and practical advice for developing for web, desktop, mobile, and microservices with Docker. Learn how to migrate existing .NET apps to the cloud. dot..

    [C#] 멀티태스킹(Multitasking) - 4. async와 await

    5. async와 await C# 5에서는 Task Type을 위한 2개의 키워드가 추가되었는데 이 키워드는 특히 아래의 상황에서 유용하게 사용될 수 있습니다. GUI 환경에서의 멀티 태스킹 구현 Web Service의 확장성 향상 (1) Console Application에서의 비동기 구현 await 키워드는 단지 async가 구현된 메서드에서만 사용될 수 있고 C# 7과 그 이전 버전에서 Main() 메서드는 async가 구현되는 걸 허용하지 않았습니다. 이것이 Console Application에서 가질 수 있는 한계점 중 하나였는데 C# 7.1에 들어와서는 main() 메서드에도 async가 적용되는 걸 지원하지 시작했습니다. 새로운 Console Application프로젝트를 생성하고 아래와 같..

    [C#] 멀티태스킹(Multitasking) - 3. 공유 자원 접근

    4. 공유 자원 접근 같은 시간에 여러 스레드를 실행시키는 경우 2개나 혹은 그 이상의 스레드가 같은 변수나 기타 다른 리소스에 접근을 시도하는 경우가 생길 수 있습니다. 이는 Application의 안정성에 문제를 일으킬 수 있으므로 스레드 안전한(thread-safe) 코드를 만들도록 해야 합니다. 우선 공유된 자원에 대한 접근을 동기화하는 데 사용될 수 있는 아래 2가지 타입을 알아볼 필요가 있습니다. Monitor : 여러 스레드가 같은 프로세스 안에서 공유된 자원에 접근할 수 있는지를 확인하는 데 사용되는 개체입니다. Interlocked : CPU 수준에서 단순한 수치를 조작하기 위한 개체입니다. (1) 다중 스레드로부터의 자원 접근 해당 사례를 구현하기 위해 우선 아래와 같이 공유할 변수를 ..

    [C#] 멀티태스킹(Multitasking) - 2. 비동기(Asynchronously)

    3. 비동기(Asynchronously) 실행 우선 어떻게 같은 시간에 동시적으로 여러 작업이 실행될 수 있는지를 알아보기 테스트 가능한 아래 3개의 메서드를 생성합니다. static void ThreadInfo() { Thread t = Thread.CurrentThread; Console.WriteLine($"스레드 Id: {t.ManagedThreadId}, 우선순위: {t.Priority}, 백그라운드: {t.IsBackground}, 태스크명: {t.Name ?? string.Empty}"); } static void MethodA() { Console.WriteLine("A실행시작"); OutputThreadInfo(); Thread.Sleep(5000); Console.WriteLine("A..