ASP.NET
-
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부분에 사용자 개인정보 또는 민감정보를 넣을 수 있으므로가급적 짧게 가져가는 것이..
-
ASP.NET MVC에서 ASP.NET CORE MVC + WEBAPI의 여정 - 파트1프로그래밍 2024. 2. 15. 15:02
이제 과거의 유산을 걷어내고 새로 스택을 쌓을 시간 입니다. ASP.NET MVC와 ASP.NET CORE MVC는 상당한 간극이 있다. 대표적으로 HttpContext를 사용하는 방법에 있다. ASP.NET MVC의 HttpContext는 Application에서 전역 객체에 속한다. 아래와 같이 설명할 수 있다. Request (Browser) ----> IIS - Create Application Thread (at ThreadPool) ---> ASP.NET MVC Pipeline ----> Find route to Controller 또한 ASP.NET MVC에서는 별도의 의존성 주입이 기본으로 없으므로 대부분의 코드가 HttpContext를 직접적으로 사용하고 있다. 코드로는 아래와 같다. p..
-
Why asp.net is too slow? compared to Java Spring.프로그래밍 2024. 1. 9. 22:01
asp.net 개발자는 종종 spring과 여러 성능면에서 비교를 강요 받는다. 왜 asp.net이 느리다고 하는 것일까? 이유는 당신이 잘 못 개발하고 있기 때문이다. 아래와 같은 이유로 당신은 잘 못 개발하고 있다. 1. Session을 함부로 사용하지 마라. 대량의 컬렉션 객체를 Session에 할당하지 마라. Session은 그렇게 사용하라고 있는게 아니다. 기본적으로 Session은 느리다. 2. Cookie를 사용해라. 단, 민감한 정보는 절대 들어가면 안된다. 유저를 최소한 식별할 수 있을 정도만 사용하라. 화면 상태를 저장하고 싶거든 indexeddb를 사용해라. 3. 싱글톤과 스코프를 사용해라. 설정 정보라면 싱글톤을 일반 로직이라면 스코프를 4. HttpClient는 스레드 세이프이다...
-
if else if else if else, no more프로그래밍 2023. 11. 2. 23:15
중첩 if else문을 사용하지 마세요. 그럼 어떻게 코딩함??? 프로그램 개발에서는 수 많은 if else 구문으로 작성되게 된다. javascript에 callback 지옥이 있듯, 일반적인 모든 프로그래밍에는 if else 지옥이 있다. 흔히 비즈니스 코드에서 나타나는 if else 구문을 줄여 보자. 먼저 아래의 예제를 보자 public enum ENUM_STEP_TYPE { None, Ing, Complete, Cancel } public class GetStepService { private readonly IGetStepNoneRepository _noneRepo; private readonly IGetStepIngRepository _ingRepo; private readonly IGetS..