미들웨어란 무엇인가요?
미들웨어는 요청과 응답을 처리하기 위해 애플리케이션 파이프라인으로 조립된 소프트웨어입니다. 각 구성 요소:
- 요청을 파이프라인의 다음 컴포넌트로 전달할지 선택하세요.
- 파이프라인의 다음 구성 요소가 호출되기 전후로 작업이 수행될 수 있습니다.
요청 위임자는 각 HTTP 요청을 처리하는 요청 파이프라인을 구축하는 데 사용됩니다.
요청 디리게이트는 Run, Map, Use 확장 메서드를 사용하여 구성됩니다. 별도의 요청 위임자는 인라인 익명 메서드(인라인 미들웨어라 불림)로 지정할 수도 있고, 재사용 가능한 클래스로 정의할 수도 있습니다. 이러한 재사용 가능한 클래스와 인라인 익명화 방법은 미들웨어 또는 미들웨어 컴포넌트입니다. 요청 흐름 내 각 미들웨어 구성 요소는 파이프라인의 다음 구성 요소를 호출하고, 적절하다면 링크 단락을 호출하는 역할을 합니다.
HTTP 모듈을 미들웨어로 마이그레이션하는 과정은 이전 버전(ASP.NET)의 ASP.NET Core와 request pipelines의 차이를 설명하며, 더 많은 미들웨어 예시를 제공합니다.
IApplicationBuilder를 사용해 미들웨어 파이프라인을 만드세요
ASP.NET 코어 요청 프로세스는 다음 그림과 같이 일련의 요청 대리인으로 구성됩니다(실행 과정은 검은 화살표를 따라 진행됩니다):
각 대의원은 다음 대의원 전후로 행동할 수 있습니다. 또한 대리인은 요청을 다음 대리자에게 전달하지 않기로 결정할 수 있는데, 이를 요청 파이프라인에서 단락 회로라고 합니다. 단락은 불필요한 작업을 피할 수 있어 보통 바람직합니다. 예를 들어, 정적 파일 미들웨어는 정적 파일 요청을 반환하고 나머지 파이프라인을 단축시킬 수 있습니다. 예외 처리 대리자는 파이프라인 초기에 호출되어야 하며, 이를 통해 이후 파이프라인에서 예외를 포착할 수 있습니다.
가장 간단한 방법은 아마도 Core 애플리케이션 ASP.NET 모든 요청을 처리할 대리자를 설정하는 것입니다. 이 시나리오에는 실제 요청 파이프라인은 포함되지 않습니다. 대신, 각 HTTP 요청마다 익명 메서드가 호출됩니다.
첫 번째 앱. 런 대리인은 파이프라인을 종료합니다.
이런 코드가 있습니다:
브라우저를 통해 접근해보니, 실제로 첫 번째 앱에 포함되어 있습니다. 런은 파이프라인을 종료합니다.
앱으로 여러 요청을 위임할 수 있습니다. 사용은 서로 연결되어 있습니다. 다음 매개변수는 파이프라인 내 다음 대리자를 나타냅니다. (다음 매개변수를 호출하지 않으면 파이프라인을 종료할 수 있다는 점을 기억하세요.) 다음 위임 전후로 행동을 수행할 수 있으며, 다음 예시에서 확인할 수 있습니다:
브라우저를 사용하여 다음과 같은 결과를 확인할 수 있습니다:
요청 대리인의 실행 순서는 위의 흐름도를 따르는 것을 알 수 있습니다.
메모:
응답이 클라이언트에 전송된 후에는 다음에 전화하지 마세요. Invoke. 응답이 시작되면 HttpResponse에 대한 변경 사항이 예외를 던집니다. 예를 들어, 응답 헤더, 상태 코드 등을 설정하면 예외가 발생합니다. 다음 전화를 걸고 나서 응답 본문을 작성하세요.
계약 위반으로 이어질 수 있습니다. 예를 들어, content-length에 설명된 내용 길이보다 더 길게 쓰는 경우.
반응형 콘텐츠 서식이 고장 났을 수 있습니다. 예를 들어, CSS 파일에 HTML 풋을 작성해 보세요.
HttpResponse.HasStarted는 응답 헤더가 전송되었는지, 또는 본문이 작성되었는지 알려주는 유용한 힌트입니다.
내장형 미들웨어
ASP.NET 코어는 다음과 같은 미들웨어 구성 요소를 포함하고 있습니다:
| 미들웨어 | 묘사 | | 인증 | 인증 지원도 가능합니다 | | 코어스 | 도메인 간 자원 공유 구성 | | 응답 캐싱 | 캐시 응답 지원도 가능합니다 | | 응답 압축 | 응답 압축 지원 제공 | | 라우팅 | 요청 라우팅 정의 및 제한 | | 회기 | 사용자 세션 관리 제공 | | 정적 파일 | 정적 파일 및 디렉터리 탐색 지원을 제공합니다 | | URL 리라이트 미들웨어 | URL 재작성과 리디렉션 지원 요청에 사용됩니다 |
|