분류 전체보기

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

    [C#] LINQ(Language INtegrated Query) - 2. EF Core와 집계처리

    2. EF Core와 LINQ '1. LINQ 표현식'에서는 LINQ를 통해 배열을 필터링하거나 정렬하는 예를 살펴보았습니다. 그리고 예제에서 사용된 소스는 List혹은 배열로서 단순한 형태의 데이터를 기반으로 하였습니다. 지금부터는 이 데이터 소스를 바꿔서 실제 DB의 Entity를 기반으로 다시 살펴보고자 합니다. (1) 모델 설정 이를 위해 EF Core model을 정의해야 하는데 여기서는 MS SQL Server와 Northwind DB를 통해 Model을 생성할 것입니다. 자세한 내용은 아래 글을 참고하시기 바랍니다. [C#] Entity Framework Core - 1. 시작/설정하기 [C#] Entity Framework Core - 1. 시작/설정하기 Entity Framework Co..

    [C#] LINQ(Language INtegrated Query) - 1. 기본 표현식

    [C#] LINQ(Language INtegrated Query) - 1. 기본 표현식

    LINQ(Language INtegrated Query)는 일련의 배열을 정렬하거나 필터링하는 확장 언어입니다. 1. LINQ 표현식 LINQ는 다음과 같은 부분으로 구성됩니다. Extension methods : Where나 OrderBy, Select와 같은 메서드를 포함하는데 LINQ에 대한 기능적인 부분을 제공합니다. LINQ providers : 메모리에서 객체를 다루기 위한 LINQ to Objects, 외부 데이터베이스에 데이터를 저장을 처리하기 위한 LINQ to Entities, XML을 다루기 위한 LINQ to XML 등을 의미하며 이들 공급자(providers)는 LINQ 표현식을 각 데이터에 맞는 특정한 방법으로 질의할 수 있도록 합니다. Lambda expressions : 메서..

    [.NET] 닷넷 Type 사용하기 - 8. image 다루기

    [.NET] 닷넷 Type 사용하기 - 8. image 다루기

    9. image 다루기 .NET Framework에서 Image를 다루기 위한 것으로 System.Drawing.Image를 사용할 수 있었습니다. 그러나 .NET Core 1.0이 개발되기 시작한 후부터는 더 이상 System.Drawing.Image를 사용할 수 없게 되었고 마이크로소프트는 System.Drawing은 더이상 지원되지 않을 것이며 비 크로스 플랫폼에 해당하므로 사용하지 말 것을 권고하고 있습니다. 대신 이를 대체할 수 있는 다른 대안으로 ImageSharp이나 SkiaSharp을 사용할 수 있습니다. 여기서는 이 중에서 ImageSharp을 사용해 Image를 다루는 방법에 간단히 알아보고자 합니다. ImageSharp은 2D graphics을 위한 third-party cross-p..

    [.NET] 닷넷 Type 사용하기 - 7. reflection 과 attributes

    8. reflection 과 attributes .NET의 컴파일(빌드) 결과는 대게 DLL이나 EXE 형태의 파일이 될 수 있는데 이를 통틀어 Assembly라고도 합니다. 그리고 .NET의 Assembly는 크게 아래 4가지 부분으로 구성됩니다. Assembly metadata와 manifest Assembly의 File버전이나 참조된 Assembly등등을 나타냅니다. Type metadata Member와 같은 Type의 정보를 나타냅니다. IL code Methods나 속성, 생성자등을 구현합니다. Embedded resources Images와 같은 별개의 리소스자원을 나타냅니다. Metadata는 Code에서 구현된 Member나 Type 등의 정보를 토대로 자동으로 생성되거나 attribut..

    [.NET] 닷넷 Type 사용하기 - 6. 네트워크 리소스 활용

    7. 네트워크 리소스 활용 .NET은 Network와 관련된 여러 형식을 아래와 같이 지원하고 있습니다. Namespace Type 설명 System.Net Dns, Uri, Cookie, WebClient, IPAddress Dns, IP주소, URI등을 표현합니다. System.Net FtpStatusCode, FtpWebRequest, FtpWebResponse FTP와 관련된 표현에 사용됩니다. System.Net HttpStatusCode, HttpWebRequest, HttpWebResponse HTTP와 관련된 표현에 사용되며 이와 관련해 System. Net.Http의 Type또한 마련되어 있습니다. System.Net.Http HttpClient, HttpMethod, HttpReques..

    [.NET] 닷넷 Type 사용하기 - 5. index와 range 그리고 Span

    6. index와 range 그리고 Span .NET Core 2.1부터 .NET에 대한 마이크로소프트 주요 목표 중 하나는 성능과 리소스 활용의 향상이며 Span는 그 목표의 일환 중 하나입니다. Array 구현할 때 기존에 존재하는 Array객체에서 일부분만을 필요로 하는 경우 기존 객체를 그대로 복사해 새로운 Array를 생성하고 필요한 처리를 수행하는 경우가 있습니다. 그러나 이러한 방법은 메모리에 같은 객체를 반복해 생성하게 된다는 측면에서 그다지 효휼적인 방법이라고는 할 수 없습니다. 위와 같이 전체가 아닌 일부분의 요소만을 필요로 한다면 span을 사용함으로써 성능과 효율성을 기대할 수 있습니다. 다만 Span은 Collection이 아닌 Array를 대상으로만 사용할 수 있습니다. Span..