언제 OWIN Katana를 사용해야합니까?


270

저는 OWIN과 Katana를 처음 사용합니다. OWIN을 사용해야하는 이유는 모르겠지만을 사용할 수는 있습니다 IIS. 단순화하기 위해 내 질문은 : OWIN 학습을 건너 뛰고 웹 사이트에 IIS를 사용하면 무엇을 잃을까요?

나는 봤지만 간단한 설명이 없습니다. 이 몇 가지 정보는 여기에 ,하지만 난 그것을 이해할 수 없다, 그래서 그들은 일부 전문 용어의 문구를 사용합니다.



2
IoT의 OWIN 방향이 얼마나 영향을 받는지 궁금합니다. Arduino에 IIS를 실제로 붙일 수는 없습니다.
Sentinel

답변:


279

asp.net WebApi v2에서 OWIN 파이프 라인이 기본값이됩니다. 결국 모든 asp.net 프로젝트에서 표준 파이프 라인이 될 것입니다.

나는 여기에 쓰여진 것보다 더 잘 넣을 수 없다 : http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

"OWIN (Open Web Interface for .NET)" 섹션 은 OWIN의 목표를 완벽하게 설명합니다.

OWIN이 없으면 asp.net 비트는 IIS가 응용 프로그램과 통신하는 방식에 연결됩니다. OWIN은 웹 서버 및 프레임 워크 구성 요소를 추상화합니다. 즉, 애플리케이션 코드는 이제 OWIN 인터페이스를 인식하지만 요청을 제공하는 웹 서버는 인식하지 못합니다.

그 결과, 호스트와 전체 플랫폼 / 운영 체제간에 응용 프로그램을보다 쉽게 ​​이식 할 수 있습니다. 예를 들어, 콘솔이나 프로세스에서 응용 프로그램을 호스팅하는 기능을 통해 Mono는 아무런 노력 없이도 응용 프로그램을 호스팅 할 수 있습니다 ... (Raspberry Pi anyone)

두 번째 측면은 파이프 라인으로 작동한다는 것입니다.


오윈 파이프 라인


웹 서버와 애플리케이션 사이에 미들웨어 (및 원하는만큼)를 연결할 수 있습니다.
이것은 더 많은 모듈 형 솔루션을 허용합니다. 애플리케이션에 대한 요청 / 응답에 영향을 줄 수있는 재배포 가능 미들웨어를 개발할 수 있지만 이러한 모듈을 애플리케이션 코드와 분리하십시오.

이 모듈 식 접근 방식의 장점을 설득하려면 OWIN에서 사용할 수있는 너겟 패키지를 살펴보십시오. http://www.nuget.org/packages?q=owin

이러한 많은 패키지는 이전에는 핵심 asp.net 기능이었으며 미들웨어로 추출되었습니다.
예를 들어, 다양한 OAuth 제공자를 사용하여 로그인 지원을 추가하면 인프라 문제 (미들웨어)가되며 더 이상 애플리케이션 코드의 일부일 필요는 없습니다.

또는 웹 사이트의 모든 이미지를 귀여운 고양이 이미지로 자동으로 바꾸려면 투명하게 수행 할 수도 있습니다.

https://github.com/serbrech/Owin.Catify

편집 : 이제 너겟 패키지로 사용할 수 있습니다 : Owin.Catify !


당신의 대답은 확실히 upvoted만큼 좋지만, 그것을 이해하기는 어렵습니다.
Seyed Morteza Mousavi

5
어떻게하면 나아질 수 있습니까? 당신은 무엇을 이해하지 못합니까?
Stéphane

1
OWIN에는 이점이 있지만 실행 흐름이 미들웨어에서 미들웨어로 효과적으로 '점프'하기 때문에 디버그하기가 어려워 보입니다. 각각 잠재적으로 길을 따라 응답을 변경합니다. Visual Studio의 연결 디버거가 흐름을 따라갈 수없는 것 같습니다. 그리고 웹 애플리케이션에서 예외가 발생하면 200 OK 응답으로 빈 페이지가 나타납니다. Windows 이벤트 로그 외에는 오류가 없습니다.
simbolo

7
weblogs.asp.net/pglavich/owin-katana-and-getting-started에서 유용한 설명을 찾았습니다 . IIS에서 응용 프로그램을 분리하고 System.Web 어셈블리에 대한 종속성을 분리하는 방법입니다. HTTP 파이프 라인에있는 구성 요소의 양을 줄임으로써 앱의 경량화를 유지합니다.
Terence

2
현재 환경에서 추가해야 할 일부 팀은 WebApi를 사용하고 일부 팀은 Nancy를 사용합니다. 둘 다 OWIN 위에 위치하므로 프레임 워크와 독립적으로 Api 키 처리 또는 상태 비 저장 인증과 같은 미들웨어를 공유 할 수 있습니다. 우리는 팀이 가장 적합한 것을 선택할 수있게했습니다. 이것이 OWIN의 진정한 이점입니다.
Stéphane

