Kumpulan aplikasi IIS, proses pekerja, domain aplikasi

88

Adakah yang bisa menjelaskan perbedaan, di IIS, antara kumpulan aplikasi, proses pekerja, dan domain aplikasi? Juga, bagaimana mereka bekerja sama? Saya telah membaca beberapa artikel tetapi masih sedikit membingungkan.

  1. Apakah setiap situs web yang dibuat di IIS menjadi aplikasi?
  2. Apakah setiap aplikasi dikaitkan dengan satu proses pekerja?
  3. Di mana domain aplikasi berperan?
Ravi
sumber

Jawaban:

103

Saya mencoba mengatakannya dengan kata lain.

Di server Anda dapat memiliki banyak situs asp.net yang berjalan bersama. Setiap situs adalah domain aplikasi .

Anda harus menetapkan satu kumpulan aplikasi untuk mereka masing-masing . Banyak domain aplikasi (situs) dapat memiliki kumpulan aplikasi yang sama, dan karena memiliki kumpulan aplikasi yang sama, domain aplikasi dijalankan di bawah proses yang sama, dan di bawah akun yang sama - dan memiliki pengaturan kumpulan yang sama. Jika pangkalan ini dimulai ulang, maka semua situs di bawah pangkalan itu akan dimulai ulang.

Sekarang setiap kumpulan dapat memiliki satu atau lebih proses pekerja . Setiap proses pekerja adalah program berbeda yang menjalankan situs Anda, memiliki variabel statisnya sendiri, panggilan mulai berhenti yang berbeda, dll. Proses pekerja yang berbeda tidak berkomunikasi bersama, dan satu-satunya cara untuk bertukar data adalah dari file umum atau database umum. Jika Anda memiliki lebih dari satu proses pekerja dan salah satunya membuat kalkulasi waktu yang lama, proses lainnya dapat menangani panggilan internet dan menampilkan konten.

Ketika Anda menetapkan banyak proses pekerja ke satu kumpulan maka Anda membuat yang disebut taman web dan situs Anda seperti dijalankan dari lebih dari satu komputer jika komputer adalah satu mesin pengolah.

domain aplikasi, dengan kumpulan dan proses

Setiap proses pekerja dapat memiliki banyak utas.

Bagaimana lebih banyak proses pekerja memengaruhi Anda:
Ketika Anda memiliki satu proses pekerja, semuanya menjadi lebih sederhana, di antara aplikasi Anda semua variabel statis adalah sama, dan Anda menggunakan lockuntuk menyinkronkannya.
Ketika Anda menetapkan lebih dari satu proses pekerja, maka Anda masih terus menggunakan lockuntuk variabel statis, variabel statis tidak berbeda di antara banyak proses yang berjalan di situs Anda, dan jika Anda memiliki beberapa sumber daya yang sama (misalnya pembuatan thumbnail pada disk) maka Anda perlu menyinkronkan proses pekerja Anda dengan Mutex.

Satu catatan lagi. Kedengarannya ketika Anda membuat lebih banyak proses pekerja maka Anda mungkin memiliki pemuatan halaman asinkron yang lebih lancar. Ada masalah kecil dengan penangan sesi asp.net yang mengunci seluruh proses untuk pemuatan halaman - itu bagus dan tidak baik tergantung apakah Anda mengetahuinya dan menanganinya - atau mengubahnya.

Jadi mari kita bicara tentang satu situs saja dengan banyak proses pengerjaan. Di sini Anda menghadapi masalah yang Anda perlukan untuk menyinkronkan perubahan sumber daya umum Anda Mutex. Tetapi halaman / penangan yang menggunakan sesi mereka tidak asinkron karena sesi menguncinya. Ini bagus untuk memulai karena Anda menghindari sinkronisasi banyak titik ini sendiri.

Beberapa pertanyaan tentang topik ini:
Aplikasi web diblokir saat memproses aplikasi web lain saat berbagi sesi yang sama
Panggilan Ajax jQuery ke layanan web tampaknya sinkron
ASP.NET Server tidak memproses halaman secara asinkron
Mengganti sesi ASP.Net seluruhnya

Sekarang kunci sesi ini tidak memengaruhi situs yang berbeda.

Di antara situs yang berbeda, proses yang lebih berhasil dapat membantu untuk tidak memblokir satu situs yang lain dengan proses yang berjalan lama.
Juga di antara situs yang berbeda, lebih banyak kumpulan juga dapat membantu, karena setiap kumpulan memiliki setidaknya satu proses yang berfungsi, tetapi ingat dan lihat sendiri menggunakan penjelajah proses, setiap proses kerja membutuhkan lebih banyak memori komputer Anda, dan satu server besar dengan memori 16G dan satu server SQL tidak dapat memiliki terlalu banyak proses kerja yang berbeda - misalnya pada server dengan 100 situs bersama, Anda tidak dapat memiliki 100 kumpulan berbeda.

