본문 바로가기
.NET/ASP.NET Web API2

ASP.NET Web API pipeline

by 니니01 2018. 3. 28.

ASP.NET Web API는 브라우저 및 모바일 등 광범위한 클라이언트에게 제공하는 HTTP 서비스를 만들기 쉽게 도와주는 프레임워크입니다. .NET Framework로 RESTful application을 만들기에 이상적인 플랫폼입니다.


ASP.NET Web API에서 HTTP Message의 life cycle을 보면서 파이프라인 안에서 일어나는 과정을 알아보겠습니다.


ASP.NET WebAPI pipeline
Host
Message
Handlers
Controller
Model Binding
------------
Result
conversion
Action Method


[그림 ASP.NET WebAPI - Going deep into the pipeline]

by Renato Jovic, General Manager at Tagit Adriatica


파이프라인을 간단하게 도식화 한 것입니다. IIS나 OWIN으로 호스트가 시작되고 HTTP request가 오면 Message Handler에서 매치되는 Controller로 보내주고 Action을 처리 한 후 resopnse를 주게 됩니다.




Message Handlers


Message Handler에서는 HTTP Message 수준에서의 처리를 합니다.

request header를 읽거나 수정, response header에 추가, controller에 가기 전까지 request의 유효성 검사 등..




Message Handler는 위와 같이 구성되어있습니다. Server-Side Handler사이  Custom Handler인 Message Handler가 추가될 수 있습니다. 또 Message Handler에서 파이프라인의 남은 과정을 스킵하고 직접 응답할 수도 있습니다.


HttpServer에서 host로부터 request를 받음 

-> Custom Handler에서  메세지 처리

-> HttpRoutingDispatcher에서 Route에 매칭되는 곳으로 request 보냄

-> HttpControllerDispatcher에서 Web API Controller로 request 보냄



Controller부터의 과정은 이후에 추가하도록 하겠습니다.




HTTP pipelining 생성 배경

 

HTTP 초기에는 HTTP 통신을 할 때마다 TCP 연결/해제를 반복.

è  어느 한쪽이 연결을 종료하지 않는 이상 TCP 연결을 계속 유지하는 지속연결(Persistent Connection)을 사용하여

불필요한 TCP 연결/해제가 생략되어 부하 감소.

è  파이프라인화를 통해 여러 request 병렬로 보내는 것이 가능.

이전에 response를 받아야만 request를 보낼 수 있어 발생한 network latency와 같은 문제 해결.




References


ASP.NET WEB API 2: HTTP MESSAGE LIFECYLE

HTTP Message Handlers in ASP.NET Web API

위키백과 - 파이프라인 (컴퓨팅)

Network | HTTP | HTTP의 지속 연결, 파이프라인화, 쿠키를 이용한 상태관리

'.NET > ASP.NET Web API2' 카테고리의 다른 글

Exception Handling  (0) 2018.04.09
ASP.NET Web API2  (0) 2018.03.12