전체 글
-
확장 메서드란?프로그래밍 2024. 10. 21. 17:51
확장 메서드란 this 키워드를 이용하여 parameter 변수를 선언하고 해당 변수를 사용하는 코드에서는 같은 타입의 변수일 경우 바로 메서드를 확인할 수 있는 메서드를 의미한다. 즉, "."을 찍었을 경우 나오는 메서드 중 일부는 확장 메서드일 수 있다. 확장 메서드를 만들기 위해서는 반드시 클래스가 확장 클래스이어야 한다. 즉, static class 이어야 한다. 아래의 예를 보자. public static class InfraExtensions{ public static string ToSerialize(this T data) where T : class { if (data.xIsEmpty()) return default; var option = new Jso..
-
ASP.NET CORE 8에서의 Exception 처리프로그래밍 2024. 10. 21. 17:35
ASP.NET CORE 8 버전 이후부터는 Exception처리를 하도록 명시적 확장이 추가되었다. 이전까지는 middleware를 직접 선언하여 처리한 것에 비해 이제는 프레임워크 상에서 명시적으로 Error 처리를 구현하도록 하고 있다. 예제를 보자. public class GlobalErrorHandler(ILogger logger) : IExceptionHandler{ private readonly ILogger _logger = logger; public async ValueTask TryHandleAsync(HttpContext context , Exception exception , CancellationToken cancellationToken) {..
-
AWS Secrets Manager에 대하여프로그래밍 2024. 10. 21. 17:26
우리는 개발 중 많은 설정 변수 또는 상수를 선언하여 작업하게 된다. 흔히. NET에서 사용하는 방법은 appsettings.json 또는 appsettings.development.json 이겠다. 여기서는 AWS Secrets Manager를 사용하여 환경 변수를 선언하고 Application 상에서 동작하는 방법을 확인해 보자. 먼저 AWS 에서 Secrets Manager를 등록하여야 한다. 해당 방법은 검색을 통해 쉽게 알 수 있으니 검색하여 확인해 보자. 이제 예제 코드를 보자. public class SecretManagerLoader : ISecretManagerLoader{ private readonly string _keyId; private readonly string _a..
-
ASP.NET CORE Serilog 설정 및 사용프로그래밍 2024. 10. 17. 12:45
ASP.NET Core에서 Serilog를 사용하여 logging 하는 방법에 대해 알아보자. 먼저 Serilog 관련 패키지를 설치해야 한다. Enrichers는 로깅 부분에 기록될 사항중 EnvironmentNameProcessIdThreadId등을 기록할 때 사용된다. Sinks는 출력 부분으로 각각 Console, Debug, File 등을 의미한다. 설정 코드를 보자. builder.Host.UseSerilog((context, services, config) =>{ config.ReadFrom.Configuration(context.Configuration);});위 코드는 appsettings.json 또는 appsettings.Development.json 파일을 읽어 Key가 "Se..
-
ASP.NET CORE에서의 JWT 처리프로그래밍 2024. 10. 16. 23:45
ASP.NET CORE에서의 JWT 처리에 대해 알아보자. JWT는 JSON Web Token으로 구조는 아래와 같다. Header에는 사용할 알고리즘 및 타입 유형이Payload에는 Claim 정보가Signature에는 헤더에 선언된 알고리즘 private키가 선언된다. 보통 HS256 알고리즘 (HMAC)을 사용하므로 이에 대해 알아보면 아래와 같다.HS256 알고리즘은 서버측서버 측 secret key를 이용해 암호화된 데이터를 발행하고 서버 측에 요청이 올 때 같은secret key로 payload를 암호화 했을 경우 일치 여부를 따지는 논리이다. JWT는 expire time, 즉, 만료시간을 갖는데 payload부분에 사용자 개인정보 또는 민감정보를 넣을 수 있으므로가급적 짧게 가져가는 것이..
-
SignalR Redis Backplane프로그래밍 2024. 10. 16. 12:57
닷넷 웹 개발에서 실시간 양방향 통신을 위한 설루션으로 가장 많이 채택하는 것이 SignalR일 것이다. SignalR은 2013년 처음 오픈 소스로 처음 출시된 이후로 다양한 분야에 사용해 보았다. 채팅, 이미지 공유, 화면 공유 등 실시간으로 상대방과 통신하는 많은 분야에 사용할 수 있다. 이 영역에 web rtc도 있고 web rtc는 P2P에 가깝다. SignalR은 web socket 프로토콜의 구현이다.따라서, signalr을 사용하기 시작한 시점부터 웹 서버는 web socket을 사용하고 있다. 클라이언트 측은 명시적 선언을 하지 않는 이상 기본적으로 web socket으로 동작하도록 되어 있다.물론, long polling, sse 등도 지원한다. web socket의 절차에 따라 구현..
-
EF CORE의 상태 변경프로그래밍 2024. 10. 16. 11:24
EF CORE에서 중요한 것 중 하나는 Tracking, 즉, 상태 추적이다. EF CORE의 Entity는 상태 추적을 비활성화하지 않는 이상에는 모두 상태를 추적하게 되어 있다. 따라서, Entity는 조회, 삽입, 수정, 삭제에 대한 추적 마킹을 가지고 다닌다고 생각하면 되겠다. 해당 마킹 타입은 아래와 같다. public enum EntityState{ /// The entity is not being tracked by the context. Detached, /// /// The entity is being tracked by the context and exists in the database. Its property /// values have not changed..