[asp.net] 언제 OWIN Katana를 사용해야합니까?

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

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



답변

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 !


답변

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를 사용하면이 기술을 사용할 때 알아볼 수있는 다른 많은 이점이 있습니다.


답변

그 대답의 더 간단한 버전은 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/


답변

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 개의 동시 요청을 달성 할 수있었습니다.


답변

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

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

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


답변