OWIN Katana'yı ne zaman kullanmalıyım?


270

OWIN ve Katana için yeniyim. Neden OWIN kullanmam gerektiğini anlamıyorum IIS. Basitleştirmek için sorum şu: OWIN öğrenmeyi atlayıp web sitelerim için IIS kullanırsam ne kaybederim?

Google'ı aradım ama basit bir açıklama yok. Burada bazı bilgiler var , ancak bazı jargon ifadeleri kullanıyorlar, bu yüzden anlayamıyorum.



2
OWIN yönünün IoT'den ne kadar etkilendiğini merak ediyorum. IIS'yi gerçekten bir Arduino'ya yapıştıramayız.
Sentinel

Yanıtlar:


279

Asp.net WebApi v2'de, OWIN boru hattı varsayılan olur. Sonunda herhangi bir asp.net projesi altında standart boru hattı olacak.

Burada yazılanlardan daha iyi koyamam: http://www.asp.net/aspnet/overview/owin-and-katana/an-overview-of-project-katana

Bölüm ".NET için Açık Web Arayüzü (Owin)" mükemmel Owin amaçlarını açıklar.

OWIN olmadan, asp.net bitleri, IIS'nin uygulama ile iletişim kurma biçimine bağlanır. OWIN, web sunucularını ve çerçeve bileşenlerini özetler. Bu, uygulama kodunuzun artık OWIN arabiriminin farkında olacağı, ancak isteği sunan web sunucusunun farkında olmayacağı anlamına gelir.

Buna karşılık, uygulamalar ana bilgisayarlar ve potansiyel olarak tüm platformlar / işletim sistemleri arasında daha kolay taşınabilir. Örneğin, bir uygulamayı bir konsolda veya herhangi bir işlemde barındırma yeteneği Mono'nun bunu çaba harcamadan barındırmasına izin verir ... (Raspberry Pi herkes)

İkinci yön, bir boru hattı olarak çalışmasıdır.


Owin Boru Hattı


Web sunucusu ile uygulamanız arasına herhangi bir orta yol (ve istediğiniz kadar) ekleyebilirsiniz.
Bu, daha modüler çözümlere izin verir. Uygulamanıza gelen / uygulamanızdan gelen isteği / yanıtı etkileyebilecek, ancak bu modülleri uygulama kodundan ayrı tutabilecek yeniden dağıtılabilir ara yazılımlar geliştirebilirsiniz.

Bu modüler yaklaşımın faydalarına kendinizi ikna etmek için OWIN için kullanılabilecek külçe paketlerine bir göz atın: http://www.nuget.org/packages?q=owin

Bu paketlerin birçoğu daha önce çekirdek asp.net işlevselliğiydi ve ara katman yazılımı olarak çıkarıldı.
Örneğin, çeşitli OAuth sağlayıcılarını kullanarak oturum açma desteği eklemek bir altyapı sorunu (bir ara katman yazılımı) haline gelir ve artık uygulama kodunuzun bir parçası olması gerekmez:

Veya web sitenizdeki tüm resimleri sevimli kedi resimleriyle otomatik olarak değiştirmek istiyorsanız, bunu şeffaf bir şekilde de yapabilirsiniz:

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

EDIT: Şimdi bir nuget paketi olarak kullanılabilir: Owin.Catify !


Cevabınız açıklandığı gibi iyidir, ama bunu anlamak benim için zor.
Seyed Morteza Mousavi

5
Nasıl daha iyi yapabilirim? Ne anlamıyorsun?
Stéphane

1
OWIN'in faydaları olsa da, yürütme akışı ara katman yazılımından ara katman yazılımına etkin bir şekilde 'atlayacağı için hata ayıklamak zor görünüyor. Her biri potansiyel olarak yol boyunca tepkiyi değiştirir. Visual Studio'nun ekleme hata ayıklayıcısı akışı takip edemiyor gibi görünüyor. Ve bir istisna oluştuğunda (bir web uygulamasında), 200 OK yanıtı olan boş bir sayfa alırsınız. Windows Olay günlüğü dışında hiçbir yerde hata yok.
simbolo

7
Açıklamayı weblogs.asp.net/pglavich/owin-katana-and-getting-started adresinde yararlı buldum . Uygulamanızı IIS'den ayırmanın ve System.Web derlemesine bağımlılığın bir yoludur. HTTP kanalında bulunan bileşenlerin miktarını azaltmak, böylece uygulamayı hafif tutmak.
Terence

2
Şunu eklemeliyim ki şu anki ortamımda, bazı takımlar WebApi, bazıları ise Nancy kullanıyor. Her ikisi de OWIN'in üstünde yer aldığından, Api Anahtar işleme veya Durum Bilgisi Olmayan Kimlik Doğrulama gibi ara yazılımları çerçeveden bağımsız olarak paylaşabiliriz. Ekibin kendilerine en uygun olanı seçmesine izin veriyoruz. OWIN'in gerçek yararı budur.
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
      } 
   }
}

