Bagaimana cara menjelaskan Katana dan OWIN dalam kata-kata dan penggunaan yang sederhana?

337

Saya telah membaca banyak artikel tentang proyek OWIN dan Katana, tetapi saya tidak dapat memperoleh gambaran keseluruhannya.

Untuk pengembang web biasa yang menggunakan ASP.NET:

  1. Apa sebenarnya OWIN dan masalah apa yang dipecahkannya (dengan kata sederhana). Apa hubungannya dengan IIS?
  2. Apakah OWIN menggantikan IIS? jika tidak, dalam situasi apa OWIN paling cocok?
  3. Bagaimana OWIN dapat membantu saya dalam proyek pekerjaan sehari-hari saya?
  4. Bagaimana OWIN dapat membantu saya dalam proyek peningkatan diri?
ebram khalil
sumber
Anda mungkin mempertimbangkan untuk mengubah jawaban yang diterima mengingat beberapa poin tidak benar - menyesatkan.
Admir Tuzović
3
Buku saya di ASP.net menyarankan penerapan Identity dan kelas UserManager melalui OWIN dan saya benar-benar tidak mengerti intinya. Itu membuat saya benar-benar bingung ...
Luke

Jawaban:

409

Mengenai komentar di atas, OWIN bukan kerangka kerja. OWIN adalah spesifikasi tentang bagaimana server web dan aplikasi web harus dibangun untuk memisahkan mereka dan memungkinkan perpindahan aplikasi ASP.NET ke lingkungan yang tidak didukung sebelumnya.

Sebelum ke OWIN, ketika membangun aplikasi ASP.NET, Anda secara inheren terikat dengan IIS karena sangat bergantung pada System.Webperakitan.

System.Web adalah sesuatu yang telah ada sejak ASP (bukan versi .NET) dan secara internal mengandung banyak hal yang bahkan mungkin tidak Anda perlukan (seperti Formulir Web atau Otorisasi URL), yang secara default semua berjalan pada setiap permintaan, sehingga menghabiskan sumber daya dan membuat ASP Aplikasi .NET pada umumnya banyak lebih lambat daripada rekan-rekannya seperti Node.js misalnya.

OWIN sendiri tidak memiliki alat, perpustakaan atau apa pun. Itu hanya spesifikasi.

Katana di sisi lain, adalah kerangka kerja yang dikembangkan sepenuhnya dibuat untuk membuat jembatan antara kerangka ASP.NET saat ini dan spesifikasi OWIN. Saat ini, Katana telah berhasil mengadaptasi kerangka ASP.NET berikut untuk OWIN:

  • API web
  • Sinyal R

ASP.NET MVC dan Formulir Web masih berjalan secara eksklusif melalui System.Web, dan dalam jangka panjang ada rencana untuk memisahkan mereka juga.

Di sisi lain, IIS adalah tuan rumah yang bagus dan banyak akal untuk server web. Seluruh masalah kinerja ASP.NET menggunakan IIS hanya memiliki akar yang dalam System.Web. Hingga saat ini, ketika memutuskan bagaimana Anda akan meng-host server web Anda, Anda memiliki dua opsi:

  • IIS
  • Tuan Rumah

Jadi, jika Anda menginginkan kinerja, Anda akan memilih opsi self-host. Jika Anda menginginkan banyak fitur out-of-the-box yang disediakan IIS, Anda akan menggunakan IIS tetapi Anda akan kehilangan kinerja.

Sekarang, ada opsi ke-3, perpustakaan Microsoft yang bernama Helios (nama kode saat ini) yang bermaksud untuk dihilangkan System.Web, dan memungkinkan Anda untuk menggunakan IIS pada cara yang lebih "bersih", tanpa perpustakaan atau modul yang tidak perlu. Helios sekarang dalam versi pra-rilis, dan sedang menunggu umpan balik komunitas untuk membuatnya sepenuhnya didukung produk Microsoft.

