전체 글

전체 글

    [.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 구조설계및 프로젝트 템플릿

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

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

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

    [.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

    [.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

    [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. 공유 자원 접근

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

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

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

    [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..

    [C#] 멀티태스킹(Multitasking) - 1. 프로세스(process), 스레드(thread), 태스트(task) 그리고 성능모니터링

    [C#] 멀티태스킹(Multitasking) - 1. 프로세스(process), 스레드(thread), 태스트(task) 그리고 성능모니터링

    멀티태스킹은 같은 시간에 더 많은 성능 향상과 확장성 그리고 Application을 통한 사용자 생산성을 향상할 수 있는 방안을 제공해 줄 수 있습니다. 1. 프로세스(process), 스레드(thread) 그리고 태스트(task) 프로세스는 하나의 프로그램이 될 수 있습니다. 반드시 하나의 프로그램이 하나의 프로세스가 된다는 것은 아니지만(필요하다면 하나의 프로그램에서 여러 프로세스를 생성할 수 있으므로) 통상 OS 단에서는 메모리에 할당되어 현재 실행 중인 프로그램을 하나의 프로세스로 관리하고 있습니다. 스레드는 프로그램 안에서 코드를 실행하는 주체를 의미합니다. 기본적으로 하나의 프로세스는 하나의 스레드를 가지는데 이 말은 한 번에 하나씩의 코드만 실행할 수 있다는 얘기가 되므로 같은 시간에 여러 ..