iis

وب سرور IIS چگونه در پس زمینه ی خود کار می کند؟

اگر در هر نوع حرفه ی فنی هستید، همیشه خوب است که درک اساسی از آنچه در پشت مرورگرهای ما می گذرد و نحوه انتقال اطلاعات از طریق اینترنت به رایانه ها را داشته باشید.

وب سرور:

“وب سرور” می تواند به سخت افزار یا نرم افزار اشاره داشته باشد، یا هر دوی آنها هنگامی که با هم کار می کنند.

  1. از نظر سخت افزاری ، وب سرور رایانه ای است که نرم افزار سرور و فایلهای component وب سایت را ذخیره می کند (به عنوان مثال اسناد HTML ، تصاویر ، صفحات سبک CSS و پرونده های JavaScript)، به اینترنت متصل است و از تبادل داده های فیزیکی با سایر دستگاه های متصل به وب پشتیبانی می کند.
  2. از ساید نرم افزار ، یک وب سرور شامل چندین قسمت است که نحوه دسترسی کاربران وب به پرونده های host شده را کنترل می کند ، مانند یک سرور HTTP. سرور HTTP نوعی نرم افزار است که URL ها (آدرس های وب) و HTTP (پروتکلی که مرورگر شما برای مشاهده صفحات وب استفاده می کند) را می فهمد. از طریق نام دامنه (مانند mozilla.org) وب سایتهایی که ذخیره می کند، قابل دسترسی است و محتوای آنها را به دست کاربر نهایی می رساند.

IIS چیست؟

IIS (internet information service) یکی از قدرتمندترین وب سرورهای مایکروسافت است که برای میزبانی برنامه وب شما استفاده می شود. IIS دارای موتور پردازش ASP.NET مخصوص خود برای رسیدگی به ریکوئست ASP.NET است. بنابراین ، هنگامی که ریکوئستی از کاربر به سرور می آید ، IIS این درخواست را می گیرد و پردازش می کند و ریسپانس را به کاربر ارسال می کند.

Image for post

شما باید در مورد دو مفهوم اصلی بدانید:

  1. Worker Process
  2. Application Pool

Worker Process (w3wp.exe) برنامه ASP.Net را در IIS اجرا می کند. این Process وظیفه مدیریت کلیه ریکوئست ها و ریسپانس هایی را که از سیستم کاربر دریافت می کند ، بر عهده دارد. همه عملکردهای ASP.Net تحت دامنه Worker Process اجرا می شوند. وقتی ریکوئستی از طرف سرویس گیرنده به سرور می آید ، Worker Process مسئول تولید ریکوئست و ریسپانس است. در یک کلمه ، می توان گفت Worker Process قلب برنامه وب ASP.NET است که با IIS اجرا می شود.

Application pool ظرف Worker Process است. از Application pool برای جدا کردن مجموعه ای از Worker Process IIS که از همان پیکربندی استفاده می کنند، استفاده می شود. Application pool ها ، امنیت ، قابلیت اطمینان و در دسترس بودن بهتر هر application وب را امکان پذیر می کند. Worker Process به عنوان مرز فرایند عمل می کند که هر یک از Application pool ها را از هم جدا می کند ، بنابراین وقتی یک application یا Worker Process با مشکل روبرو می شود یا ریسایکل می شود ، سایر application ها یا Worker Process ها تحت تأثیر قرار نمی گیرند. این اطمینان حاصل می شود که یک application وب خاص بر سایر application های وب تأثیر نمی گذارد زیرا در application pool های مختلف پیکربندی شده اند.

application pool های IIS همچنین مجموعه ای از تنظیمات پیشرفته را ارائه می دهند. اینها بر رفتار w3wp و IIS worker process شما تأثیر می گذارد. از جمله مواردی مانند Windows user accountی که در آن اجرا می شود ، راه اندازی مجدد خودکار process ، خاموش شدن خودکار و موارد دیگر. همچنین ممکن است برای یک IIS application pool چندین IIS worker processes در آنچه web garden نامیده می شود، ایجاد کند.

ما تمام موارد اساسی مانند وب سرور ، application pool ، Worker process را پوشش دادیم. حال بیایید نگاهی به چگونگی پردازش ریکوئست توسط IIS در هنگام گرفتن ریکوئست جدید از طرف کاربر بیندازیم.

اگر به ساختار IIS نگاه کنیم ، می توانیم آنها را به دو لایه تقسیم کنیم:

Kernel mode با IIS 6.0 معرفی شده است که حاوی HTTP.SYS است. بنابراین هر زمان که ریکوئستی از Client به سرور می آید ، ابتدا به HTTP.SYS می رسد. HTTP.SYS مسئول ارسال ریکوئست به Application pool خاص است.