Semoga penjelasan ini menjelaskan hal-hal yang lebih baik untuk Anda.

EDIT (Sep 2014):

Dengan ASP.NET vNext sedang dalam pengembangan, Katana perlahan-lahan mulai pensiun. Versi 3.0 kemungkinan besar akan menjadi rilis besar terakhir Katana sebagai kerangka kerja mandiri.

Namun, semua konsep yang diperkenalkan dengan Katana sedang diintegrasikan ke dalam ASP.NET vNext, yang berarti bahwa model pemrograman akan hampir sama. Kutipan dari posting forum yang dibuat oleh David Fowler (Arsitek ASP.NET vNext):

vNext adalah penerus Katana (itulah sebabnya mereka terlihat sangat mirip). Katana adalah awal dari terobosan dari System.Web dan komponen modular yang lebih banyak untuk tumpukan web. Anda dapat melihat vNext sebagai kelanjutan dari pekerjaan itu tetapi melangkah lebih jauh (CLR baru, Sistem Proyek baru, abstraksi http baru).

Segala sesuatu yang ada hari ini di Katana akan membuatnya menjadi vNext.

EDIT (Feb 2015):

ASP.NET vNext sekarang dikenal sebagai ASP.NET 5 dan akan dibangun di atas .NET Core 5. .NET Core 5 adalah versi ringan dari .NET Framework, yang dirancang untuk mendukung tujuan ASP.NET 5 dan .NET Native . Namun, ASP.NET 5 akan didukung oleh .NET Framework 4.6 juga, yang harus tersedia bersama dengan .NET Core 5. Baik ASP.NET 5 dan .NET Core 5 akan dilisensikan di bawah MIT dan akan menerima kontribusi masyarakat.

EDIT (Mei 2015):

Selain itu, merek ASP.NET Web API akan dihentikan, namun teknologinya akan menjadi dasar untuk ASP.NET MVC 6. Versi ASP.NET MVC sebelumnya dibangun dengan mengimplementasikan IHttpHandler, sebuah antarmuka yang didefinisikan dalam System.Web. ASP.NET MVC 6 menghilangkan ketergantungan itu, menjadikannya portabel untuk berbagai platform dan server web.

EDIT (Mei 2016):

ASP.NET 5 secara resmi akan diubah namanya menjadi ASP.NET Core dimulai dengan Release Candidate 2 yang dijadwalkan akan segera dirilis. Hal yang sama akan berlaku untuk Entity Framework 7 yang akan diubah namanya menjadi Entity Framework Core. Informasi lebih lanjut tentang pengumuman resmi dan alasan di baliknya dapat ditemukan di posting blog Scott Hanselman: ASP.NET 5 sudah mati - Memperkenalkan ASP.NET Core 1.0 dan .NET Core 1.0

EDIT (Mei 2016):

Dengan rilis Release Candidate 2, ASP.NET Core telah dimodifikasi sehingga aplikasi web masa depan sebenarnya hanya .NET Core aplikasi konsol setup untuk memproses permintaan HTTP yang masuk . Konsep ini membuat ASP.NET Core bahkan lebih selaras dengan pendekatan yang telah diambil Microsoft dengan dukungan arsitektur layanan mikro dan implementasinya melalui Azure Service Fabric. Informasi lebih lanjut tentang dapat ditemukan di posting blog resmi: Mengumumkan ASP.NET Core RC2

Admir Tuzović
sumber
2
@ebramtharwat Sekarang setahun kemudian, itu tidak terlihat seperti helios
Andrew Savinykh
1
Anda menyebutkan Katana v3 kemungkinan besar akan menjadi rilis besar terakhir, jadi terus maju, kerangka apa yang akan digunakan untuk menggantikan Katana?
Vincent
2
Fitur Katana telah terintegrasi dalam ASP.NET 5. Katana akan terus ada untuk kompatibilitas mundur.
Admir Tuzović
2
@ AdmirTuzović: jawaban yang bagus. Adakah lagi pembaruan untuk ditambahkan sejak Mei 2016?
Igby Largeman
2
Jawaban awal dengan pengeditan selanjutnya menjelaskan transisi dengan sangat baik. Terima kasih atas usahanya.
Sang Suantak
71