209
public interface OWIN
{
   void ListenHttpCallAndServeWebPage();    
}

namespace Microsoft.OWIN
{
   public class Katana : OWIN
   {
      public void ListenHttpCallAndServeWebPage()
      {
         // listen to a port for HTTP call and serve web page
      } 
   }
}

네 맞습니다. OWIN은 인터페이스 이고 Katana는 Microsoft 의 OWIN 인터페이스 구현 입니다 . 따라서 우리는이 두 단어 (OWIN / KATANA)를 함께 듣고이 두 용어의 차이점을 혼동합니다. 따라서 Katana는 Microsoft의 OWIN 인터페이스 구현입니다. 자신 만의 OWIN 구현을 만들고자하는 BIG-BOSS라는 다른 회사가 있다고 말하면,이를 구현하고 'BATANA'로 구현하고 OWIN / BATANA와 같은 문구를 광고 할 수 있습니다.

그래서 왜 OWIN !!!

이동할 수있는 유일한 차량이 트럭 인 국가를 생각해보십시오. 다른 건 없어 차량을 사고 싶다면 트럭을 사십시오. 글쎄, 그것은 좋은 서비스를 제공했지만 사람들은 항상 트럭이 필요하지 않다는 것을 깨닫기 시작했습니다. 특히 영화를 보거나 우유를 사러 가고 싶을 때 무거운 트럭을 운전할 때 연료가 많이들뿐만 아니라 운전에 스트레스를 추가하십시오. 그러나 그렇습니다. 무거운 물건을 많이 가지고 다니려면 트럭이 그 목적을 잘 수행합니다.

그런 다음 해당 국가의 정부는 자동차 제조업체를위한 사양을 제시했습니다. 사양은 다음과 같습니다.

  1. 차량에는 4 개의 바퀴가 있어야합니다
  2. 차량에는 조향 장치가 있어야합니다.
  3. 차량에는 전조등과 신호등이 있어야합니다.

따라서 이러한 사양에 따라 누구나 필요에 따라 차량을 만들 수 있으며 그에 따라 차량 이름을 지정할 수 있습니다. 따라서 세단, 픽업 트럭, SUV, VAN 등 모든 종류의 차량이 시장에 나타났습니다. 누군가가 항상 무거운 물건을 가지고 다닐 필요가없고, 단지 직장에 가기 위해 차량이 필요한 경우, 작은 세단 형 자동차를 살 수 있습니다. 전력이 조금 더 필요한 사람은 SUV를 구입할 수 있습니다.

위의 예를 바탕으로 ASP.NET 웹 응용 프로그램은 트럭과 같이 많이로드 된 System.Web Assembly를 사용하고 일부 파일 기반의 서비스를 제공하는 작은 웹 응용 프로그램을 만들고 싶다면 작은 요청 집합에서 우리는 그 무거운 System.Web 어셈블리 (트럭)를 사용해야합니다. 이제 OWIN이 나타납니다. OWIN은 서버를 정의하는 일련의 사양 (인터페이스라고 부름)입니다. 이 사양을 바탕으로 누군가 (예 : 차량 제조업체)는 특정 문제 영역 / 응용 프로그램 요구에 따라 다양한 종류의 서버를 만들 수 있습니다. Microsoft는 웹 API를 제공 할 수있는 것과 동일한 방식으로 Katana라는 OWIN에 대한 자체 구현을 만들었습니다. WebAPI는 경량화 된 기술이므로 완전한 시스템이 필요하지 않습니다.

이제 당신이 묻는다면, ' 필요합니까?'? 답은 '성능의 필요에 달려 있습니다'입니다. 영화를 보러도 트럭 운전에 신경 쓰지 않는다면 아마도 OWIN이 필요하지 않을 것입니다. 그러나 가벼운 세단 형 자동차 만 있으면 도시, 작은 거리에서 운전하거나 영화 등을 볼 수 있습니다. 예, 시장에서 어떤 OWIN 구현을 사용할 수 있는지 확인할 수 있습니다. Katana는 OWIN의 구현 중 하나이므로 Katana가 제공하는 것을 확인할 수 있습니다. Katana뿐만 아니라 다른 회사가 특정 도메인 (예 : 최신 의약품 정보를 다운로드 할 의료 기기 서버)에 따라 OWIN을 구현하고 의사 인 경우 OWIN 구현을 확인할 수 있습니다. 또한 특정 틈새 시장을 대상으로 OWIN 구현을 직접 만들 수도 있습니다.