Image for post

حال این سوال پیش می آید که چگونه HTTP.SYS می داند که ریکوئست را به کجا ارسال کند؟

این انتخاب تصادفی نیست. هر زمان که یک Application Pool جدید ایجاد می کنیم ، شناسه Application Pool، تولید شده و در HTTP.SYS ثبت می شود. بنابراین هرگاه HTTP.SYS ریکوئست را از هر Application وب دریافت می کند ، Application Pool را بررسی می کند و بر اساس Application Pool ریکوئست را ارسال می کند.

این اولین مراحل پردازش ریکوئست توسط IIS بود.
تاکنون ، کاربر برای برخی از اطلاعات درخواست کرده و ریکوئست به IIS Kernel level یعنی در HTTP.SYS رسیده است. HTTP.SYS، مجموعه Application را برای ارسال ریکوئست شناسایی کرده است. حال ، بیایید ببینیم که چگونه این درخواست از HTTP.SYS به Application Pool منتقل می شود.

در User Level of IIS ، ما خدمات مدیریت وب (WAS) را داریم که درخواست را از HTTP.SYS می گیرد و آن را به Application Pool مربوطه منتقل می کند.

وقتی Application Pool ریکوئست را دریافت می کند ، درخواست را به worker process (w3wp.exe) منتقل می کند. worker process آدرس URL ریکوئست را جستجو می کند تا ISAPI extension صحیح بارگیری شود. ISAPI extension ها روش IIS برای رسیدگی به ریکوئست ها برای منابع مختلف است. ASP.NET پس از نصب ، ISAPI extension (aspnet_isapi.dll) خود را نصب کرده و mapping را به IIS اضافه می کند.
Image for post

وقتی Worker process مورد نظر، aspnet_isapi.dll را بارگیری می کند ، HTTPRuntime را شروع می کند که نقطه ورود یک application است. HTTPRuntime کلاسی است که برای شروع پردازش ریکوئست ، متد ProcessRequest را فراخوانی می کند.

با فراخوانی این روش ، نمونه جدیدی از HTTPContext ایجاد می شود. که با استفاده از HTTPContext.Current Properties قابل دسترسی است. این object در طول عمر ریکوئست زنده می ماند. با استفاده از HttpContext.Current می توانیم به برخی از object های دیگر مانند Request ، Response ، Session و غیره دسترسی پیدا کنیم.

پس از آن HttpRuntime با کمک کلاس HttpApplicationFactory یک شیئ HttpApplication را بارگیری می کند. هر ریکوئست باید از طریق HTTPModule مربوطه منتقل شود تا به HTTPHandler برسد ، این لیست از ماژول توسط برنامه HTTPA پیکربندی شده است.

این مفهوم “HTTPPipeline” نامیده می شود. pipeline نامیده می شود زیرا شامل مجموعه ای از HttpModules (هم برای سطح Web.config و هم برای Machine.config) است که ریکوئست را در مسیر HttpHandler رهگیری می کند. HTTPModules کلاسهایی هستند که به ریکوئست ورودی دسترسی دارند. اگر در هنگام ریکوئست و ریسپانس بعدی نیاز به رسیدگی داشته باشیم ، می توانیم HTTPModule خود را نیز ایجاد کنیم.

Image for post

HTTP Handlers نقاط انتهایی در HTTP pipeline هستند. همه ریکوئست ها که از طریق HTTPModule عبور می کند باید به HTTPHandler برسد. HTTP Handler خروجی منبع درخواستی را تولید می کند. بنابراین ، هنگامی که ما درخواست هر صفحه وب aspx را داشتیم ، آن خروجی HTML مربوطه را برمی گرداند.

اکنون همه ریکوئست ها از HTTPModule به HTTPHandler مربوطه منتقل می شوند سپس روش و چرخه عمر صفحه ASP.NET شروع می شود. با این کار پردازش ریکوئست IIS پایان می یابد و چرخه عمر صفحه ASP.NET شروع می شود.

نتیجه

هنگامی که کاربر ریکوئست برخی از اطلاعات از یک سرور وب را می فرستد ، ریکوئست ابتدا به IIS HTTP.SYS  می رسد. سپس HTTP.SYS ریکوئست را به Application Pool خاص ارسال می کند. سپس Application Pool ریکوئست را به worker ارسال می کند تا ISAPI Extension بارگذاری شود که یک HTTPRuntime Object برای پردازش ریکوئست از طریق HTTPModule و HTTPhandler ایجاد می کند. پس از آن ، رویدادهای ASP.NET Page LifeCycle شروع می شوند.

Image for post

0 دیدگاه در “وب سرور IIS چگونه در پس زمینه ی خود کار می کند؟افزودن → خودتان

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *