وب سرور Kestrel یک وب سرور جدید است که به عنوان جزئی از ASP.Net Core محسوب می شود. از
اینرو این وب سرور به عنوان وب سرور ترجیحی در برنامه های جدید ASP.Net شناخته می شود.
چرا به Kestrel احتیاج داریم؟
اگر بوسیله ASP.Net اقدام به توسعه برنامه های مختلف کرده باشید
مطمئناً با IIS (Internet Information
Services) آشنایی دارید.
این وب سرور از سال 1995 میلادی شروع بکار کرده و در طول این مدت پیشرفت قابل
توجهی داشته است. IIS هر انتظاری که از یک وب سرور وجود دارد را برآورده می کند اما
سریعترین وب سرور موجود نیست و در مقایسه با Node.js و Netty قدیمی و کُند
بنظر می رسد.
مایکروسافت با استفاده از وب سرور Kestrel از
این فرصت استفاده کرد تا بتواند از ابتدا یک وب سرور سریع و سبک، ایجاد کند. یکی
از مزایای این وب سرور اصول طراحی آن برای بیشترین بهره وری از مفهوم Async می باشد.
اما مهمترین هدف ایجاد Kestrel دستیابی به هدف
اجرای ASP.Net بر روی سیستم عامل های مختلف است. اکنون وظیفه میزبانی برنامه های
تهیه شده توسط تکنولوژی ASP.Net در Linux و Mac برعهده Kestrel بوده و دیگر
وابستگی ای به IIS وجود ندارد.
عملکرد فدای سرعت
در
کسترل عملکرد فدای سرعت شده است. Kestrel در مقایسه با IIS دارای حداقل نیازها برای میزبانی برنامه های ASP.Net می باشد. جدول زیر مقایسه ای بین ویژگی های IIS و Kestrel ارائه می کند.
Windows/Linux/Mac |
Windows |
Platform Support
|
Yes |
Yes |
Static Files
|
No |
Yes |
HTTP Access Logs
|
No |
Yes |
Port Sharing / Multiple apps |
No |
Yes |
SSL Certificates |
No |
Yes |
Windows Authentication |
No |
Yes |
Management Console
|
No |
Yes |
Process Activation
|
No |
Yes |
Application Initialization
|
No |
Yes |
Configuration API
|
No |
Yes |
Request Filtering & Limits
|
No |
Yes |
IP & Domain Restrictions |
No |
Yes |
HTTP Redirect Rules |
Middleware |
Yes |
WebSocket Protocol
|
No |
Yes |
Response Output Caching
|
Optional |
Optional |
Compression
|
همانطور که در جدول مشخص است Kestrel بسیاری از
ویژگی های IIS را ندارد. اما مایکروسافت برای بهرهمندی از ویژگی های موجود در IIS و سایر وب
سرورها، پیشنهاد می کند که Kestrel به همراه سایر وب سرورها بکار گرفته شود.
یعنی Kestrel به
همراه یک Reverse proxy server استفاده شود و ابتدا درخواست های Http توسط
این Reverse proxy server از اینترنت گرفته شده و سپس با انجام پردازش های
مورد نیاز به Kestrel ارسال شود. به این ترتیب می توان محدودیت
های موجود در Kestrel را توسط سایر وب سرورها مدیریت کرد. شکل زیر نشان دهنده این موضوع است.
عرضه ASP.Net Core نشان داد که
مایکروسافت اهمیت وجود یک تکنولوژی مستقل از هر زیرساخت و سیستم عاملی را بخوبی
درک کرده است. گذشت زمان مشخص خواهد کرد چه میزان در این زمینه موفق عمل کرده است.
برای دریافت اطلاعات بیشتر در رابطه با پیاده سازی Kestrel در ASP.Net می توانید از آدرس Web server implementations in ASP.NET Core استفاده
نمایید.