Katana ve OWIN'i basit kelimelerle ve kullanımlarla nasıl açıklayabilirim?


337

OWIN ve Katana projeleri hakkında birçok makale okudum, ancak tüm resmini alamadım.

ASP.NET kullanan normal bir web geliştiricisi için:

  1. OWIN tam olarak nedir ve hangi problemleri çözer (basit kelimelerle). IIS ile ilişkisi nedir?
  2. OWIN, IIS'nin yerini alıyor mu? değilse, hangi durumlarda OWIN en uygun?
  3. OWIN günlük iş projelerimde bana nasıl yardımcı olabilir?
  4. OWIN kişisel gelişim projelerinde bana nasıl yardımcı olabilir?

Birkaç mermi noktasının gerçekten doğru olmadığını - yanıltıcı olduğunu düşünerek kabul edilen cevabı değiştirmeyi düşünebilirsiniz.
Admir Tuzović

3
ASP.net üzerindeki kitabım OWIN üzerinden Identity ve UserManager sınıfının uygulanmasını önerir ve ben gerçekten bu noktayı göremiyorum. Beni tamamen karıştı ...
Luke

Yanıtlar:


409

Yukarıdaki yorum ile ilgili olarak, OWIN bir çerçeve değildir. OWIN, web sunucularının ve web uygulamalarının ayrıştırılması ve ASP.NET uygulamalarının daha önce desteklenmeyen ortamlara taşınmasına izin vermek için nasıl oluşturulması gerektiğine dair bir spesifikasyondur.

OWIN'den önce, ASP.NET uygulaması oluştururken, System.Webderlemede büyük bağımlılık nedeniyle doğası gereği IIS'ye bağlıydınız .

System.Web ASP'den (.NET sürümü olmayan) beri var olan ve dahili olarak ihtiyacınız olmayan birçok şeyi (Web Formları veya URL Yetkilendirme gibi) içerdiği, varsayılan olarak her istekte çalışan, böylece kaynakları tüketen ve ASP yapma .NET uygulamaları genelde Node.js gibi benzerlerinden çok daha yavaştır.

OWIN'in kendisi herhangi bir araç, kütüphane veya başka bir şeye sahip değildir. Bu sadece bir özelliktir.

Öte yandan Katana, mevcut ASP.NET çerçeveleri ile OWIN özellikleri arasında bir köprü oluşturmak için yapılmış tamamen geliştirilmiş bir çerçevedir. Şu anda Katana, aşağıdaki ASP.NET çerçevelerini OWIN'e başarıyla uyarlamıştır:

  • Web API'sı
  • Sinyal R

ASP.NET MVC ve Web Formları hala yalnızca System.Web aracılığıyla çalışıyor ve uzun vadede bunları da ayırmak için bir plan var.

Öte yandan IIS, web sunucuları için iyi ve becerikli bir ana bilgisayardır. IIS kullanan tüm ASP.NET performans sorunlarının System.Webyalnızca derin kökleri vardır . Yakın zamana kadar, web sunucunuzu nasıl barındıracağınıza karar verirken iki seçeneğiniz vardı:

  • IIS
  • Kendinden Sunucu

Dolayısıyla, bir performans istiyorsanız, kendi kendine barındırılan bir seçenek tercih edersiniz. IIS'nin sunduğu pek çok kullanıma hazır özellik istiyorsanız, IIS'yi tercih edersiniz ancak performansınızı kaybedersiniz.

Şimdi, üçüncü bir seçenek var: Helios (geçerli kod adı) adlı bir Microsoft kütüphanesi System.Web, yoldan kaldırmayı ve gereksiz kitaplıklar veya modüller olmadan IIS'yi daha "daha temiz" bir şekilde kullanmanıza izin veriyor. Helios şimdi yayın öncesi sürümde ve tamamen desteklenen Microsoft ürününü oluşturmak için daha fazla topluluk geri bildirimi bekliyor.