Aristos
sumber
Saya mencari tahu itu berbeda dari cara IIS 5 menanganinya dibandingkan dengan IIS 6 dan di atasnya. Jadi di IIS 5 Anda memiliki satu proses Pekerja dan beberapa domain aplikasi di dalamnya dibandingkan dengan IIS 6 Anda memiliki beberapa proses pekerja (w3wp.exe) satu untuk setiap kumpulan aplikasi. Di IIS 6.0 inetinfo mengalihkan ke proses pekerja yang berbeda tergantung pada permintaan. Apa aku disini? Ini sumber saya dotnetslackers.com/articles/iis/…
Ravi
@ user460103 Ya iis5 memiliki satu proses pekerja (beberapa domain aplikasi hanya dapat memiliki dengan sedikit peretasan, tetapi mereka tidak bekerja bersama.) Ketika Anda memiliki di satu situs banyak proses pekerja, maka ya iis6 dapat mengarahkan Anda ke proses pekerja yang berbeda.
Aristos
Apakah IIS menjalankan proses baru untuk setiap permintaan web? Atau apakah itu memutar utas baru?
variabel
@variable Putar utas baru - proses tetap aktif dan berjalan sepanjang waktu, atau mereka mendaur ulang seperti yang Anda atur di kolam ...
Aristos
Ok jika ada beberapa proses, lalu bagaimana sesi bekerja - Saya pikir sesi adalah per proses
variabel
18
  • Satu server IIS mungkin memiliki beberapa kumpulan aplikasi.
  • Satu aplikasi web mengikat satu kumpulan aplikasi.
  • Satu kumpulan aplikasi mungkin memiliki lebih dari satu proses pekerja (saat Taman Web diaktifkan).
  • Satu proses pekerja dapat memiliki beberapa domain aplikasi. Satu domain aplikasi hanya hidup dalam satu proses pekerja.
  • Satu domain aplikasi mungkin memiliki beberapa utas. Satu utas dapat dibagikan oleh domain aplikasi yang berbeda dalam waktu yang berbeda.

Arti untuk pengembang ASP.NET: untuk membuat situs web Anda skalabel, jangan gunakan sesi in-proc dan jangan gunakan kunci variabel kelas statis untuk sinkronisasi.

Ying
sumber
7
  1. Ya, meski tidak semua aplikasi adalah situs web. Anda dapat memiliki aplikasi yang berada di bawah situs web.

  2. Ya, setiap aplikasi harus memiliki satu proses pekerja (kumpulan aplikasi), meskipun satu kumpulan aplikasi dapat menjadi server beberapa aplikasi. Aplikasi web tunggal dapat didistribusikan (web garden / farm) artinya akan berjalan dalam beberapa proses.

  3. Setiap proses akan berjalan di domain aplikasinya sendiri (setiap pool aplikasi adalah domain aplikasi terpisah).


Dari MSDN.

Buat Aplikasi Web :

Aplikasi adalah pengelompokan konten di tingkat akar situs Web atau pengelompokan konten dalam folder terpisah di bawah direktori akar situs Web.

Kumpulan Aplikasi :

Kumpulan aplikasi mendefinisikan grup dari satu atau lebih proses pekerja, dikonfigurasi dengan pengaturan umum yang melayani permintaan ke satu atau lebih aplikasi yang ditetapkan ke kumpulan aplikasi tersebut. Karena kumpulan aplikasi memungkinkan sekumpulan aplikasi Web untuk berbagi satu atau lebih proses pekerja yang dikonfigurasi serupa, mereka menyediakan cara yang nyaman untuk memisahkan sekumpulan aplikasi Web dari aplikasi Web lain di komputer server. Batasan proses memisahkan setiap proses pekerja; oleh karena itu, masalah aplikasi dalam satu kumpulan aplikasi tidak mempengaruhi situs Web atau aplikasi di kumpulan aplikasi lain. Kumpulan aplikasi secara signifikan meningkatkan keandalan dan pengelolaan infrastruktur Web Anda.

Oded
sumber
Jadi proses IIS memiliki beberapa domain aplikasi (kumpulan aplikasi) dan setiap kumpulan aplikasi dapat memiliki beberapa situs web. Jadi, apakah beberapa situs web berada dalam domain aplikasi tunggal? Bagaimana jika ada yang salah di satu situs web, apakah itu menghapus seluruh domain aplikasi dan semua situs web yang berada di dalamnya?
Ravi
@ user460103 Jika Anda crash kolam, maka ya semua situs yang terhubung ke sana mereka berhenti - dan restart lagi.
Aristos
1
2. Tidak. Aplikasi mungkin dapat menjangkau lebih dari satu proses pekerja jika taman web dikonfigurasi.
Wiktor Zychla
@Wiktor - Saya tidak menghalangi itu. Namun, jawaban yang diperbarui untuk memperjelas.
Oded
3

Dari tautan sumber: -http: //weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

Aplikasi adalah istilah IIS, tapi itu salah satu yang digunakan ASP.NET. Pada dasarnya ini membuat kotak pasir, atau sekumpulan batas untuk memisahkan situs yang berbeda, atau bagian dari situs, dari yang lain.

AppDomain adalah istilah .NET. (Di IIS7, AppDomains memainkan peran yang lebih besar dalam IIS, tetapi sebagian besar itu adalah istilah ASP.NET)

Proses pekerja digunakan untuk memproses permintaan aplikasi web.

Rahul Tripathi
sumber