저는 OWIN과 Katana를 처음 사용합니다. OWIN을 사용해야하는 이유는 모르겠지만을 사용할 수는 있습니다 IIS
. 단순화하기 위해 내 질문은 : OWIN 학습을 건너 뛰고 웹 사이트에 IIS를 사용하면 무엇을 잃을까요?
나는 봤지만 간단한 설명이 없습니다. 이 몇 가지 정보는 여기에 ,하지만 난 그것을 이해할 수 없다, 그래서 그들은 일부 전문 용어의 문구를 사용합니다.
저는 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 !!!
이동할 수있는 유일한 차량이 트럭 인 국가를 생각해보십시오. 다른 건 없어 차량을 사고 싶다면 트럭을 사십시오. 글쎄, 그것은 좋은 서비스를 제공했지만 사람들은 항상 트럭이 필요하지 않다는 것을 깨닫기 시작했습니다. 특히 영화를 보거나 우유를 사러 가고 싶을 때 무거운 트럭을 운전할 때 연료가 많이들뿐만 아니라 운전에 스트레스를 추가하십시오. 그러나 그렇습니다. 무거운 물건을 많이 가지고 다니려면 트럭이 그 목적을 잘 수행합니다.
그런 다음 해당 국가의 정부는 자동차 제조업체를위한 사양을 제시했습니다. 사양은 다음과 같습니다.
따라서 이러한 사양에 따라 누구나 필요에 따라 차량을 만들 수 있으며 그에 따라 차량 이름을 지정할 수 있습니다. 따라서 세단, 픽업 트럭, 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 응용 프로그램을 개발했다고 가정 해보십시오. 서버는 다음과 같은 일부 요청에만 응답합니다.
그게 다야. 그리고 다른 것은 없습니다. 그렇다면이 작은 작업을 위해 완전한 IIS 웹 서버가 필요한 이유는 무엇입니까? 이 경우 고유 한 OWIN 구현을 만들 수 있습니다. (아마도 당신은 Katana를 사용할 것입니다)
좋아, ASP.NET MVC 웹 사이트를 만들고 싶다면 IIS를 대체 할 수있는 옵션이 없다고 생각합니다.이 시점에서 왜 Katana에 대해 알아야합니까?
대답 : Katana가 IIS의 필요성을 대체 할만큼 성숙하지는 않았지만 Katana에서 ASP.NET MVC 웹 사이트를 직접 호스팅 할 수 있지만 Katana는 OWIN의 멋진 인터페이스를 많이 구현하여 이러한 기능을 활용할 수 있습니다. 옆에. 예를 들어, 사용자가 Facebook, Google, Twitter 등을 사용하여 로그인 할 수 있도록 허용하는 것은 쉽지 않았습니다. Katana는 많은 후크 (미들웨어)를 제공하므로 Katana는 배관 코드를 작성하지 않고도 외부 소셜 미디어 기반 인증을 쉽게 처리 할 수 있습니다. Katana를 사용하면이 기술을 사용할 때 알아볼 수있는 다른 많은 이점이 있습니다.
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.
그 대답의 더 간단한 버전은 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
.
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