.NET

    [.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 단에서는 메모리에 할당되어 현재 실행 중인 프로그램을 하나의 프로세스로 관리하고 있습니다. 스레드는 프로그램 안에서 코드를 실행하는 주체를 의미합니다. 기본적으로 하나의 프로세스는 하나의 스레드를 가지는데 이 말은 한 번에 하나씩의 코드만 실행할 수 있다는 얘기가 되므로 같은 시간에 여러 ..

    [C#] LINQ(Language INtegrated Query) - 3. comprehension syntax과 thread를 통한 응답성 향상, XML 다루기

    [C#] LINQ(Language INtegrated Query) - 3. comprehension syntax과 thread를 통한 응답성 향상, XML 다루기

    3. LINQ query comprehension syntax C# 3.0 때 마이크로소프트는 SQL과 같은 쿼리 구문을 LINQ 쿼리문으로 작성하는 방법을 토대로 개발자들이 더 익숙하게 LINQ구문을 작성하도록 하는 몇 가지 키워드를 소개했습니다. 예를 들어 다음과 같이 특정 Item을 필터링하는 메서드를 사용한 경우 using (Northwind db = new()) { var result = db.Products.Where(x => x.ProductId == 3).SingleOrDefault(); Console.WriteLine(result.ProductName); } query comprehension 구문을 통해 위와 같은 동작을 수행할 수 있습니다. using (Northwind db = ne..