ASP.NET Web API는 브라우저 및 모바일 등 광범위한 클라이언트에게 제공하는 HTTP 서비스를 만들기 쉽게 도와주는 프레임워크입니다. .NET Framework로 RESTful application을 만들기에 이상적인 플랫폼입니다.
ASP.NET Web API에서 HTTP Message의 life cycle을 보면서 파이프라인 안에서 일어나는 과정을 알아보겠습니다.
[그림 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
'.NET > ASP.NET Web API2' 카테고리의 다른 글
Exception Handling (0) | 2018.04.09 |
---|---|
ASP.NET Web API2 (0) | 2018.03.12 |