Mengapa menggunakan IIS atau apache tomcat alih-alih hosting sendiri?

8

Saya adalah pengembang .NET. Saya melihat kerangka ASP.NET MVC sekarang mulai menyediakan fitur self-hosting. Itu sangat masuk akal (bagi saya). Aplikasi yang di-host-sendiri terasa lengkap tanpa ketergantungan eksternal.

Pertanyaan yang ada dalam benak saya adalah mengapa sekarang ada orang yang TIDAK ingin menjadi tuan rumah sendiri? Maksud saya, apakah ada keuntungan yang akan diberikan IIS kepada saya dibandingkan dengan hosting sendiri. Saya yakin ada beberapa keuntungan karena jika tidak, Microsoft tidak akan repot menciptakan integrasi IIS dengan inti asp.net.

Saya tidak ingin pertanyaan saya khusus untuk .NET. Jadi, saya akan pergi dengan - mengapa pergi dengan mengapa menggunakan IIS atau apache tomcat daripada hosting sendiri?

bilal fazlani
sumber
4
Pada tingkat tinggi, server web utama memiliki banyak fungsi yang Anda butuhkan untuk membangun kembali, yang dapat Anda konfigurasi atau abaikan , jika Anda "host sendiri". Hal-hal sederhana, seperti menyajikan file statis, dan mengonfigurasi Expiresdan ETagheader. Dan kemudian hal-hal yang lebih rumit, seperti memisahkan lalu lintas dengan host, menjaga aplikasi dari memori masing-masing, SSL, dan mengelola ribuan permintaan bersamaan ...
svidgen
Anda bisa menulis layanan HTTP Anda sendiri menggunakan soket C ++.
Matthew Whited
1
Banyak aplikasi .net menyebut diri mereka "self-host" sementara mereka masih menggunakan http.sys, yang agak menyesatkan IMO.
CodesInChaos
Dalam pandangan saya, itu hanyalah konsekuensi historis dari evolusi kasus penggunaan untuk protokol TCP / HTTP dan tumpukan layanan. Misalnya, dalam hal HTTP, daemon atau layanan yang dulunya duduk di atas OS sebagai semacam hub pusat dari konten web apa pun, di mana aplikasi lokal atau jarak jauh lainnya akan mendelegasikan konsumsi atau penawaran hypertext / hypermedia kandungan.
YSharp

Jawaban:

10

IIS menyediakan sejumlah kemampuan umum yang tidak tersedia secara default di layanan web yang di-host-sendiri. Pengawas: memonitor kesehatan aplikasi web dan akan mematikan / respawn aplikasi jika mulai terlihat tidak sehat (menggunakan terlalu banyak memori, CPU, dll - dapat dikonfigurasi). Batas sumber daya seperti penggunaan CPU, batas koneksi, dll. Jalankan sebagai pengguna tertentu untuk keamanan dengan hak istimewa yang paling rendah. Kelola sertifikat / SSL. Host / kelola banyak aplikasi melalui satu port / antarmuka. Membalikkan proxy ke aplikasi konsol. Banyak hal lain yang tidak saya sebutkan seperti permintaan logging.

Saya tidak terbiasa dengan Tomcat, tetapi saya menganggap itu adalah cerita yang sama. Anda mendapatkan fitur hosting tambahan yang hosting sendiri tidak berikan secara default dan mungkin cukup sulit untuk diterapkan sendiri.

Seringkali produk yang mengekspos layanan web yang di-hosting-sendiri masih akan merekomendasikan menempatkan mereka di belakang proxy terbalik atau penyelia lain dalam produksi. Ini mungkin untuk memastikan itu akan selamat dari crash atau anggun selama gangguan jaringan. Saya sedang memikirkan NGINX untuk layanan Docker, misalnya. Di ruang .NET, saya percaya Kestrel terbalik diproksikan melalui IIS sebagai praktik standar (atau mungkin NGINX di Linux / Mac).

Secara tradisional, aplikasi ASP.NET telah di-host hanya windows di Internet Information Server (IIS). Cara yang disarankan untuk menjalankan aplikasi Core ASP.NET pada Windows masih menggunakan IIS, tetapi sebagai server reverse-proxy. Modul Inti ASP.NET di IIS mengelola dan proksi permintaan ke server HTTP Kestrel yang dihosting di luar proses.

Kasey Speakman
sumber