웹 응용 프로그램과 관련하여 클라이언트를위한 사용자 지정 웹 사이트를 개발하는 간단한 웹 개발자 인 경우 IIS가 균형 잡힌 방식으로 서비스를 제공하므로 OWIN의 사용자 지정 구현에 대해 걱정할 필요가 없습니다. 웹 API 프로젝트를 빌드하면 Visual Studio-> 새 프로젝트에서 Katana 기반 템플릿을 준비 할 수 있으므로 Katana 관련 기술을 배우는 것 외에는 걱정할 필요가 없습니다. 현재 Katana는 ASP.NET MVC 용 IIS의 필요성을 완전히 대체 할만큼 성숙하지는 않았지만 앞으로는 그럴 것입니다.

그렇다면 언제 OWIN 구현을 작성해야합니까?

답변 : 예를 들어 백그라운드에서 서버로 실행되고 포트 번호 XXXX를 수신해야하는 Windows 응용 프로그램을 개발했다고 가정 해보십시오. 서버는 다음과 같은 일부 요청에만 응답합니다.

  1. 재고 확보
  2. 인벤토리 ID 삭제 = 4
  3. PUT 인벤토리 ID = 5

그게 다야. 그리고 다른 것은 없습니다. 그렇다면이 작은 작업을 위해 완전한 IIS 웹 서버가 필요한 이유는 무엇입니까? 이 경우 고유 한 OWIN 구현을 만들 수 있습니다. (아마도 당신은 Katana를 사용할 것입니다)

좋아, ASP.NET MVC 웹 사이트를 만들고 싶다면 IIS를 대체 ​​할 수있는 옵션이 없다고 생각합니다.이 시점에서 왜 Katana에 대해 알아야합니까?

대답 : Katana가 IIS의 필요성을 대체 할만큼 성숙하지는 않았지만 Katana에서 ASP.NET MVC 웹 사이트를 직접 호스팅 할 수 있지만 Katana는 OWIN의 멋진 인터페이스를 많이 구현하여 이러한 기능을 활용할 수 있습니다. 옆에. 예를 들어, 사용자가 Facebook, Google, Twitter 등을 사용하여 로그인 할 수 있도록 허용하는 것은 쉽지 않았습니다. Katana는 많은 후크 (미들웨어)를 제공하므로 Katana는 배관 코드를 작성하지 않고도 외부 소셜 미디어 기반 인증을 쉽게 처리 할 수 ​​있습니다. Katana를 사용하면이 기술을 사용할 때 알아볼 수있는 다른 많은 이점이 있습니다.


1
OWIN이 말하는 인터페이스라고 말할 수는 없습니다. 응용 프로그램이 호스트와 통신하는 방식을 표준화하는 표준 프로토콜입니다. 그러나 Katana는 Microsoft에서 개발하고 유지 관리하는 표준의 구현 일 뿐이라는 점을 정확하게하는 것이 중요합니다. 다른 구현은 다음과 같습니다. github.com/owin/owin/wiki/Implementations
Stéphane

1
차량의 사양이 '4 륜'이라고 말하면 누군가가 18 륜 차량을 만들 때 ... 사양에 맞지 않습니까? 아니면 뭔가 빠졌습니까? 어쨌든 좋은 비유입니다. 더 쉽게 이해할 수 있도록
kurasa

1
@Stephane : 글쎄, 그것은 인터페이스와 같지 않을 수도 있습니다. 누군가가 많은 전문 용어에 압도되지 않고 OWIN과 KATANA의 관계를 이해할 수 있도록 높은 수준의 아이디어를 제공하려고했습니다.
Emran Hussain 1

1
"Katana가 IIS의 필요성을 대체 할만큼 충분히 성숙하지는 않았지만 Katana에서 ASP.NET MVC 웹 사이트를 직접 호스팅 할 수 있습니다."Katana가 1.0이면 IIS가 중요하지 않은 것으로 보입니다. 아뇨, 맞지 않습니다. Microsoft는 Microsoft.Owin.Host.IIS를 제공하므로 웹 응용 프로그램 + Katana를 IIS (System.Web없이)에서 직접 호스팅 할 수 있습니다. IIS는 여전히 Microsoft 플랫폼에서 ASP.NET 응용 프로그램의 핵심 구성 요소입니다.
Lex Li

