Karena .NET Core lintas platform, proyek ASP.NET Core dapat berjalan di Windows dan Linux, dan jika disebarkan di Windows, mereka dapat disebarkan di IIS atau berjalan langsung melalui baris perintah, terlepas dari layanan IIS, karena penyertaan kontainer Kestrel di ASP.NET Core.
Untuk informasi selengkapnya tentang cara menyebarkan aplikasi Inti ASP.NET ke layanan IIS, Anda dapat merujuk ke yang berikut ini:
ASP.NET Core disebarkan di IISDalam prosesdanDi luar prosesDua model hosting
Sumber daya:
Login hyperlink terlihat.
Login hyperlink terlihat.
Model Dalam Proses
Sejak ASP.NET Core 3.0,Hosting Dalam Proses diaktifkan secara default untuk semua aplikasi yang disebarkan ke IIS, file web.config terlihat seperti ini:
Dapat dilihathostingModel="dalam proses", model dalam prosesKestrel tidak digunakan, tetapi sebaliknya menggunakan IISHttpServer() untuk mengimplementasikan server web baru yang dihosting langsung di dalam kumpulan aplikasi IIS, yang agak mirip dengan bagaimana ASP.NET tradisional diperkenalkan ke dalam IIS.
Diagram berikut menggambarkan hubungan antara IIS, modul ASP.NET Inti, dan aplikasi yang dihosting dalam proses:
Mencoba mengakses situs web, Anda dapat melihat server melalui header respons, seperti yang ditunjukkan pada gambar di bawah ini:
Melihat proses melalui task manager, hanya ada 2 proses, seperti yang ditunjukkan pada gambar di bawah ini:
Model di luar proses
IIS model ini bertindak sebagai proksi terbalik, dan ketika menerima permintaan, ia perlu meneruskannya ke layanan Kestrel, yang merupakan server web lintas platform yang disematkan dalam aplikasi ASP.NET Core.
Diagram berikut menggambarkan hubungan antara IIS, modul Inti ASP.NET, dan aplikasi yang dihosting di luar proses:
Kami memodifikasi file web.config sebagai berikut:
Ketika kita mengakses situs web melalui browser, kita dapat melihat bahwa nilai server header respons telah menjadi Kestrel, seperti yang ditunjukkan pada gambar di bawah ini:
Melihat task manager pada saat yang sama, saya menemukan bahwa ada 3 proses, seperti yang ditunjukkan pada gambar di bawah ini:
ringkasan
Dalam model terkelola InProcess, permintaan dan respons diberikan melalui w3wp.exe atau IISExpress, sedangkan dalam proses pekerja OutOfProcess yang terlibat, ini dotnet.exe Dalam model terkelola InProcess, satu server web digunakan, sedangkan dalam model terkelola OutOfProcess, dua server web dapat digunakan.
Alasan yang jelas untuk menggunakan model In-Process baru adalah karena model ini lebih cepat dan menggunakan lebih sedikit sumber daya,Model terkelola InProcess memberikan performa yang lebih baikKarena berjalan langsung dalam proses kumpulan aplikasi IIS. Tidak ada lalu lintas HTTP internal dan overhead, dan permintaan segera diproses.
|