مقایسه Kestrel و IIS در ASP.NetCore
نزدیک به 2 سال است که از انتشار اولین سری از ASP.NetCore 2.2 میگذرد. نسخهای که تحولی بزرگ در سرعت و عملکرد این فریمورک ایجاد کرد. تا پیش از آن Asp.NetCore فقط از Kestrel به عنوان وب سرور استفاده میکرد. وب سروری که با واژه سرعت همراه بود. اما بواقع اینگونه نبود!
در ویندوز یا حتی لینوکس به دلایلی که در ادامه به تشریح آن میپردازیم مجبور بودیم تا از یک Reverse Proxy برای ارتباط kestrel با IIS و Apache استفاده کنیم. فرایندی که با ایجاد Requesهای بیشتر زمان اجرای پردازهها را افزایش میداد به گونهای که از سرعت پروژه کاسته میشد! اما چرا IIS یا Apache؟ مگر Kestrel خود به تنهایی چه عیبی داشت که میبایست IIS یا Apache را در آن دخیل میکردیم؟
در دات نت کور 2.2 و نسخههای بعدی یک معماری درون فرایند پیشبینی شده است. یعنی ما میتوانیم Hosting Model را از out of process و غیر مستقیم به In Process و مستقیم تغییر دهیم. با این کار واسط Reverse Proxy حذف شده و به همین دلیل تعداد Requestها کاهش و سرعت افزایش قابل توجهی پیدا میکند. در این مقاله به هر دو نوع Hosting Model، تفاوتها و عملکرد هر یک میپردازیم تا جایی که با استفاده از In Process، کِسترل را از دور خارج خواهیم کرد!