전체 글
-
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..
-
Entity Framework는 Unit of Work가 필요한가?프로그래밍 2024. 10. 14. 14:10
많은 예제 중에 EF를 UoW화 사용하는 예제가 많이 있다. 필자는 그러한 예제가 틀렸다고 이야기하고 싶다. UoW를 EF 상에서 구현하다 보면 DbContext를 작성하는 것과 다름없다고 느낀다면 필자는 그것이 맞다고 이야기하고 싶다. EF의 DbContext 구현은 사실상 UoW의 구현이다. 그럼 왜 UoW를 구현하려고 할까? 그것은 이전 마이크로ORM인 Dapper나 ADO.NET와 연속성을 가지기 위해서라고 필자는 생각한다. EF를 사용함에 있어 기존 구조가 Service - Repository의 구현이라면 누구나 Repository 패턴에 맞춰서 개발하고 싶을 것이고 Repository를 구현하는 데 있어 사용하는 패턴이 UoW인 것이다. 따라서, 필자는 EF의 DbContext를 구현하고 사용..