본문 바로가기
반응형

C#21

.NET - HOW to use Parallel For, ForEach If you are running .NET-based development and multiprocessor, you can improve performance by parallel processing. For For, ForEach, which is often used for iterative data processing, you can experience up to 50% improvement in performance. Here, let’s compare it through ForEach. A typical ForEach statement is shown foreach (var item in Queue) { //loop code insert } Add using System.Threading.Tas.. 2020. 12. 2.
.NET - Semaphore 초기값? initialCount, maximumCount Semaphore는 기본적으로 자원을 공유해서 사용해야 하는 멀트 스레드 환경에서 사용된다. 자원이나 실행에 대한 접근 제어가 필요할 때 사용할 수 있다. .NET 기준으로 lock 개념과 유사하며, 큰 차이점이라면, lock은 하나의 접근만 가능하지만, Semaphore는 지정한 개수만큼 접근할 수 있다. 이 지정한 개수는 Semaphore를 선언시점에 기본적으로 2가지 값을 설정해 주어야 한다. initialCount, maximumCount 이다. maximumCount 는 최대 접근 가능 개수 라고 할 수 있다. 만약 maximumCount를 3으로 지정한 경우 3개의 까지의 접근을 허용 한다는 것이다. 그리고 initialCount는 Semaphore를 선언하는 시점에 사용가능한 갯수라고 생각하.. 2020. 12. 1.
.NET - Thread Start with Argument or Data 요청을 처리하면서 병렬로 작업을 실행해야 하는 이슈가 있었다. 인터넷에 확인 Backgraoud Task 방식이 있지만, 이는 별도의 작업을 지속적으로 실행하는 별도의 서비스를 생성하는 방안으로, 모니터링등의 지속 실행작업에 용이하고 특정 요청시점에 실행하기에는 Thread 를 통한 작업 실행이 알맞을 것이라는 생각이 들었다. 쓰레드 실행시 가장 많이 찾아본 내용은 바로 인자, 데이터 전달이였다. 작업을 처리하기 위해서 실행하는 스레드이기 때문에 처리할 데이터나 정보를 스레드에 전달해야 하는데, 인터넷에서 찾아본 내용중 가장 바른? 방법이외에도 존재하지만, 내가 읽기에 제일 가독성이 높은 코드로 데이터 전달 방안으로 정리해 보았다. 클래스 자체에 전달 데이터 정의 스레드를 통해 진행할 작업을 위해 먼저 .. 2020. 11. 30.
.Net - EF 'Entity type 'xxx' has composite primary key defined with data annotations. To set composite primary key, use fluent API.' 금일 Database 의 PK(Primary Key)를 2개 지정하여 사용하다가 이와 같은 오류를 마주하였다. 이 오류는 .Net Entity Framework에서 Primary Key 2개가 실제 EF에서 적절하게 매핑이 되지 않아서 발생한다. 아래 그림과 같이 Data Model에 2개의 키를 지정해 준 상황에 발생하는 오류라고 할 수 있다. [Key] [Required] public string testkey { get; set; } public string version { get; set; } public string type { get; set; } [Key] [Required] public string realkey { get; set; } 따라서 Entity 생성 시점에 PK가 2개임을 알.. 2020. 11. 26.
Net - System.Data.SqlTypes.SqlNullValueException: Data is Null .Net EntityFramework를 이용해서 사용하던중 발생하던 오류로 해결 방안을 찾아 메모해 둔다. 데이터를 입력하고 웹을 통해 조회하던중 아래와 같은 오류가 발생하였다. System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or property cannot be called on Null values. 이 오류으 원인은 DB Content에 설정된 [Required] 선언에 의해 조건이 맞지 않아 발생하게 된다. .Net EntityFramework는 [Required]로 선언한 필드에 대해서는 Null을 허용하지 않는데, 실제 데이터중에 Null로 설정된 데이터가 존재하기 때문에 발생한다. 혀결 방법으로는 Database에.. 2020. 11. 17.
.Net/core - make service for auto-start when boot on Ubuntu youtu.be/1akt--pYvfs 오늘은 Ubuntu 서버에 실행한 .Net/Core Application을 서비스로 등록해 상태를 관리하거나 서버 재시작시 자동으로 실행이 가능하도록 만들어 보자. 1. Prepare make Service 서비스를 만들기 전에 체크해야 하는 부분이 3가지가 있다. 1. Check to path of dotnet command 2. Check to path about application of dotnet 3. Test to running for user permission .Net/Core를 실행할 때 필수로 필요한 요소가 위 3가지 이다. 먼저 dotnet command가 설치된 위치를 확인하자. 기본적으로 패키지 설치를 진행했다면, Ubuntu기준으로 /usr/.. 2020. 11. 12.
.Net/C#/Core - How to Get Client IP on HTTP .Net Core를 개발하면서 기존 C#과 앞으로 .Net core(.Net)에서 어떻게 다른지 정리하는 글을 남긴다. 클라이언트 IP를 가져올때 주의할점은 프록시 서버를 이용하는 경우를 대비해서 X-Forward-For 헤더를 확인할 필요가 있다는 것이다. X-Forward-For 는 아래 글에 잘 정리되어 있는데, 현재 전송된 HTTP 패킷이 어떤 프록시 서버를 거쳤는지, 그리고 실제 Client IP는 무엇인지 확인이 가능한 헤더이다. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For X-Forwarded-For The X-Forwarded-For (XFF) header is a de-facto standard hea.. 2020. 11. 10.
The underlying connection was closed – REST API call over HTTPS https://www.youtube.com/watch?v=KW90zdq0il4 {System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at Sy.. 2020. 11. 4.
최고의 .NET / C# 디컴파일러 Decompilers Best TOP3 오늘 소개할 내용은 .NET/C# Decompilers(디컴파일러) 에 대한 도구중 유명한 도구 3가지를 소개하도록 하겠습니다. 3등: .Net Reflector . Net Reflector는 오래된 도구로 사랑받는 Decompilers입니다. 거희 1.0 시절부터 나온 도구로써 유명한 도구입니다. 일반적인 성능을 자랑하며, 유료라는 점이 약간은 불편한 요소입니다. 2등: ILSpy . Net Reflector와 성능상 차이는 크지 않으면서 오픈소스로, 무료로 사용이 가능합니다. 코드 해석 능력은 중간 정도입니다. 1등 dotPeek 마지막으로 소개시켜드리는 이 도구는 디컴파일러 중에 가장 막강한 도구입니다. 빌드시점의 코드를 가장 원본과 동일하게 구사해 내는 도구이며, 무료라는 점 역시 칭찬할 만합니다.. 2020. 11. 4.
반응형