Jika saya harus mendefinisikan OWIN untuk diri saya sendiri, itu akan menjadi: "Ide-ide terbaik dari komunitas dev web Ruby dan Node.js, datang ke .NET"

Tapi ini tidak akan membantu pengembang ASP.NET. Definisi saya sendiri akan menjadi sesuatu seperti:

OWIN mendefinisikan antarmuka standar antara .NET web server dan aplikasi web. Tujuan dari antarmuka OWIN adalah untuk memisahkan server dan aplikasi. Jika saya harus menjawab pertanyaan yang Anda ajukan, maka ini dia:

  1. OWIN adalah spesifikasi antarmuka. Ini memisahkan aplikasi web dari IIS.

  2. Jika Anda menggunakan komponen siap pakai (yang merupakan Katana), maka beberapa bagian dari fungsionalitas aplikasi jauh lebih mudah untuk diimplementasikan dibandingkan dengan ASP.NET yang lama. Otentikasi dengan penyedia identitas pihak ketiga (Facebook, Twitter) adalah salah satu contohnya.

  3. OWIN pada dasarnya adalah kumpulan praktik terbaik, yang telah terbukti di komunitas pengembangan web. Ini menunjukkan cara untuk mengimplementasikan aplikasi web yang sangat terbuka untuk diperpanjang. Karena setiap pengembang web harus selalu berada di ujung tombak teknologi baru, ini adalah salah satu cara untuk tetap up to date dengan seluruh komunitas pengembangan web dan bukan hanya .NET. Jika Anda mempelajari OWIN, akan jauh lebih mudah untuk mempelajari kerangka kerja pengembangan web lainnya seperti Express for node.js atau Rack for Ruby, karena praktik yang mereka gunakan mirip.
Slavo
sumber
1
Artikel ini mungkin juga membantu untuk mendapatkan gambaran tentang masalah historis yang diselesaikan oleh OWIN / katana: asp.net/aspnet/overview/owin-and-katana/… . Yang mengatakan hanya kerangka kerja ini yang didukung saat ini di host OWIN : owin.org/#projects . Jika aplikasi Anda menggunakan salah satu kerangka kerja aplikasi ini, ini dapat di-host di OWIN.
Praburaj
Bisakah Anda memposting di sini urutan permintaan yang masuk dari browser ke titik respon rendering kembali saya browser saat menggunakan owinhost.exe. Saya tidak dapat menemukan dokumen dalam topik ini.
Saravanan
2
Poin 1 dan 2 menyesatkan, OWIN tidak dapat mengganti apa pun dengan sendirinya. Seperti poin 4, itu hanyalah spesifikasi yang membutuhkan implementasi, dengan implementasi referensi oleh Microsoft sebagai Katana dan Helios sejauh ini.
Mani Gandham
Ide-ide terbaik dari komunitas dev web Ruby dan Node.js, datang ke .NET .... bisakah kamu daftarkan beberapa dari mereka \
Lakshay
1
Middleware. Memisahkan aplikasi dari lingkungan hosting yang membuat pluggable tersebut.
Slavo
59

Saya akan mencoba menutupinya dari perspektif praktis.

Katana adalah nama proyek untuk mengimplementasikan OWIN di Microsoft .

Apa sebenarnya OWIN dan masalah apa yang dipecahkannya (dengan kata sederhana). Apa hubungannya dengan IIS? OWIN ( Open Web Interface untuk .NET ) adalah standar ( Spesifikasi OWIN ) dan Katana adalah .NET library, Anda bisa mendapatkan nuget dari sini . OWIN dan Katana menjadi agak sinonim di web.
Sebelum OWIN, satu-satunya pilihan Anda adalah IISdengan OWIN, Anda dapat menggunakan aplikasi lain (yang memiliki titik masuk) sebagai server web.