Evet bu doğru. OWIN bir arayüzdür ve Katana, Microsoft tarafından OWIN arayüzünün bir uygulamasıdır . Bu nedenle bu 2 kelimeyi (OWIN / KATANA) birlikte duyuyoruz ve çoğu zaman bu 2 terim arasındaki fark arasında karışıyoruz. Yani, Katana Microsoft'un OWIN arayüzünü uygulamasıdır. Kendi OWIN uygulamasını oluşturmak isteyen BIG-BOSS adında başka bir şirket olduğunu, bunu yapabilir ve uygulamalarını 'BATANA' olarak adlandırabilir ve OWIN / BATANA gibi ifadelerin reklamını yapabilirler.

Peki, neden OWIN !!!

Hareket için mevcut olan tek aracın bir kamyon olduğu bir ülke düşünün. Başka hiçbir şey. Bir araç satın almak istiyorsanız, kamyon satın alırsınız. Bu iyi hizmet ederdi, ancak insanlar her zaman kamyona ihtiyaç duymadıklarını fark ettiler, özellikle de bir film izlemek veya süt almak istediklerinde, ağır bir kamyonu sürmek sadece yüksek yakıt maliyeti değil, aynı zamanda sürüşe stres katmak. Ancak evet, çok fazla ağır eşya taşımak istiyorlarsa, kamyon amaca çok iyi hizmet eder.

Ardından, o ülkenin Hükümeti araç üreticileri için bir şartname hazırladı. Şartname aşağıdaki gibidir:

  1. Bir aracın 4 tekerleği olmalıdır
  2. Bir araçta direksiyon bulunmalıdır.
  3. Bir araçta far ve sinyal lambaları bulunmalıdır.

Bu nedenle, bu özelliklere dayanarak, herkes farklı ihtiyaçlara göre araç yapabilir ve araçlarını buna göre adlandırabilir. Bu nedenle Sedan, Kamyonet, SUV, VAN, ..etc .. pazarda her türlü araç ortaya çıktı. Birinin her zaman ağır eşya taşımasına gerek yoksa, sadece işyerine gitmek için bir araca ihtiyacı varsa, küçük bir Sedan satın alabilir. Birisi biraz daha fazla güce ihtiyaç duyarsa SUV satın alabilir.

Yukarıdaki örneğe dayanarak, ASP.NET Web uygulamamızın ağır yüklü (kamyon gibi) System.Web Montajı kullandığını ve amacımızın sadece bazı dosyalara hizmet etmek olduğu küçük bir Web Uygulaması yapmak istiyorsak söyleyebiliriz biraz istek üzerine, bu ağır System.Web montajını (kamyon) kullanmak zorundayız. Şimdi, OWIN ortaya çıkıyor. OWIN, bir Sunucuyu tanımlayan bir dizi özelliktir (buna arabirim diyebiliriz). Bu spesifikasyona dayanarak, birisi (araç üreticisi gibi) belirli sorun alanlarına / uygulama ihtiyaçlarına göre çeşitli türlerde sunucular oluşturabilir. Microsoft, Web API sunabilecek şekilde Katana adlı OWIN için kendi Uygulamalarını yarattı. WebAPI, tam üflemeli sisteme ihtiyaç duymayan hafif bir teknoloji olduğundan.

Şimdi, ' İhtiyacım var mı?'? Cevap 'Performans ihtiyacınıza bağlıdır'. Bir film izlemek için bile kamyonunuzu sürmenin sakıncası yoksa, belki de OWIN'a ihtiyacınız yoktur. Ama bir şehir içinde sürmek için ihtiyacınız olan tek şey hafif bir Sedan araba, küçük mesafe, film izlemek .. vb .. evet, OWIN piyasada hangi uygulamaları mevcut kontrol edebilirsiniz. Katana, OWIN uygulamalarından biridir, bu nedenle Katana'nın neler sunduğunu kontrol edebilirsiniz. Sadece Katana değil, başka bir şirket OWIN'i belirli Etki Alanına göre (örneğin, en son ilaç bilgilerini indirecek Tıbbi Cihazlar için bir sunucu) uygularsa ve bir doktor iseniz, belki de OWIN'in uygulanmasını kontrol edebilirsiniz. Dahası, herhangi bir nişi hedefleyen kendi OWIN uygulamasını kendiniz oluşturabilirsiniz.