Umarım bu açıklama sizin için işleri daha iyi açıklar.

EDIT (Eylül 2014):

ASP.NET vNext geliştirilirken, Katana yavaş yavaş emekli oluyor. Sürüm 3.0, büyük olasılıkla bağımsız bir çerçeve olarak Katana'nın son büyük sürümü olacak.

Bununla birlikte, Katana ile sunulan tüm kavramlar ASP.NET vNext'e entegre edilmiştir, yani programlama modeli hemen hemen aynı olacaktır. David Fowler (ASP.NET vNext Mimarı) tarafından yapılan forum gönderisinden alıntı :

vNext, Katana'nın halefidir (bu yüzden çok benziyorlar). Katana, System.Web'den ve web yığını için daha modüler bileşenlere olan kopmanın başlangıcıydı. VNext'i bu çalışmanın devamı olarak görebilir, ancak daha da ileri gidebilirsiniz (yeni CLR, yeni Proje Sistemi, yeni http soyutlamaları).

Bugün Katana'da var olan her şey onu vNext'e dönüştürecek.

EDIT (Şub 2015):

ASP.NET vNext artık ASP.NET 5 olarak bilinir ve .NET Core 5'in üzerine inşa edilecektir. .NET Core 5, ASP.NET 5 ve .NET Native hedeflerini desteklemek için tasarlanmış .NET Framework'ün hafif faktörlü sürümüdür. . Ancak ASP.NET 5, .NET Core 4.6 ile birlikte kullanılabilmesi gereken .NET Framework 4.6 tarafından da desteklenecektir. Hem ASP.NET 5 hem de .NET Core 5, MIT kapsamında lisanslanacak ve topluluk katkılarını kabul edecektir.

EDIT (Mayıs 2015):

Ayrıca, ASP.NET Web API markası kullanımdan kaldırılacak, ancak yeni ASP.NET MVC 6 için teknoloji temel alınacaktır. Önceki ASP.NET MVC sürümleri, içinde tanımlanan bir arabirim olan IHttpHandler uygulanarak oluşturulmuştur System.Web. ASP.NET MVC 6 bu bağımlılığı ortadan kaldırır ve çeşitli platformlara ve web sunucularına taşınabilir hale getirir.

EDIT (Mayıs 2016):

ASP.NET 5, yakında piyasaya sürülmesi planlanan Sürüm Adayı 2'den başlayarak resmi olarak ASP.NET Core olarak yeniden adlandırılacaktır. Aynı şey Entity Framework Core olarak yeniden adlandırılacak Entity Framework 7 için de geçerli olacak. Resmi duyuru ve arkasındaki nedenler hakkında daha fazla bilgi Scott Hanselman'ın blog gönderisinde bulunabilir: ASP.NET 5 öldü - ASP.NET Core 1.0 ve .NET Core 1.0'ın tanıtımı

EDIT (Mayıs 2016):

Release Candidate 2'nin piyasaya sürülmesiyle, ASP.NET Core, gelecekteki web uygulamalarının gelen HTTP isteklerini işlemek için yalnızca .NET Core konsol uygulamaları kurulumu olacak şekilde değiştirildi . Bu kavram, ASP.NET Core'u Microsoft'un mikro hizmet mimarisi desteği ve Azure Service Fabric aracılığıyla uygulamasıyla benimsediği yaklaşımla daha uyumlu hale getirir. Daha fazla bilgi resmi blog gönderisinde bulunabilir: ASP.NET Core RC2'yi Duyurmak


2
@ebramtharwat Şimdi bir yıl sonra, helios bir şey gibi görünmüyor
Andrew Savinykh

1
Katana v3'ün büyük olasılıkla son büyük sürüm olacağını söylediniz, bu yüzden ilerlemek gerekirse Katana'nın yerini almak için hangi çerçeve kullanılacak?
Vincent

