Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

ASP.NET Web API(C#)의 기본 제공 메시지 처리기 완벽 정리

메시지 처리기(Message Handler)는 HTTP 요청을 받아 HTTP 응답을 반환하는 클래스입니다. 모든 메시지 처리기는 추상 클래스인 HttpMessageHandler에서 파생되며, 들어오는 요청이 HttpControllerDispatcher에 도달하기 전에 이를 처리하거나 수정하거나 심지어 거부할 수 있는 기회를 제공합니다.

메시지 처리기는 요청 처리 파이프라인의 매우 초기 단계에서 실행되기 때문에, Web API에서 교차 관심사(Cross-Cutting Concerns)를 구현하기에 가장 적합한 위치입니다. 메시지 처리기란 결국 파이프라인을 통해 HTTP 요청과 응답 과정에 연결된 일련의 클래스 체인(시스템에서 정의한 것일 수도 있고, 개발자가 직접 정의한 것일 수도 있습니다)이라고 할 수 있습니다.

ASP.NET Web API(C#)의 기본 제공 메시지 처리기 완벽 정리

예를 들어 하나의 HTTP 요청이 HTTP 서버에 도착하면, 해당 요청은 먼저 HandlerA로 전달되고, HandlerA에서 처리된 후 HandlerB로 넘어가는 방식으로 동작합니다. 이 구조의 가장 큰 장점은 비즈니스 요구 사항에 따라 각 처리기 내부에서 특정 작업을 수행할 수 있다는 점입니다.

메시지 처리기의 두 가지 유형

ASP.NET Web API 프레임워크에는 다음과 같이 두 가지 유형의 메시지 처리기가 존재합니다.

  • 서버 측(Server-Side) HTTP 메시지 처리기
  • 클라이언트 측(Client-Side) HTTP 메시지 처리기

서버 측 메시지 처리기

서버 측에서 Web API 파이프라인은 다음과 같은 기본 제공(Built-in) 메시지 처리기를 사용합니다.

  • HttpServer — 호스트(Host)로부터 들어온 요청을 받습니다.
  • HttpRoutingDispatcher — 라우팅 정보를 기반으로 요청을 디스패치합니다.
  • HttpControllerDispatcher — 요청을 Web API 컨트롤러로 전달합니다.

이 파이프라인에는 개발자가 직접 만든 사용자 지정 핸들러(Custom Handler)를 추가할 수도 있습니다. 메시지 처리기는 컨트롤러 액션 수준이 아닌 HTTP 메시지 수준에서 동작하는 교차 관심사를 처리하는 데 특히 유용합니다. 예를 들어 메시지 처리기는 다음과 같은 작업을 수행할 수 있습니다.

  • 요청 헤더(Request Header) 읽기 또는 수정
  • 응답(Response)에 사용자 지정 헤더 추가
  • 컨트롤러에 도달하기 전에 요청 유효성 검사

클라이언트 측 HTTP 메시지 처리기

클라이언트 측에서는 HttpClient 클래스가 메시지 처리기를 사용하여 요청을 처리합니다. 기본 처리기는 HttpClientHandler이며, 이 핸들러는 네트워크를 통해 요청을 전송하고 서버로부터 응답을 받아오는 역할을 담당합니다. 마찬가지로 클라이언트 파이프라인에도 사용자 지정 메시지 처리기를 삽입하여 로깅, 인증 토큰 추가, 재시도 로직 등 다양한 기능을 확장할 수 있습니다.