다음을 통해 공유


ASP.NET Core가 있는 OWIN(Open Web Interface for .NET)

작성자: Steve SmithRick Anderson

ASP.NET 코어:

  • OWIN(Open Web Interface for .NET)을 지원합니다.
  • Microsoft.Owin.*(Katana) 라이브러리에 대한 .NET Core 호환 대체 항목이 있습니다.

OWIN을 사용하면 웹 앱을 웹 서버에서 분리할 수 있습니다. 미들웨어를 파이프라인에서 사용하고 요청 및 관련된 응답을 처리하기 위한 표준 방법을 정의합니다. ASP.NET Core 애플리케이션 및 미들웨어는 OWIN 기반 애플리케이션, 서버 및 미들웨어와 상호 운용할 수 있습니다.

OWIN은 서로 다른 개체 모델이 있는 두 프레임워크를 함께 사용할 수 있도록 허용하는 분리 계층을 제공합니다. Microsoft.AspNetCore.Owin 패키지는 두 개의 어댑터 구현을 제공합니다.

  • ASP.NET Core에서 OWIN으로
  • OWIN에서 ASP.NET Core로

이렇게 하면 ASP.NET Core를 OWIN 호환 가능한 서버/호스트를 기반으로 호스팅하거나 다른 OWIN 호환 가능한 구성 요소를 ASP.NET Core를 기반으로 실행되도록 할 수 있습니다.

참고 항목

이러한 어댑터를 사용하면 성능 비용이 수반됩니다. ASP.NET Core 구성 요소만을 사용하는 앱은 Microsoft.AspNetCore.Owin 패키지 또는 어댑터를 사용하면 안 됩니다.

샘플 코드 보기 및 다운로드(다운로드 방법)

ASP.NET Core 파이프라인에서 OWIN 미들웨어 실행

ASP.NET Core의 OWIN 지원은 Microsoft.AspNetCore.Owin 패키지의 일부로 배포됩니다. 이 패키지를 설치하여 OWIN 지원을 프로젝트로 가져올 수 있습니다.

OWIN 미들웨어는 인터페이스 및 특정 키 설정(예: Func<IDictionary<string, object>, Task>)이 필요한 owin.ResponseBody을 준수합니다. 다음과 같은 간단한 OWIN 미들웨어는 "Hello World"를 표시합니다.

public Task OwinHello(IDictionary<string, object> environment)
{
    string responseText = "Hello World via OWIN";
    byte[] responseBytes = Encoding.UTF8.GetBytes(responseText);

    // OWIN Environment Keys: http://owin.org/spec/spec/owin-1.0.0.html
    var responseStream = (Stream)environment["owin.ResponseBody"];
    var responseHeaders = (IDictionary<string, string[]>)environment["owin.ResponseHeaders"];

    responseHeaders["Content-Length"] = new string[] { responseBytes.Length.ToString(CultureInfo.InvariantCulture) };
    responseHeaders["Content-Type"] = new string[] { "text/plain" };

    return responseStream.WriteAsync(responseBytes, 0, responseBytes.Length);
}

샘플 서명은 Task를 반환하고 OWIN에 필요한 IDictionary<string, object>를 수락합니다.

다음 코드는 OwinHello 확장 메서드로 UseOwin 미들웨어(위에 표시된)를 ASP.NET Core 파이프라인에 추가하는 방법을 보여줍니다.

public void Configure(IApplicationBuilder app)
{
    app.UseOwin(pipeline =>
    {
        pipeline(next => OwinHello);
    });
}

OWIN 파이프라인 내에서 수행하도록 기타 작업을 구성할 수 있습니다.

참고 항목

응답 헤더는 응답 스트림에 대한 최초 작성 전에 수정되어야 합니다.

참고 항목

UseOwin에 대한 여러 번의 호출은 성능상의 이유로 권장되지 않습니다. OWIN 구성 요소는 함께 그룹화하는 경우 가장 잘 작동합니다.

app.UseOwin(pipeline =>
{
    pipeline(next =>
    {
        return async environment =>
        {
            // Do something before.
            await next(environment);
            // Do something after.
        };
    });
});

OWIN 환경

HttpContext를 사용하여 OWIN 환경을 구성할 수 있습니다.


   var environment = new OwinEnvironment(HttpContext);
   var features = new OwinFeatureCollection(environment);

OWIN 키

OWIN은 HTTP 요청/응답 교환 전체에서 정보를 전달하는 IDictionary<string,object> 개체에 따라 달라집니다. ASP.NET Core는 아래에 나열된 키를 구현합니다. 기본 사양, 확장OWIN 키 지침 및 공통 키를 참조하세요.

요청 데이터(OWIN v1.0.0)

값(형식) 설명
오윈. 요청체계 String
오윈. Request메소드 String
오윈. RequestPathBase String
오윈. 요청 경로 String
오윈. RequestQueryString String
오윈. 요청 프로토콜 String
오윈. 요청 헤더 IDictionary<string,string[]>
오윈. RequestBody 요청 Stream

요청 데이터(OWIN v1.1.0)

값(형식) 설명
오윈. 요청 ID String 선택 사항

응답 데이터(OWIN v1.0.0)

값(형식) 설명
오윈. 응답 상태 코드 int 선택 사항
오윈. ResponseReasonPhrase String 선택 사항
오윈. 응답 헤더 IDictionary<string,string[]>
오윈. ResponseBody (응답본문) Stream

기타 데이터(OWIN v1.0.0)

값(형식) 설명
오윈. 통화취소됨 CancellationToken
오윈. 버전 String

공통 키

값(형식) 설명
SSL입니다. 클라이언트인증서 X509Certificate
SSL입니다. LoadClientCertAsync Func<Task>
서버. 원격 IP 주소 String
서버. 리모트포트 String
서버. 로컬IP 주소 String
서버. 로컬 포트 String
서버. OnSending헤더 Action<Action<object>,object>

센드파일 v0.3.0

값(형식) 설명
sendfile입니다. 전송 비동기 대리자 시그니처 참조 요청당

불투명 v0.3.0

값(형식) 설명
불투명한. 버전 String
불투명한. 업그레이드 OpaqueUpgrade 대리자 시그니처 참조
불투명한. 시내 Stream
불투명한. 통화취소됨 CancellationToken

웹소켓 v0.3.0

값(형식) 설명
웹소켓. 버전 String
웹소켓. 받아들이다 WebSocketAccept 대리자 시그니처 참조
웹소켓. 수락Alt 비-사양
웹소켓. 하위 프로토콜 String RFC6455 Section 4.2.2 5.5단계 참조
웹소켓. 전송 비동기 WebSocketSendAsync 대리자 시그니처 참조
웹소켓. 수신 비동기 WebSocketReceiveAsync 대리자 시그니처 참조
웹소켓. 클로즈어비나드 WebSocketCloseAsync 대리자 시그니처 참조
웹소켓. 통화취소됨 CancellationToken
웹소켓. ClientCloseStatus (클라이언트 닫기 상태) int 선택 사항
웹소켓. ClientCloseDescription (클라이언트 닫기 설명) String 선택 사항

추가 리소스