Jestem nowy w OWIN i Katanie. Naprawdę nie rozumiem, dlaczego powinienem używać OWIN, podczas gdy mogę korzystać IIS
. Upraszczając, moje pytanie brzmi: co stracę, jeśli pominę naukę OWIN i użyję usług IIS na swoich stronach?
Poszukałem google, ale nie ma prostego wyjaśnienia. Istnieją pewne informacje tutaj , ale oni korzystać z niektórych fraz żargon, więc nie mogę tego zrozumieć.
Odpowiedzi:
W asp.net WebApi v2 potok OWIN staje się domyślny. W końcu będzie to standardowy potok w ramach każdego projektu asp.net.
Nie potrafię tego lepiej ująć niż tutaj: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana
Sekcja „Otwarty interfejs sieciowy dla platformy .NET (OWIN)” doskonale wyjaśnia cele OWIN.
Bez OWIN bity asp.net są sprzężone ze sposobem, w jaki IIS komunikuje się z aplikacją. OWIN streszcza serwery i komponenty frameworka. Oznacza to, że Twój kod aplikacji będzie teraz świadomy interfejsu OWIN, ale nie serwera, który obsługuje żądanie.
W zamian aplikacje można łatwiej przenosić między hostami i potencjalnie całymi platformami / systemami operacyjnymi. Na przykład możliwość hostowania aplikacji w konsoli lub dowolnym procesie pozwala Mono na hostowanie jej bez wysiłku ... (Raspberry Pi ktokolwiek)
Drugim aspektem jest to, że działa jako potok.
Możesz podłączyć dowolne oprogramowanie pośrednie (i tyle, ile chcesz) między serwerem WWW a aplikacją.
Pozwala to na bardziej modułowe rozwiązania. Możesz opracowywać redystrybucyjne oprogramowanie pośrednie, które może wpływać na żądanie / odpowiedź przychodzące do / z aplikacji, ale oddziel te moduły od kodu aplikacji.
Aby przekonać się o zaletach tego modułowego podejścia, spójrz na pakiety nuget dostępne dla OWIN: http://www.nuget.org/packages?q=owin
Wiele z tych pakietów było wcześniej podstawową funkcjonalnością asp.net i zostało wyodrębnionych jako oprogramowanie pośrednie.
Na przykład dodanie obsługi logowania przy użyciu różnych dostawców protokołu OAuth staje się problemem infrastrukturalnym (oprogramowanie pośrednie) i nie musi już być częścią kodu aplikacji:
...
Lub jeśli chcesz automatycznie zastąpić wszystkie obrazy ze swojej witryny obrazkami uroczych kotów, możesz to również zrobić w przejrzysty sposób:
https://github.com/serbrech/Owin.Catify
EDYCJA: Jest teraz dostępny jako pakiet nuget : Owin.Catify !
źródło
Tak to prawda. OWIN to interfejs, a Katana to implementacja interfejsu OWIN przez Microsoft . Dlatego słyszymy te 2 słowa (OWIN / KATANA) razem i często mylimy się między różnicą między tymi 2 terminami. Katana to implementacja interfejsu OWIN firmy Microsoft. Powiedzmy, że istnieje inna firma o nazwie BIG-BOSS, która chciała stworzyć własną implementację OWIN, może to zrobić i nazwać swoją implementację „BATANA” oraz reklamować frazy takie jak OWIN / BATANA.
Dlaczego więc OWIN !!!
Pomyśl o kraju, w którym jedynym pojazdem dostępnym do ruchu jest ciężarówka. Nic więcej. Jeśli chcesz kupić pojazd, kupisz ciężarówkę. Kiedyś dobrze to służyło, ale ludzie zaczęli zdawać sobie z tego sprawę, że nie potrzebują ciągłej ciężarówki, zwłaszcza gdy chcą iść obejrzeć film lub kupić mleko, jazda ciężką ciężarówką kosztuje nie tylko wysokie paliwo, ale także dodać stres podczas jazdy. Ale tak, jeśli chcą przewozić dużo ciężkich rzeczy, ciężarówka bardzo dobrze służy temu celowi.
Następnie rząd tego kraju opracował specyfikację dla producentów pojazdów. Specyfikacja jest następująca:
Na podstawie tych specyfikacji każdy może wykonać pojazd według różnych potrzeb i odpowiednio nazwać swój pojazd. Dlatego Sedan, Pickup Truck, SUV, VAN, ..etc .. wszelkiego rodzaju pojazd pojawił się na rynku. Jeśli ktoś nie musi cały czas nosić ciężkich rzeczy, a raczej potrzebuje pojazdu tylko do pracy, może kupić małego sedana. Ktoś może kupić SUV, jeśli potrzebuje niewiele więcej mocy.
Na podstawie powyższego przykładu możemy powiedzieć, że nasza aplikacja sieci Web ASP.NET korzysta z mocno obciążonego zestawu System.Web (takiego jak ciężarówka) i jeśli chcemy stworzyć małą aplikację internetową, w której naszym celem jest po prostu obsługa niektórych plików na niewielkim zestawie żądań jesteśmy zobowiązani do użycia tego ciężkiego zestawu System.Web (ciężarówka). Teraz pojawia się OWIN. OWIN to zestaw specyfikacji (możemy to nazwać interfejsem) definiujący serwer. W oparciu o tę specyfikację ktoś (np. Producent pojazdu) może tworzyć różnego rodzaju serwery w oparciu o określone domeny problemowe / potrzeby aplikacji. Microsoft stworzył własną implementację dla OWIN o nazwie Katana w ten sam sposób, który może obsługiwać interfejs API sieci Web. Ponieważ WebAPI to lekka technologia, która nie wymaga w pełni rozwiniętego systemu.
Teraz, jeśli zapytacie: „ Czy potrzebuję tego?„? Odpowiedź brzmi: „To zależy od twojej potrzeby wydajności”. Jeśli nie masz nic przeciwko prowadzeniu ciężarówki nawet na obejrzenie filmu, być może nie potrzebujesz OWIN. Ale jeśli uważasz, że lekki samochód Sedan to wszystko, czego potrzebujesz, aby jechać w mieście, na niewielką odległość, obejrzeć film ... itd. Tak, możesz sprawdzić, jakie wdrożenia OWIN są dostępne na rynku. Katana jest jedną z implementacji OWIN, dlatego możesz sprawdzić, co oferuje Katana. Nie tylko Katana, jeśli jakakolwiek inna firma wdraża OWIN zgodnie z określoną domeną (na przykład serwer urządzeń medycznych, który pobierze najnowsze informacje o medycynie), a jeśli jesteś lekarzem, być może możesz sprawdzić wdrożenie OWIN. Co więcej, możesz sam stworzyć własną implementację OWIN, kierując ją do dowolnej konkretnej niszy.
Jeśli chodzi o aplikacje internetowe, jeśli jesteś prostym programistą WWW, opracowując niestandardowe strony internetowe dla swoich klientów, być może nie musisz martwić się niestandardową implementacją OWIN, ponieważ IIS będą Ci służyć w zrównoważony sposób. Jeśli zbudujesz projekt Web API, otrzymasz gotowy szablon oparty na Katanie z Visual Studio -> Nowy projekt, więc nie będziesz musiał się martwić o nic innego niż nauczenie się określonych technik Katana. W tej chwili Katana nie jest wystarczająco dojrzała, aby całkowicie zastąpić potrzebę IIS dla ASP.NET MVC, ale być może w przyszłości tak się stanie.
Kiedy więc będę musiał napisać własną implementację OWIN?
Odpowiedź: Załóżmy na przykład, że opracowałeś aplikację Windows, która powinna działać jako serwer w tle i słuchać numeru portu XXXX. Twój serwer będzie odpowiadał tylko na niektóre zestawy takich zapytań:
To wszystko. I nic więcej. Dlaczego więc potrzebujesz pełnego serwera IIS do tego małego zadania? W takim przypadku możesz utworzyć własną implementację OWIN. (Być może użyjesz do tego Katany)
Ok, więc zrozumiałem, że jeśli chcę stworzyć stronę ASP.NET MVC, nie mam możliwości zastąpienia IIS, to dlaczego powinienem w tej chwili wiedzieć o Katanie?
Odpowiedź: Chociaż Katana nie jest wystarczająco dojrzała, aby zastąpić potrzebę usług IIS, aby można było hostować witrynę ASP.NET MVC bezpośrednio na platformie Katana, ale Katana zaimplementowała wiele ciekawych interfejsów OWIN, dzięki czemu można korzystać z tych funkcji po stronie przy boku. Na przykład zezwolenie użytkownikom na logowanie się za pomocą Facebooka, Google, Twittera itp. Nie było wcześniej łatwe. Katana oferuje wiele haczyków (jako oprogramowanie pośrednie), dzięki czemu Katana może łatwo zająć się zewnętrznym uwierzytelnianiem opartym na mediach społecznościowych bez pisania kodu hydraulicznego. Istnieje wiele innych korzyści z używania Katany, które możesz dowiedzieć się, kiedy zaczniesz korzystać z tej technologii.
źródło
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.
Prostszą wersją tej odpowiedzi jest to, że Katana ma zamiar w pełni zastąpić zestaw System.Web i stary potok ASP.NET, co daje zarówno lepszą elastyczność (użyj go w większej liczbie scenariuszy i używaj tylko części, które lubisz) i wydajności.
Dlatego wszyscy powinni teraz obserwować jego ewolucję i być gotowi na zmianę, gdy zostanie w końcu ukończona.
Poniżej znajduje się schemat, który narysowałem, aby uzupełnić szczegóły, których Microsoft nie zawiera w tym artykule .
OWIN jest takim standardem, że pozwala na uruchamianie na nim struktur aplikacji i zapominanie o wszystkim pod nim. Z drugiej strony sam OWIN wykorzystuje różne adaptery hosta, aby mieć pewność, że może komunikować się z bazowymi serwerami internetowymi (IIS i wieloma innymi).
Pracuję teraz z autorem serwera WWW Jexus, aby zbadać, w jaki sposób możemy napisać adapter hosta, aby połączyć OWIN / Katana i Jexusa. Z przyjemnością dowiadujemy się, że OWIN jest elastyczny i wysoce konfigurowalny.
Odniesienie: http://blog.lextudio.com/2014/06/why-owin-matters-a-lot-for-asp-net-developers/
źródło
System.Web
.OWIN został zaprojektowany do oddzielania serwerów internetowych od środowisk, w których pracujesz. Może sprawić, że aplikacje będą lekkie i przenośne dla środowisk miksujących i serwerów.
Katana to implementacja składników OWIN przez Microsoft.
Od kilku lat Microsoft ulepsza narzędzia internetowe i reaguje na nie w miarę postępów w realizacji planu. Na przykład rozwój ASP.Net MVC i ASP.Net Web API. Nie zależą od biblioteki DLL System.Web, co jest ogromnym obciążeniem, które teraz odczuwam. Zaletą jest to, że poprawki rozwojowe mogą być dostarczane na czas, a cykl jest szybszy niż kiedykolwiek. Również teraz programiści mogą wdrażać te aplikacje na niestandardowych hostach OWIN lub Katanie, co stanowi odniesienie do implementacji OWIN.
Jaki jest w końcu sens?
Microsoft wydał projekt, który jest lekkim hostem opartym na OWIN na szczycie IIS, o nazwie `Helios. Celem jest uniknięcie relacji ASP.NET/IIS poprzez zapewnienie niezależnych małych komponentów, których można używać, instalować i zarządzać niezależnie, działających na hoście internetowym, który implementuje specyfikacje OWIN.
Jednym z głównych powodów jest współczynnik wydajności. Helios będzie w stanie osiągnąć przepustowość 2x-3x większą niż standardowa aplikacja ASP.Net. Pod względem zużycia pamięci Helios jest znacznie lepszy niż System.Web dll. W przyjętym benchmarku architektura Helios pozwoliła przykładowej aplikacji na osiągnięcie 50000 równoczesnych żądań przy mniejszym narzutu o około 1 GB w porównaniu ze standardową aplikacją ASP.Net.
źródło
OWIN to abstrakcja między aplikacją internetową a platformą hostingową. Jeśli piszesz aplikację internetową za pomocą OWIN, nie jesteś związany z IIS, możesz użyć innego hosta, jeśli chcesz.
Pytałeś, dlaczego warto korzystać z OWIN zamiast IIS, ale nie są to alternatywy dla siebie. OWIN znajduje się między usługami IIS a aplikacją, dzięki czemu możesz je wyłączyć bez konieczności ponownego pisania aplikacji.
Możesz także sprawdzić tę stronę https://github.com/Bikeman868/OwinFramework/wiki/OWIN
źródło