Web uygulamaları açısından, basit bir Web geliştiricisiyseniz, istemcileriniz için özel Web Siteleri geliştirebilirsiniz, belki de OWIN'lerin özel uygulaması hakkında endişelenmenize gerek yoktur, çünkü IIS size dengeli bir şekilde hizmet edecektir. Bir Web API projesi oluşturursanız, Katana tabanlı şablonu Visual Studio -> Yeni Proje'den hazır hale getireceksiniz, böylece Katana'ya özgü teknikleri öğrenmek dışında hiçbir şey için endişelenmenize gerek kalmayacak. Şu anda Katana, ASP.NET MVC için IIS ihtiyacının tamamen yerini alacak kadar olgun değil, belki de gelecekte olacak.

O zaman kendi OWIN Uygulamamı ne zaman yazmam gerekebilir?

Yanıt: Örneğin, arka planda sunucu olarak çalışması ve XXXX bağlantı noktası numarasını dinlemesi gereken bir Windows uygulaması geliştirdiğinizi varsayalım. Sunucunuz yalnızca aşağıdaki gibi bazı İsteklere yanıt verir:

  1. Envanter AL
  2. Envanter Kimliği SİL = 4
  3. PUT Envanter Kimliği = 5

Bu kadar. Ve başka hiçbir şey. Peki, bu küçük görev için neden tam bir IIS web sunucusuna ihtiyacınız var? Bu durumda kendi OWIN uygulamanızı oluşturabilirsiniz. (Belki de bunun için Katana'yı kullanacaksın)

Tamam, bu yüzden anladım, eğer bir ASP.NET MVC web sitesi yapmak istiyorsanız, IIS değiştirme seçeneğim yok, o zaman neden şu anda Katana hakkında bilmem gerekiyor?

Yanıt: Katana, IIS ihtiyacını değiştirmek için yeterince olgun olmasa da, ASP.NET MVC web sitenizi doğrudan Katana'da barındırabilmeniz için, ancak Katana, bu özellikler tarafını kullanma avantajından yararlanabilmeniz için birçok serin OWIN arabirimi uygulamıştır. yan. Örneğin, kullanıcılarınızın Facebook, Google, Twitter vb. Kullanarak giriş yapmalarına izin vermek daha önce kolay değildi. Katana size birçok kanca (orta eşya olarak) verir, böylece Katana'nın sıhhi tesisat kodu yazmadan harici Sosyal Medya Tabanlı Kimlik Doğrulaması'na kolayca bakmasına izin verebilirsiniz. Bu teknolojiyi kullanmaya başladığınızda öğrenebileceğiniz Katana'yı kullanmanın başka birçok avantajı vardır.


1
Ben OWIN demek başına bir arayüz olduğunu söyleyemem, bir standart, bir uygulamanın ana bilgisayar ile konuşma şeklini standartlaştırmak için bir protokol. Ancak, Katana'nın sadece microsoft tarafından geliştirilen ve sürdürülen bu standardın bir uygulaması olduğu kesin olarak önemlidir. Diğer uygulamalar burada listelenmiştir: github.com/owin/owin/wiki/Implementations
Stéphane

1
bir araç için '4 tekerlekli' olduğunu söylediğinde biraz kafa karıştırıcı ve sonra biri 18 tekerlekli bir araç yapar ... şartname uymuyor o zaman ...? yoksa bir şey mi kaçırıyorum. Yine de iyi benzetme. Anlamak daha kolay
kurasa

1
@Stephane: Sadece bir arayüz gibi olmayabilir, üst düzey bir fikir vermeye çalıştım, böylece biri OWIN ve KATANA arasındaki ilişkiyi birçok teknik jargonla boğulmadan anlayabilsin.
Emran Hussain

1
"Katana, IIS ihtiyacını değiştirmek için yeterince olgun olmasa da, ASP.NET MVC web sitenizi doğrudan Katana'da barındırabilmeniz için", Katana 1.0 olduğunda IIS'nin önemli olmadığını gösteriyor. Hayır, hayır, bu doğru değil. Microsoft, web uygulamalarının + Katana'nın doğrudan IIS'de (elbette System.Web olmadan) barındırılmasını sağlayan Microsoft.Owin.Host.IIS'e sahiptir. IIS, Microsoft platformundaki ASP.NET uygulamaları için hala önemli bir bileşendir.
Lex Li

2
Anlamanızda bana yardımcı olabilirseniz harika olur -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

Bu cevabın daha basit bir versiyonu, Katana'nın System.Web montajını ve eski ASP.NET boru hattını tamamen değiştirecek şekilde gong olmasıdır, bu da size daha iyi esneklik sağlar (daha fazla senaryoda kullanın ve sadece istediğiniz parçaları kullanın) ve performans.

Bu yüzden herkes şimdi evrimini izlemeli ve sonunda tamamlandığında değişmeye hazır olmalıdır.

Aşağıda, Microsoft'un bu makaleye ekleyemediği ayrıntıları doldurmak için çizdiğim bir diyagram var .

resim açıklamasını buraya girin

OWIN, uygulama çerçevelerinin üzerinde çalışmasına ve altındaki her şeyi unutmasına izin veren bir standarttır. Öte yandan, OWIN, temel web sunucularıyla (IIS ve diğerleri) konuşabildiğinden emin olmak için çeşitli ana bilgisayar bağdaştırıcılarını kullanır.

Şimdi nasıl OWIN / Katana ve Jexus köprü için bir ana bilgisayar adaptörü yazabilirsiniz araştırmak için Jexus web sunucusu yazar ile çalışıyorum. OWIN'in esnek ve özelleştirilebilir olduğunu öğrendiğimiz için çok mutluyuz.

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


Yani ben bu cevap "Katana tamamen System.Web montaj ve eski ASP.NET boru hattı yerine gong olduğunu" söylüyorum. Bu, yukarıdaki şemanızdaki tüm Sunucu Bağdaştırıcılarının veya belki sadece host.systemweb'in yerini alabileceği anlamına mı geliyor?
netfed

@netfed ne yazık ki OWIN kendisi yapar ve şimdi ASP.NET Core devraldı. Bu soru ve cevapların hepsi güncel değil.
Lex Li

Aha!! Asp.net çekirdeğinin Owin kapasiteleri var mı? Ya da Asp.net core, yalnızca ihtiyacınız olan modülleri uygulayabileceğiniz ve System.web'de yerleşik daha geniş bir işlev koleksiyonu kullanmak zorunda olmadığınız bir modül koleksiyonu olarak çalışır?
netfed

2
@netfed, OWIN öldü (mobil klavyem kelimelerimi değiştirdi). ASP.NET Core ara katman yazılımı yaklaşımını korur ve bileşenlerini istediğiniz gibi bir araya getirebilirsiniz System.Web.
Lex Li

Bu her şeyi sonuçlandırır :-) Açıklığa kavuştuğunuz için teşekkür ederiz.
netfed