Apakah OWIN menggantikan IIS? jika tidak, dalam situasi apa OWIN paling cocok?
Tidak itu tidak menggantikan IIS, Anda dapat menggunakan OWIN dan IIS ada Microsoft.Owin.Host.SystemWebnuget untuk itu . Paling cocok jika Anda ingin mengoptimalkan / mengubah cara penanganannya di IIS, atau Anda ingin membuat server web kustom Anda dari misalkan Aplikasi Formulir Windows.

Bagaimana OWIN dapat membantu saya dalam proyek pekerjaan sehari-hari saya?
Ini bisa mengurangi biaya server Anda karena server web Anda tidak perlu lagi berjalan di IIS (Windows) (server Windows lebih mahal daripada yang berbasis Unix, dan Anda bisa menjalankannya di Aplikasi Konsol di bawah Mono di Linux).

Bagaimana OWIN dapat membantu saya dalam proyek peningkatan diri?
Belajar Microsoft.Owin(dan perpustakaan OWIN terkait lainnya) akan meningkatkan pengetahuan Anda tentang bagaimana komunikasi HTTP antara klien dan server web bekerja.

Bagus dibaca jika Anda ingin lebih memahami apa itu Katana dan OWIN.

Matas Vaitkevicius
sumber
6
Dilakukan dengan baik dan terima kasih karena langsung menjawab pertanyaan yang diposting daripada menjelajah jalur tangensial.
Dav
Bagaimana jika kita selalu menggunakan server berkemampuan Microsoft IIS untuk hosting? Tampaknya OWIN adalah default di templat WebApi2 baru. Haruskah saya menghapusnya sebagai referensi jika saya berencana untuk menjadi tuan rumah di IIS saja / selalu?
TechTurtle
@ TechTurtle Hai Tech, saya akan merekomendasikan mempostingnya sebagai pertanyaan terpisah.
Matas Vaitkevicius
Penjelasannya sangat jelas. Terima kasih atas informasi yang bermanfaat
Uttam
9

Apa itu OWIN?

OWIN adalah singkatan dari Open Web Interface untuk .NET. OWIN adalah spesifikasi yang menjelaskan bagaimana kerangka kerja pengembangan web seperti ASP.NET MVC harus berinteraksi dengan server web. Tujuan OWIN adalah memisahkan aplikasi web dari server web dengan memperkenalkan lapisan abstraksi. Abstraksi semacam itu memungkinkan Anda untuk menjalankan aplikasi yang sama di semua server web yang mendukung OWIN. Selain itu, ini menyederhanakan sistem secara keseluruhan karena lapisan abstraksi dapat menyediakan infrastruktur yang ringan untuk menampung aplikasi. IIS menyediakan beragam fitur untuk aplikasi web. Namun, aplikasi web mungkin tidak memerlukan semua fitur ini. Mungkin cukup bagi mereka untuk memiliki kemampuan pemrosesan HTTP minimal. Tuan rumah yang kompatibel dengan OWIN dapat menyediakan lingkungan hosting seperti itu untuk aplikasi ini. Bahkan, Anda dapat menentukan pipa modul yang digunakan selama pemrosesan permintaan. Pipa OWIN adalah rantai komponen yang kompatibel dengan OWIN yang melaluinya permintaan.

Apa itu Katana?

Katana adalah seperangkat komponen yang dibuat oleh Microsoft menggunakan spesifikasi OWIN. Beberapa komponen ini termasuk API Web, ASP.NET Identity, dan SignalR.

Di atas adalah kutipan dari Artikel CodeGuru: http://www.codeguru.com/csharp/.net/net_asp/overview-of-owin-and-katana.htm

Venkatesh Muniyandi
sumber