2016-09-10 1 views
11

알다시피, ASP.NET 코어는 고유 네이티브 미들웨어 외에도 OWIN 미들웨어 (app.UseOwin() 통해)를 지원합니다.ASP.NET 코어 미들웨어 또는 OWIN 미들웨어?

ASP.NET 핵심 미들웨어와 OWIN 미들웨어의 차이점은 무엇입니까?

새로운 미들웨어를 디자인 할 때 ASP.NET Core 미들웨어 또는 OWIN 미들웨어로 디자인해야하는지 어떻게 알 수 있습니까?

답변

7

귀하의 질문에 호기심이 생겨서 지금까지 배운 내용을 나누고 싶습니다.

Katana는 OWIN 사양을 구현 한 것입니다. Katana 버전 3.0 이후이 기술은 오늘날 ASP.NET 코어로 알려진 웹 스택과 완전히 통합되었습니다.

이 전환이 OWIN 사양과 유사하게 유지되는 동안. 약간의 변화가 있었지만. ASP.NET 코어에서 기존 OWIN 미들웨어를 사용하려면 선택적 기능 ("app.UseOwin()")으로 OWIN을 지원하십시오.

미들웨어 ASP.NET 응용 프로그램과 ASP.NET 핵심 응용 프로그램으로 대상을 지정하려면 OWIN 미들웨어를 사용하십시오. ASP.NET Core 개발자에게 일류 시민 경험을 제공하려면 ASP.NET Core 미들웨어가 더 "적합"하다고 인식 될 것입니다.

ASP.NET 핵심 미들웨어 및 OWIN 미들웨어 사이의 관계에 대한 일부 정보는 여기에서 찾을 수 있습니다 :

0

내가 그것을 이해하게되었다 이것으로; ASP.NET 코어 미들웨어는 낮은 수준의 OWIN 미들웨어보다 높은 수준에 있습니다.

ASP.NET 코어 미들웨어는 사용할 수있는 HttpContext으로 전달 될 때 미들웨어를 개발하는 것이 훨씬 쉽다는 이점이 있습니다. 단점은 개발하는 미들웨어가 ASP.NET 코어에 달려 있다는 것입니다.

OWIN은 하위 수준이며 사용자는 IDictionary<string, object> 인 OWIN 환경을 갖게됩니다. 이점은 ASP.NET에 묶여 있지 않으므로 모든 OWIN 서버 (예 : Nowin)에서 실행할 수 있다는 것입니다. 단점은 OWIN 환경에서 직접 컨텍스트를 작성하거나 OWIN 환경 사전을 직접 사용하고 모든 OWIN keys 및 개체를 추적해야하므로 코드 작성에 더 많은 노력이 필요하다는 것입니다.

편집 : OWIN 키를 직접 추적 할 필요가 없으며 강력한 입력 환경을 얻으려면 OwinEnvironment 클래스를 사용할 수 있습니다.

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

마크. OwinEnvironment는 Microsoft.AspNetCore.Owin의 개념이며 순수한 OWIN이 아닙니다. 'OwinMiddleware'와 비슷한 것은 Katana 일이며 순수한 OWIN이 아닙니다. –