15

IIS'yi kullanırken neden OWIN kullanmalıyım?

OWIN, web sunucularını altında çalıştığınız çerçevelerden ayırmak için tasarlanmıştır. Karıştırma çerçeveleri ve sunucuları için uygulamaları hafif ve taşınabilir hale getirebilir.

Ve Katana, Microsoft'un OWIN bileşenlerini uygulamasıdır.

Microsoft, son birkaç yıldan beri planları ilerledikçe web araçlarını daha çevik ve duyarlı hale getiriyor. Örneğin, ASP.Net MVC ve ASP.Net Web API'sinin geliştirilmesi. Onlar şimdi hissediyorum düşünüyorum büyük bir yük olan System.Web dll bağlı değildir. Avantaj, her iki geliştirme düzeltmesinin zamanında sağlanabilmesi ve döngünün her zamankinden daha hızlı olmasıdır. Ayrıca geliştiriciler bu uygulamaları özel OWIN ana bilgisayarlarına veya OWIN uygulamasının bir referansı olan Katana'ya dağıtabilirler.

Sonuçta ne anlamı var?

Microsoft, IIS üzerinde `` Helios '' adı verilen hafif bir OWIN tabanlı web barındırma projesi olan bir proje yayınladı. Amaç, OWIN spesifikasyonlarını uygulayan bir web ana bilgisayarında bağımsız olarak çalışan, kurulabilen ve yönetilebilen bazı bağımsız küçük bileşenler sağlayarak ASP.NET/IIS ilişkisinden kaçınmaktır.

Bunun temel nedenlerinden biri performans faktörüdür. Helios, standart ASP.Net uygulamasından 2x-3x daha fazla verim elde edebilecektir. Bellek tüketimi açısından, Helios System.Web dll'den çok daha iyidir. Alınan bir ölçütte Helios mimarisi, örnek bir uygulamanın, standart bir ASP.Net uygulamasına kıyasla yaklaşık 1GB daha az ek yük ile 50000 eşzamanlı istek gerçekleştirmesine izin verdi.


1
Bu yayını faydalı bulabilirsiniz. simple-talk.com/dotnet/.net-framework/…
nznoor

0

OWIN, web uygulaması ve barındırma platformu arasında bir soyutlamadır. Web uygulamanızı IIS'ye bağlı olmadığınız OWIN kullanarak yazarsanız, isterseniz başka bir ana bilgisayar kullanabilirsiniz.

Neden IIS yerine OWIN kullandığınızı sordunuz, ancak bunlar birbirine alternatif değil. OWIN, IIS ile uygulamanız arasında oturur, böylece uygulamanızı yeniden yazmadan IIS'yi kapatabilirsiniz.

Bu sayfayı da kontrol etmek isteyebilirsiniz https://github.com/Bikeman868/OwinFramework/wiki/OWIN

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.