رادکام
یک برنامه Asp.Net Core با یک سرور HTTP، بصورت in-process اجرا می شود. سرور پیاده سازی شده به درخواست های HTTP گوش داده و آن را به عنوان مجموعه ای از ویژگی های درخواستی به برنامه می دهد. این ویژگی های درخواست شده همان HttpContext است.
شکل زیر نمایش دهنده ارتباط بینIIS (ASP.NET Core Module) و یک هاست in-process است.
درخواست ها از وب (معمولا از طریق پورت های 80 برای HTTP و یا 443 برای HTTPS) به IIS میرسد. IIS درخواست های رسیده را به IISHttpServer جهت مدیریت آنها، ارسال می کند. پس از آنکه IISHttpServer درخواست را پردازش کرد، آن به ASP.NET Core Middleware Pipeline ارسال می شود. این Middleware Pipeline درخواست ها را پردازش می کند و آن را به عنوان یک نمونه از HttpContext به منطق برنامه ارسال می کند. سپس برنامه از طریق IISHttpServer به IIS پاسخ می دهد و IIS نیز به Client پاسخ می دهد.
شکل زیر نمایش دهنده دیاگرام ارتباط بین (IIS (ASP.NET Core Module و یک هاست بصورت out-of-process می باشد.
درخواست ها از وب (معمولا از طریق پورت های 80 برای HTTP و یا 443 برای HTTPS) به IIS میرسد. سپس ماژول درخواست ها را از طریق پورتی به غیر از 80 و 443 به Kestrel ارسال می کند. Kestrel درخواست ها را به داخل ASP.NET Core Middleware Pipeline ارسال می کند. بعد از پردازش هر درخواست، آن در
قالب یک نمونه از HttpContext به منطق برنامه ارسال می شود. درخواست مجددا
از برنامه به IIS و از آنجا به Client ارسال می شود.
Kestrel وب سرور پیشفرض در پروژه های ASP.NET Core است. مهمترین علت ایجاد Kestrel، دستیابی به هدف اجرای ASP.NET Core برروی سیستم عامل های مختلف است. اکنون وظیفه میزبانی برنامه های تهیه شده توسط تکنولوژی ASP.NET Core در Linux و Mac برعهده Kestrel بوده و دیگر وابستگی ای به IIS وجود ندارد.
Kestrel به صورت زیر قابل استفاده است:
1. خودش به عنوان وب سرور، مستقیما درخواست ها را پردازش کند.
2. با استفاده از یک reverse proxy server مثل IIS، Apache، Nginx. یک reverse proxy server درخواست های HTTP را از اینترنت در یافت می کند و آن را به Kestrel ارسال می کند.
در Kestrel عملکرد فدای سرعت شده است و در مقایسه با IIS دارای حداقل نیازها برای میزبانی برنامه های ASP.NET Core می باشد. جدول زیر مقایسه ای بین ویژگی های Kestrel و 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
2,336بازدید
دیدگاه کاربران
هنوز دیدگاهی ثبت نشده است.
شما میتوانید درباره این مقاله، دیدگاه خود را ثبت کنید.