2
Katana'nın özellikleri ASP.NET 5'e entegre edilmiştir. Katana geriye dönük uyumluluk için var olmaya devam edecektir.
Admir Tuzović

2
@ AdmirTuzović: harika cevap. Mayıs 2016'dan bu yana eklenecek başka güncelleme var mı?
Igby Largeman

2
Sonraki düzenlemelerle ilk cevap, geçişleri çok iyi açıklar. Çaba için teşekkürler.
Sang Suantak

71

OWIN'i kendim için tanımlamam gerekirse, şöyle olur: "Ruby ve Node.js web geliştirici topluluklarından .NET'e gelen en iyi fikirler"

Ancak bu, herhangi bir ASP.NET geliştiricisine yardımcı olmaz. Kendi tanımım şu hatlarda bir şey olurdu:

OWIN , .NET web sunucuları ve web uygulamaları arasında standart bir arabirim tanımlar. OWIN arayüzünün amacı, sunucu ve uygulamayı ayırmaktır. Eğer sormuş olduğunuz soruları cevaplamak zorunda kalırsam, işte burada:

  1. OWIN bir arayüz özelliğidir. Web uygulamalarını IIS'den ayırır.

  2. Hazır bileşenler (Katana'nın ne olduğu) kullanıyorsanız, uygulama işlevselliğinin bazı bölümlerinin uygulanması eski ASP.NET'e kıyasla çok daha kolaydır. Üçüncü taraf kimlik sağlayıcılarla (Facebook, Twitter) kimlik doğrulaması bunun bir örneğidir.

  3. OWIN aslında web geliştirme topluluklarında kanıtlanmış en iyi uygulamaların bir koleksiyonudur. Genişletilebilirliğe çok açık olan web uygulamalarını uygulamanın bir yolunu gösterir. Her web geliştiricisi sürekli olarak yeni teknolojilerin son noktasında olması gerektiği için, bu sadece .NET ile değil, tüm web geliştirme topluluğu ile güncel kalmanın bir yoludur. OWIN öğrenirseniz, kullandıkları uygulamalar benzer olduğu için node.js için Express veya Ruby için Rack gibi diğer web geliştirme çerçevelerini öğrenmek çok daha kolay olacaktır.

1
Bu makale OWIN / katana tarafından çözülen tarihi sorunlar hakkında fikir sahibi olmanıza yardımcı olabilir: asp.net/aspnet/overview/owin-and-katana/… . Bununla birlikte şu anda OWIN ana bilgisayarında şu çerçevelerin desteklendiği söyleniyor: owin.org/#projects . Uygulamanız bu uygulama çerçevelerinden herhangi birini kullanıyorsa, bu uygulama OWIN'de barındırılabilir.
Praburaj

Buraya gelen isteklerin sırasını owinhost.exe'yi kullanırken tarayıcıyı geri gönderen yanıt noktasına gönderebilir misiniz? Bu konuda bir belge bulamadım.
Saravanan

2
Nokta 1 ve 2 yanıltıcıdır, OWIN kendi başına hiçbir şeyin yerini alamaz. Nokta 4 gibi, Microsoft'un Katana ve Helios'un şimdiye kadar referans uygulamaları olduğu gibi bir şekilde uygulanması gereken bir özellik.
Mani Gandham


1
Ara Katman. Barındırma ortamından uygulamanın ayrıştırılması bunları takılabilir hale getirir.
Slavo

59

Onu pratik açıdan ele almaya çalışacağım.

Katana, Microsoft'ta OWIN'i uygulamak için proje adıdır .

OWIN tam olarak nedir ve hangi problemleri çözer (basit kelimelerle). IIS ile ilişkisi nedir? OWIN ( .NET için Açık Web Arayüzü ) standarttır ( OWIN Spesifikasyonu ) ve Katana .NET kütüphanesidir, buradan nuget alabilirsiniz . OWIN ve Katana internette biraz eş anlamlı oldular.
OWIN'den önce tek seçeneğiniz IISOWIN ile oldu , web sunucusu olarak başka bir uygulamayı (giriş noktası olan) kullanabilirsiniz.

OWIN, IIS'nin yerini alıyor mu? değilse, hangi durumlarda OWIN en uygun?
Hayır, IIS'nin yerini almaz, OWIN'i kullanabilirsiniz ve IIS bunun için Microsoft.Owin.Host.SystemWebnuget var . IIS'de işlenme biçimini optimize etmek / değiştirmek veya Windows Web Form Uygulaması'ndan özel web sunucunuzu oluşturmak istiyorsanız en uygunudur.

OWIN günlük iş projelerimde bana nasıl yardımcı olabilir?
Web sunucularınızın artık IIS (Windows) üzerinde çalışması gerekmediği için sunucu işletim maliyetlerinizi düşürebilir (Windows sunucuları Unix tabanlı olanlardan daha pahalıdır ve bunu Linux'ta Mono altında Konsol Uygulaması'nda çalıştırabilirsiniz).

OWIN kişisel gelişim projelerinde bana nasıl yardımcı olabilir?
Öğrenme Microsoft.Owin(ve diğer ilgili OWIN kütüphaneleri), istemci ve web sunucusu arasındaki HTTP iletişiminin nasıl çalıştığı hakkındaki bilginizi geliştirecektir.

Katana ve OWIN'in ne olduğu hakkında daha fazla bilgi edinmek istiyorsanız iyi okuyun.


6
Aferin ve teğet şeridi aşağı girişim yerine gönderilen soruları doğrudan cevap için teşekkürler.
Dav

Barındırma için her zaman Microsoft IIS özellikli sunucu kullanırsak ne olur? Yeni WebApi2 şablonlarında OWIN'in varsayılan olduğu anlaşılıyor. Yalnızca IIS'de / her zaman barındırmayı planlıyorsam referans olarak kaldırmalı mıyım?
TechTurtle

@TechTurtle Hi Tech, ayrı bir soru olarak göndermenizi tavsiye ederim.
Matas Vaitkevicius

Çok açık bir açıklama. Yararlı bilgi için teşekkürler
Uttam

9

OWIN nedir?

OWIN, .NET için Açık Web Arayüzü anlamına gelir. OWIN, ASP.NET MVC gibi web geliştirme çerçevelerinin web sunucularıyla nasıl etkileşime girmesi gerektiğini tanımlayan bir özelliktir. OWIN'in amacı, bir soyutlama katmanı tanıtarak web uygulamalarını web sunucusundan ayırmaktır. Böyle bir soyutlama, aynı uygulamayı OWIN'i destekleyen tüm web sunucularında çalıştırmanızı sağlar. Ek olarak, tüm sistemi basitleştirir, çünkü soyutlama katmanı uygulamaları barındırmak için hafif bir altyapı sağlayabilir. IIS, web uygulamalarına zengin bir özellik kümesi sağlar. Ancak, web uygulamalarının tüm bu özelliklere ihtiyacı olmayabilir. Minimum HTTP işleme yeteneklerine sahip olmaları yeterli olabilir. OWIN uyumlu ana bilgisayar, bu uygulamalara böyle bir barındırma ortamı sağlayabilir. Dahası, istek işleme sırasında kullanılan modüllerden oluşan bir boru hattı tanımlayabilirsiniz. Bir OWIN boru hattı, bir talebin geçtiği OWIN uyumlu bileşenler zinciridir.

Katana nedir?

Katana, Microsoft tarafından OWIN spesifikasyonları kullanılarak oluşturulmuş bir bileşenler kümesidir. Bu bileşenlerden bazıları Web API, ASP.NET Identity ve SignalR'dir.

Yukarıdaki CodeGuru Makalesinden alınmıştır: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

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.