اخبار، مطالب و رویدادهای مرتبط با توسعه نرم افزار رادکام

ASP.NET Core Web Server

 

ASP.NET Core Web Server

یک برنامه Asp.Net Core با یک سرور HTTP، بصورت in-process اجرا می شود. سرور پیاده سازی شده به درخواست های HTTP گوش داده و آن را به عنوان مجموعه ای از ویژگی های درخواستی به برنامه می دهد. این ویژگی های درخواست شده همان HttpContext است.

ASP.NET Core به روش های زیر میزبانی می شود:

  • Kestrel  به عنوان سرور پیشفرض، که یک پیاده سازی Cross-Platform از HTTP Server است.
  •  IIS HTTP Server که یک سرور in-process برای IIS است.
  • HTTP.sys Server که یک HTTP Server ویندوزی براساس HTTP.sys kernel و HTTP Server API می باشد.

مدل های میزبانی (Hosting Models):

1. in-process

شکل زیر نمایش دهنده ارتباط بینIIS  (ASP.NET Core Module) و یک هاست in-process است.

 In-process Hosting Model

درخواست ها از وب (معمولا از طریق پورت های 80 برای HTTP و یا 443 برای HTTPS) به IIS میرسد. IIS درخواست های رسیده را به IISHttpServer جهت مدیریت آنها، ارسال می کند. پس از آنکه IISHttpServer درخواست را پردازش کرد، آن به ASP.NET Core Middleware Pipeline ارسال می شود. این Middleware Pipeline درخواست ها را پردازش می کند و آن را به عنوان یک نمونه از HttpContext به منطق برنامه ارسال می کند. سپس برنامه از طریق IISHttpServer به IIS پاسخ می دهد و IIS نیز به Client پاسخ می دهد.

2. Out of Process

شکل زیر نمایش دهنده دیاگرام ارتباط بین (IIS (ASP.NET Core Module و یک هاست بصورت out-of-process می باشد.

Out of Process Hosting Model درخواست ها از وب (معمولا از طریق پورت های 80 برای HTTP و یا 443 برای HTTPS) به IIS میرسد. سپس ماژول درخواست ها را از طریق پورتی به غیر از 80 و 443 به Kestrel ارسال می کند. Kestrel درخواست ها را به داخل ASP.NET Core Middleware Pipeline ارسال می کند. بعد از پردازش هر درخواست، آن در قالب یک نمونه از HttpContext به منطق برنامه ارسال می شود. درخواست مجددا از برنامه به IIS و از آنجا به Client ارسال می شود.

Kestrel Web Server:

Kestrel وب سرور پیشفرض در پروژه های ASP.NET Core است. مهمترین علت ایجاد Kestrel، دستیابی به هدف اجرای ASP.NET Core برروی سیستم عامل های مختلف است. اکنون وظیفه میزبانی برنامه های تهیه شده توسط تکنولوژی ASP.NET Core در Linux و Mac برعهده Kestrel بوده و دیگر وابستگی ای به IIS وجود ندارد.

 Kestrel به صورت زیر قابل استفاده است:

1. خودش به عنوان وب سرور، مستقیما درخواست ها را پردازش کند.

Kestrel Web Server

2. با استفاده از یک reverse proxy server مثل IIS، Apache، Nginx. یک reverse proxy server درخواست های HTTP را از اینترنت در یافت می کند و آن را به Kestrel ارسال می کند.

Reverse Proxy Server

چرا به Reverse Proxy Server نیاز داریم؟

در Kestrel عملکرد فدای سرعت شده است و در مقایسه با IIS دارای حداقل نیازها برای میزبانی برنامه های ASP.NET Core می باشد. جدول زیر مقایسه ای بین ویژگی های Kestrel و IIS می باشد.

Kestrel vs IIS

همانطور که در جدول مشخص است Kestrel بسیاری از ویژگی های IIS را ندارد. اما مایکروسافت برای بهره ‏مندی از ویژگی های موجود در IIS و سایر وب سرورها، پیشنهاد می کند که Kestrel به همراه سایر وب سرورها بکار گرفته شود. یعنی Kestrel به همراه یک Reverse Proxy Server استفاده شود و ابتدا درخواست های HTTP توسط این Reverse proxy server از اینترنت گرفته شده و سپس با انجام پردازش های مورد نیاز به Kestrel ارسال شود. به این ترتیب می توان محدودیت های موجود در Kestrel را توسط سایر وب سرورها مدیریت کرد.

منابع: 

Web server implementations in ASP.NET Core

 ASP.NET Core Web Servers: Kestrel vs IIS Feature Comparison and Why You Need Both


نام را وارد کنید
تعداد کاراکتر باقیمانده: 1000
نظر خود را وارد کنید