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

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