Ini adalah pemahaman saya tentang bagaimana memulai / hosting aplikasi web berkembang karena itu semua cukup membingungkan untuk diikuti. Ringkasan kecil:
1. Classic ASP.NET: Tuliskan hanya kode aplikasi untuk dijalankan pada langkah terakhir dari pipa IIS wajib
2. ASP.NET dengan OWIN: Konfigurasikan server web .NET dan tulis kode aplikasi Anda. Tidak lagi secara langsung digabungkan ke IIS, jadi Anda tidak lagi dipaksa untuk menggunakannya.
3. ASP.NET Core: Konfigurasikan host dan server web untuk menggunakan dan menulis kode aplikasi Anda. Tidak lagi wajib untuk menggunakan server .NET jika Anda menargetkan .NET Core alih-alih .NET Framework.
Sekarang saya akan sedikit lebih detail tentang cara kerjanya dan kelas mana yang digunakan untuk memulai aplikasi:
ASP.NET klasik
Aplikasi ASP.NET klasik memiliki Global.asax
file sebagai titik masuk. Aplikasi ini hanya dapat dijalankan di IIS dan kode Anda dieksekusi di akhir pipa IIS (jadi IIS bertanggung jawab untuk CORS, otentikasi ... sebelum kode Anda berjalan). Sejak IIS 7 Anda dapat menjalankan aplikasi Anda dalam mode terintegrasi yang mengintegrasikan runtime ASP.NET ke IIS. Hal ini memungkinkan kode untuk fungsi configure yang tidak mungkin dilakukan sebelumnya (atau hanya dalam IIS sendiri) seperti url menulis ulang dalam Application_Start
acara Anda Global.asax
file atau menggunakan baru <system.webserver>
bagian dalam Anda web.config
berkas.
ASP.NET dengan OWIN
Pertama-tama OWIN bukan perpustakaan tetapi spesifikasi tentang bagaimana .NET web server (misalnya IIS) berinteraksi dengan aplikasi web. Microsoft sendiri memiliki implementasi OWIN yang disebut proyek Katana (didistribusikan melalui beberapa paket NuGet yang berbeda). Implementasi ini memberikan Anda pada dasarnya menyusun middleware dengan cara plug-and-play untuk membuat pipa untuk server web (selain hanya pipa ASP.NET di IIS7 + seperti pada poin di atas) daripada diikat ke pipa IIS ( tetapi sekarang Anda menggunakan komponen middleware untuk CORS, komponen middleware untuk otentikasi ...). Karena itu, aplikasi Anda tidak secara khusus digabungkan ke IIS dan Anda dapat menjalankannya di .server Web NET, misalnya:IAppBuilder
antarmuka yang Anda temui di Startup
kelas dan beberapa komponen middleware OWIN (OMC) yang disediakan oleh Microsoft. MenggunakanIAppBuilder
- The OwinHost paket dapat digunakan untuk diri host-aplikasi Anda dengan webserver Katana.
- The Microsoft.Owin.Host.SystemWeb paket digunakan untuk host aplikasi Owin Anda di IIS7 + dalam modus terpadu, dengan berlangganan middleware untuk acara seumur hidup yang benar secara internal.
Hal yang membuat semuanya sangat membingungkan adalah yang Global.asax
masih didukung bersama dengan Startup
kelas OWIN , sementara mereka berdua dapat melakukan hal serupa. Misalnya Anda dapat menerapkan CORS Global.asax
dan otentikasi menggunakan middleware OWIN yang menjadi sangat membingungkan.
Aturan praktis saya adalah menghapus semua Global.asax
file yang mendukung penggunaan Startup
kapan pun saya perlu menambahkan OWIN.
ASP.NET Core
ASP.NET Core adalah evolusi berikutnya dan sekarang Anda dapat menargetkan .NET Core atau .NET Framework. Ketika Anda menargetkan .NET Core, Anda dapat menjalankan aplikasi pada host apa pun yang mendukung .NET Standard. Ini berarti Anda tidak lagi terbatas pada server .NET (seperti pada poin sebelumnya), tetapi dapat meng-host aplikasi Anda dalam wadah Docker, server web linux, IIS ...
Titik masuk untuk aplikasi web ASP.NET Core adalah Program.cs
file. Di sana Anda mengkonfigurasi host Anda dan sekali lagi menentukan Startup
kelas Anda di mana Anda mengkonfigurasi pipa Anda. Menggunakan OWIN (dengan menggunakan IAppBuilder.UseOwin
metode ekstensi) adalah opsional, tetapi didukung penuh .
AreaRegistration.RegisterAllAreas();
Menyebabkan kesalahan bagi saya karena metode ini tidak diizinkan untuk digunakan selama startup seperti ini, hanya diApplication_Start
. Namun, aplikasi saya adalah API dan metode ini tampaknya hanya berguna untuk aplikasi MVC: stackoverflow.com/questions/18404637/…