프로그래밍
-
리소스 관리 전략프로그래밍 2024. 10. 22. 15:32
클라이언트 개발하다 보면 많은 리소스 관리를 필요로 한다. 메시지, 버튼명, 이미지 경로, 각종 설정 값등 무수한 리소스를 관리하게 된다. 일반적으로 그러한 리소스를 관리하는 방법은 두 가지가 있다. 일반적으로 클라이언트 앱 또는 웹을 만든다면 앱의 경우 Resources 폴더에 폰트 및 메세지, 이미지 등의 리소스를 넣어두고 사용할 것이다.웹이라면 wwwroot에 css, image, sound, js 등의 리소스를 넣어둘 것이다. 필자는 이러한 개발 사항 중 메세지, 이미지 등의 리소스를 가급적 서버 측에서 전달받는 방식을 사용하라고 이야기하고 싶다. 물론, 즉각적인 반론이 있을 것이다. 시작 시간 문제이다. 어플레케이션이 시작할 때 위와 같은 리소스를 서버로부터 다운로드하여서 사용한다면 시작 시간에..
-
Json을 통한 Kafka ObjectId에 대한 처리프로그래밍 2024. 10. 21. 18:00
흔히 Kafka 처리 시에 ObjectId에 대한 처리로 혼선이 올 수 있다. 이번에는 Json Serialize와 Deserialize시에 ObjectId 오류를 피하고 처리하는 방법에 대해 알아보자. 먼저 해야할 일은 ObjectIdConverter를 만드는 일이다. 아래의 코드를 보자. public class ObjectIdConverter : JsonConverter{ public override void Write(Utf8JsonWriter writer, ObjectId value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString()); } public override ObjectI..
-
확장 메서드란?프로그래밍 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의 절차에 따라 구현..