2
이해하는데 도움이 될 수 있다면 좋을 것입니다 –what is lightweight part, i mean if Katana is compared to IIS, by which means it is lightweight ( say it does not do step#1,2,3 etc.. , but IIS does that.
Arindam Nayak

47

그 대답의 더 간단한 버전은 Katana가 System.Web 어셈블리와 이전 ASP.NET 파이프 라인을 완전히 대체 할 수 있다는 것입니다.

따라서 모든 사람은 지금 진화를보고 마침내 완료되면 전환 할 준비가되어 있어야합니다.

아래는 Microsoft 가이 기사 에 포함시키지 않은 세부 사항을 채우기 위해 그린 다이어그램 입니다.

여기에 이미지 설명을 입력하십시오

OWIN은 응용 프로그램 프레임 워크를 실행하고 그 아래의 모든 것을 잊게하는 표준입니다. 반면에 OWIN 자체는 다양한 호스트 어댑터를 사용하여 기본 웹 서버 (IIS 및 기타 여러 서버)와 통신 할 수 있도록합니다.

이제 Jexus 웹 서버 작성자와 함께 OWIN / Katana와 Jexus를 연결하기 위해 호스트 어댑터를 작성하는 방법을 조사하고 있습니다. 우리는 OWIN이 유연하고 고도로 사용자 정의 가능하다는 것을 알게되어 기쁩니다.

참조 : http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/


그래서 나는이 대답을 "카타나는 System.Web 어셈블리와 이전 ASP.NET 파이프 라인을 완전히 대체 할 것입니다"라고 말합니다. 이것은 위의 다이어그램에서 모든 서버 어댑터를 대체하거나 host.systemweb을 대체 할 수 있다는 의미입니까?
23시 55 분

@netfed는 불행히도 OWIN 자체와 ASP.NET Core가 대신합니다. 이 질문과 답변이 모두 구식입니다.
Lex Li

아하!! Asp.net 코어에는 Owin 용량이 있습니까? 또는 Asp.net 코어는 필요한 모듈 만 구현할 수 있고 System.web에 내장 된 더 큰 함수 모음을 사용할 필요가없는 모듈 모음으로 작동합니까?
netfed

2
@ netfed, OWIN이 죽습니다 (모바일 키보드가 내 말을 바꿨습니다). ASP.NET Core는 미들웨어 접근 방식을 유지하므로 원하는 방식으로 구성 요소를 조립할 수 있습니다 System.Web.
Lex Li

그게 다 끝났습니다 :-) 명확하게 해주셔서 감사합니다.
netfed

15

IIS를 사용할 수 있는데 왜 OWIN을 사용해야합니까?

OWIN은 작업중인 프레임 워크에서 웹 서버를 분리하도록 설계되었습니다. 믹싱 프레임 워크 및 서버를 위해 응용 프로그램을 가볍고 휴대 가능하게 만들 수 있습니다.

Katana는 Microsoft의 OWIN 구성 요소 구현입니다.

지난 몇 년 동안 Microsoft는 계획이 진행됨에 따라 웹 도구를보다 민첩하고 신속하게 만들었습니다. 예를 들어 ASP.Net MVC 및 ASP.Net Web API의 개발. 그들은 지금 생각하는 큰 부담 인 System.Web dll에 의존하지 않습니다. 이점은 두 가지 개발 방식으로시기 적절하게 수정 프로그램을 제공 할 수 있으며주기가 그 어느 때보 다 빠릅니다. 또한 개발자는 이러한 응용 프로그램을 OWIN 구현의 참조 인 사용자 지정 OWIN 호스트 또는 Katana에 배포 할 수 있습니다.

결국 요점이 뭐야?

마이크로 소프트는`헬리오스 (Helios) '라는 IIS 기반의 경량 OWIN 기반 웹 호스트 프로젝트를 발표했다. 목표는 OWIN 사양을 구현하는 웹 호스트에서 독립적으로 실행, 설치 및 관리 할 수있는 독립적 인 작은 구성 요소를 제공하여 ASP.NET/IIS 관계를 피하는 것입니다.

핵심 이유 중 하나는 성능 요소입니다. Helios는 표준 ASP.Net 애플리케이션보다 2 배에서 3 배 더 많은 처리량을 달성 할 수 있습니다. 메모리 소비 측면에서 Helios는 System.Web dll보다 훨씬 낫습니다. 벤치 마크에서 Helios 아키텍처를 통해 샘플 애플리케이션은 표준 ASP.Net 애플리케이션에 비해 약 1GB 적은 오버 헤드로 50000 개의 동시 요청을 달성 할 수있었습니다.


1
이 게시물이 도움이 될 수 있습니다. simple-talk.com/dotnet/.net-framework/…
nznoor

0

OWIN은 웹 응용 프로그램과 호스팅 플랫폼 간의 추상화입니다. OWIN을 사용하여 웹 응용 프로그램을 작성하는 경우 IIS에 연결되어 있지 않은 경우 원하는 경우 다른 호스트를 사용할 수 있습니다.

IIS 대신 OWIN을 사용하는 이유를 물었지만 서로 대체 할 수는 없습니다. OWIN은 IIS와 응용 프로그램 사이에 있으므로 응용 프로그램을 다시 작성하지 않고도 IIS를 전환 할 수 있습니다.

이 페이지를 확인하실 수도 있습니다 https://github.com/Bikeman868/OwinFramework/wiki/OWIN

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.