2016-08-02 2 views
8

C#을 사용하여 이전 MVC 프로젝트를 빌드 할 때 OWIN 라이브러리에 대한 많은 참조가 있음을 발견했습니다. 그러나 VS2015 SP3에서 .NET Core 웹 응용 프로그램을 만들 때 참조가없는 것 같습니다.ASP.NET 코어는 여전히 OWIN을 사용합니까?

이 라이브러리는 폐기 되었습니까?

+1

예, OWIN은 여전히 ​​기본 지원 표준입니다. .Net 코어는 웹 앱을 구축하는 데 필요한 기본 기능을 제공합니다. Nuget에서 OWIN 패키지를 가져옵니다. https://docs.asp.net/en/latest/fundamentals/owin.html –

+0

@MurrayFoxcroft : 정확하지 않습니다. .NET Core 및 ASP.NET Core는 ** OWIN을 기반으로하지 않습니다 **. 그러나 그들은 OWIN Middleware의 플러그인을 지원합니다. – Tseng

+0

@Tseng, 실제로 그것이 내가 말한 이유입니다. –

답변

10

OWIN은 라이브러리가 아니며, specification입니다. 문서에서

OWIN은 .NET 웹 서버와 웹 응용 프로그램 간의 표준 인터페이스를 정의합니다.

OWIN의 "큰 아이디어"는 모두가 사용할 공통 인터페이스에 동의 할 수 있으면 실행중인 서버에서 응용 프로그램을 분리 할 수 ​​있다는 것입니다. 실제로 OWIN 호환 서버는 모든 OWIN 호환 응용 프로그램을 실행할 수 있습니다. 이는 과거에 우리가 맺어 온 긴밀한 결합 (응용 프로그램은 IIS에서만 실행될 수 있으며 그 것입니다)보다 개선 된 것입니다.

많은 OWIN 사양은 다양한 속성의 이름을 설명하는 데 사용됩니다. OWIN 호환 서버는 들어오는 요청을 owin.RequestBodyowin.ResponseBody 같은 키가 들어있는 Dictionary<string, object>으로 변환합니다. 요청이 전달 된 응용 프로그램 또는 미들웨어가 해당 키를 읽는 방법을 알고 있으면 요청을 처리 할 수 ​​있습니다. 그게 다야! 이

혼란의 일반적인 소스 OWIN 라이브러리 (OWINMicrosoft.Owin을 같은)이다. 이러한 라이브러리는 OWIN 인터페이스의 형식에 안전한 구현이거나 OWIN 호환 구성 요소와의 상호 작용을보다 쉽게 ​​만드는 도우미입니다.

@Murray와 @Tseng은 ASP.NET 코어가 OWIN에서 빌드되지 않았지만 OWIN과 호환된다는 것을 지적했습니다. 또는 ASP.NET 핵심 (Kestrel, WebListener, IIS)이 실행되는 서버은 OWIN과 호환됩니다. ASP.NET 코어는 저수준 요청 ("OWIN 수준")에 대한 추상화이며 컨트롤러 및 서버 렌더링 페이지와 같은 요소를 쉽게 만들 수 있습니다.

ASP.NET 코어 OWIN 호환이므로 모든 OWIN 호환 미들웨어를 쉽게 연결할 수 있습니다.

app.UseOwin(pipeline => 
{ 
    pipeline(next => OwinHello); 
    // where OwinHello is a compatible middleware function 
}); 

는 ASP.NET 코어 파이프 라인에 OWIN 미들웨어를 추가하는 추가 예제 documentation를 참조하십시오 Microsoft.AspNetCore.Owin 패키지는 UseOwin 방법을 제공합니다.

+1

ASP.NET Core에서 OWIN 환경 사전에 액세스 할 수 있습니까? – Fred

+0

@Fred 예, 'HttpContext.Items' 속성을 통해. –

+2

하지만'HttpContext.Items'는'Dictionary '이고 OWIN 환경 사전은'Dictionary '입니다. 또한 HttpContext.Items는 비어 있으므로 미들웨어간에 데이터를 공유하는 데 사용될 수 있지만 원래 OWIN 환경은 포함되어 있지 않습니다. – Fred

관련 문제