فریم ورک ASP Core چقدر سریع است ؟
در مقایسه با نسخه ی قدیمی پیشرفت ASP Core بسیار چشمگیر است و فرسنگها از نزدیکترین رقیبش یعنی Nodejs فاصله دارد. البته مبنای بررسی ما فریم ورکهای وبی است که قابلیت پیاده سازی یک سایت کامل را دارند و فقط برای شبکه های مخابراتی یا میکروسرویسهای اختصاصی طراحی نشده اند.
در چند سال اخیر Nodejs سریعترین فریم ورک تحت وب به شمار میرفت و آمار آن اصلا با ASP MVC 5 قابل مقایسه نبود. سرعت همیشه یکی از مهمترین عوامل انتخاب تکنولوژی است و در مورد Raygun نشان میدهد فریم ورک چقدر می تواند در این زمینه اهمیت داشته باشد.
برای مقایسه سرعت ابتدا باید یک مبنای مشترک داشته باشیم. در این زمینه سایت Techempower با ارائه ی یک Benchmark معتبر توانسته اعتماد برنامه نویسان و شرکتهای نرم افزاری را جلب کند.
آمارهای Techempower همه ی شرایط اجرای سایت ها را پوشش نمیدهد و هنوز راه درازی دارد تا به عنوان مرجع کامل مورد استفاده قرار بگیرد. اما دید مناسبی از عملکرد انواع فریم ورکها و سرورها در شرایط مختلف ارائه می دهد.
اولین مبنای سرعت تست Plaintext است. در این تست سرور فقط عبارت Hello World را به کلاینت برمی گرداند. این ساده ترین شکل پاسخ است و طبیعی است که اگر فریم ورکی در این زمینه کند عمل کند در سایر زمینه ها هم کند است. وقتی در سال 2016 اولین آمار ASP Core در این تست نمایش داده شده همه را هیجان زده کرد. تعداد درخواست های پاسخ داده شده از 50 هزار در ثانیه (در ASP MVC قدیم) به 1.15 میلیون (در ASP Core ) رسید. یعنی عملکرد ASP Core در مقایسه با ASP 4.6 حدود 23 برابر بهتر شده بود.
آخرین آمار رسمی Techempower در روز ولنتاین منتشر شد و برای ASP Core 2 رکورد 2.216 میلیون را ثبت کرده است.
در مقایسه با نسخه ی قدیمی پیشرفت ASP Core بسیار چشمگیر است و فرسنگها از نزدیکترین رقیبش یعنی Nodejs فاصله دارد. البته مبنای بررسی ما فریم ورکهای وبی است که قابلیت پیاده سازی یک سایت کامل را دارند و فقط برای شبکه های مخابراتی یا میکروسرویسهای اختصاصی طراحی نشده اند.
در چند سال اخیر Nodejs سریعترین فریم ورک تحت وب به شمار میرفت و آمار آن اصلا با ASP MVC 5 قابل مقایسه نبود. سرعت همیشه یکی از مهمترین عوامل انتخاب تکنولوژی است و در مورد Raygun نشان میدهد فریم ورک چقدر می تواند در این زمینه اهمیت داشته باشد.
برای مقایسه سرعت ابتدا باید یک مبنای مشترک داشته باشیم. در این زمینه سایت Techempower با ارائه ی یک Benchmark معتبر توانسته اعتماد برنامه نویسان و شرکتهای نرم افزاری را جلب کند.
آمارهای Techempower همه ی شرایط اجرای سایت ها را پوشش نمیدهد و هنوز راه درازی دارد تا به عنوان مرجع کامل مورد استفاده قرار بگیرد. اما دید مناسبی از عملکرد انواع فریم ورکها و سرورها در شرایط مختلف ارائه می دهد.
اولین مبنای سرعت تست Plaintext است. در این تست سرور فقط عبارت Hello World را به کلاینت برمی گرداند. این ساده ترین شکل پاسخ است و طبیعی است که اگر فریم ورکی در این زمینه کند عمل کند در سایر زمینه ها هم کند است. وقتی در سال 2016 اولین آمار ASP Core در این تست نمایش داده شده همه را هیجان زده کرد. تعداد درخواست های پاسخ داده شده از 50 هزار در ثانیه (در ASP MVC قدیم) به 1.15 میلیون (در ASP Core ) رسید. یعنی عملکرد ASP Core در مقایسه با ASP 4.6 حدود 23 برابر بهتر شده بود.
آخرین آمار رسمی Techempower در روز ولنتاین منتشر شد و برای ASP Core 2 رکورد 2.216 میلیون را ثبت کرده است.
سورس یک پروژه میان افزار
پیاده سازی یک میان افزار همراه با Extention و بخش Options در ASP Core که یک فایل انتخابی را به کاربر بر میگرداند.
https://github.com/codehaks/Codehaks.Middlewares.SendFile
پیاده سازی یک میان افزار همراه با Extention و بخش Options در ASP Core که یک فایل انتخابی را به کاربر بر میگرداند.
https://github.com/codehaks/Codehaks.Middlewares.SendFile
GitHub
codehaks/Codehaks.Middlewares.SendFile
Codehaks.Middlewares.SendFile - A middleware for ASP.NET Core to send back a file in the response
پروژه دمو با Vue.js
در این پروژه لیست کامل کشورها رو با استفاده از ajax بارگذاری می کنیم و سپس با کمک Vue.js آنها را در یک جدول نمایش می دهیم.
قابلیت جستجوی نام کشورها و فیلتر کردن آنها بر اساس قاره هم اضافه شده است. همچنین شما می توانید همه ی ستونها را از بالا به پایین یا از پایین به بالا مرتب کنید.
برای جستجو و فیلتر سازی از lodash.js استفاده شده است .
https://github.com/codehaks/WorldVue
در این پروژه لیست کامل کشورها رو با استفاده از ajax بارگذاری می کنیم و سپس با کمک Vue.js آنها را در یک جدول نمایش می دهیم.
قابلیت جستجوی نام کشورها و فیلتر کردن آنها بر اساس قاره هم اضافه شده است. همچنین شما می توانید همه ی ستونها را از بالا به پایین یا از پایین به بالا مرتب کنید.
برای جستجو و فیلتر سازی از lodash.js استفاده شده است .
https://github.com/codehaks/WorldVue
GitHub
codehaks/WorldVue
Search, Filter and sort world countires! Contribute to codehaks/WorldVue development by creating an account on GitHub.
نگاهی دوباره به Razor Pages
تیم ASP Core تلاش زیادی می کند استفاده از Razor Pages را بجای MVC جا بندازد. الگوی MVC سالها از محبوبترین روشهای پیاده سازی سایت بوده است اما اشکالاتی هم دارد.
در الگوی MVC همیشه نیاز به کنترلر دارید. حتی وقتی می خواهید یک صفحه ی ساده "ارتباط با ما" نمایش دهید باید کنترلر و اکشن داشته باشید. همچنین مدل و ویو و کنترلر در فولدرهای مجزا نگه داری میشوند و مدیریت کردن پروژه در درازمدت سخت میشود. اگر بخواهید یک کنترلر را به همراه مدل و ویوهایش به یک پروژه ی دیگر منتقل کنید با دردسرهای زیادی روبرو هستید.
در Razor Pages دیگر کنترلر نداریم و اکشن ها می توانند درون فایل ویو یا در یک فایل همنام ویو (مانند کلاسهای Win Form) قرار گیرند. در الگوی MVC در واقع Controller اهمیت ندارد بلکه اکشن های درون کنترلر هستند که درخواستها را مدیریت می کنند. این دقیقا بخشی است که Razor Pages روی آن تاکید دارد.
وقتی از Razor Pages استفاده می کنید تمام قابلیتهای MVC را دارید. بخشی از MVC است و درون یک سرویس بارگذاری میشود. وقتی یک پروژه ی MVC در ASP Core ایجاد می کنید همزمان Razor Page هم به پروژه اضافه میشود. می توانید بخشی از سایت را MVC و بخش دیگر را با Razor Page طراحی کنید.
در Razor Page طراحی سایت بجای کنترلر روی صفحه تمرکز دارد. ابتدا صفحه ی HTML را ایجاد می کنید و سپس اکشن های آن را (اگر لازم داشت) می سازید. برای سایتهایی که صفحات زیادی دارند گزینه ی مناسبی است اما برای وب سرویس ها یا پروژه هایی که از AJAX زیاد استفاده می کنند کارایی ندارد.
مایکروسافت تاکید می کند که Razor Page فقط برای طراحی سایت های کوچک نیست و می توانید برای پیاده سازی هر سایتی از آن استفاده کنید. اما برنامه نویسان پر سابقه ی MVC هنوز با شک و تردید به این تکنولوژی نگاه می کنند.
تیم ASP Core تلاش زیادی می کند استفاده از Razor Pages را بجای MVC جا بندازد. الگوی MVC سالها از محبوبترین روشهای پیاده سازی سایت بوده است اما اشکالاتی هم دارد.
در الگوی MVC همیشه نیاز به کنترلر دارید. حتی وقتی می خواهید یک صفحه ی ساده "ارتباط با ما" نمایش دهید باید کنترلر و اکشن داشته باشید. همچنین مدل و ویو و کنترلر در فولدرهای مجزا نگه داری میشوند و مدیریت کردن پروژه در درازمدت سخت میشود. اگر بخواهید یک کنترلر را به همراه مدل و ویوهایش به یک پروژه ی دیگر منتقل کنید با دردسرهای زیادی روبرو هستید.
در Razor Pages دیگر کنترلر نداریم و اکشن ها می توانند درون فایل ویو یا در یک فایل همنام ویو (مانند کلاسهای Win Form) قرار گیرند. در الگوی MVC در واقع Controller اهمیت ندارد بلکه اکشن های درون کنترلر هستند که درخواستها را مدیریت می کنند. این دقیقا بخشی است که Razor Pages روی آن تاکید دارد.
وقتی از Razor Pages استفاده می کنید تمام قابلیتهای MVC را دارید. بخشی از MVC است و درون یک سرویس بارگذاری میشود. وقتی یک پروژه ی MVC در ASP Core ایجاد می کنید همزمان Razor Page هم به پروژه اضافه میشود. می توانید بخشی از سایت را MVC و بخش دیگر را با Razor Page طراحی کنید.
در Razor Page طراحی سایت بجای کنترلر روی صفحه تمرکز دارد. ابتدا صفحه ی HTML را ایجاد می کنید و سپس اکشن های آن را (اگر لازم داشت) می سازید. برای سایتهایی که صفحات زیادی دارند گزینه ی مناسبی است اما برای وب سرویس ها یا پروژه هایی که از AJAX زیاد استفاده می کنند کارایی ندارد.
مایکروسافت تاکید می کند که Razor Page فقط برای طراحی سایت های کوچک نیست و می توانید برای پیاده سازی هر سایتی از آن استفاده کنید. اما برنامه نویسان پر سابقه ی MVC هنوز با شک و تردید به این تکنولوژی نگاه می کنند.
چه سیستم عامل هایی از ASP Core پشتیبانی می کنند ؟
فریم ورک ASP Core با هدف پشتیبانی از چند سیستم عامل شروع شد. این پروژه آنقدر موفق بود که مایکروسافت تصمیم گرفت تیم ASP را مامور پروژه ی جدید دات نت کند. بجای ASP کار روی نسخه ی جدید دات نت ادامه پیدا کرد و حالا dotnet Core علاوه بر پشتیبانی از 80 درصد dotnet 4.5 روی همه ی سیستم عامل های محبوب اجرا می شود.
مایکروسافت پا را فراتر گذاشت و حالا یک نسخه از Visual Studio را هم برای macOS منتشر کرده است. یعنی برنامه نویسانی که به محصولات اپل علاقه دارند هم می توانند روی پروژه های دات نت Core کار کنند.
در این میان موفق ترین محصول را می توان بدون شک VSCode دانست. این ادیتور کم حجم حالا به محبوب ترین ابزار کد نویسی تبدیل شده است و بسیاری از برنامه نویسان قدیمی Python یا PHP را به سمت خود کشانده است. پشتبانی از چند سیستم عامل و محیط کاربری ساده و خوش دست در کنار افزونه های فراوان ابزاری را فراهم کرده است که کهنه کار ترین طرفداران Eclipse و Sublime را قانع کند.
برای برنامه نویسی ASP Core در لینوکس کافی است SDK آن را نصب کنید و با استفاده از Command Line Interface در خط فرمان پروژه را بیلد یا اجرا کنید. در این میان VSCode تجربه ی کاملی از کار با سی شارپ و دی باگ فراهم می کند. همچنین به راحتی می توانید سورس کدها را در GIT نگه داری کنید.
لیست کامل سیستم عامل هایی که ASP Core پشتیبانی می کند را در لینک زیر دنبال کنید :
https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.md
فریم ورک ASP Core با هدف پشتیبانی از چند سیستم عامل شروع شد. این پروژه آنقدر موفق بود که مایکروسافت تصمیم گرفت تیم ASP را مامور پروژه ی جدید دات نت کند. بجای ASP کار روی نسخه ی جدید دات نت ادامه پیدا کرد و حالا dotnet Core علاوه بر پشتیبانی از 80 درصد dotnet 4.5 روی همه ی سیستم عامل های محبوب اجرا می شود.
مایکروسافت پا را فراتر گذاشت و حالا یک نسخه از Visual Studio را هم برای macOS منتشر کرده است. یعنی برنامه نویسانی که به محصولات اپل علاقه دارند هم می توانند روی پروژه های دات نت Core کار کنند.
در این میان موفق ترین محصول را می توان بدون شک VSCode دانست. این ادیتور کم حجم حالا به محبوب ترین ابزار کد نویسی تبدیل شده است و بسیاری از برنامه نویسان قدیمی Python یا PHP را به سمت خود کشانده است. پشتبانی از چند سیستم عامل و محیط کاربری ساده و خوش دست در کنار افزونه های فراوان ابزاری را فراهم کرده است که کهنه کار ترین طرفداران Eclipse و Sublime را قانع کند.
برای برنامه نویسی ASP Core در لینوکس کافی است SDK آن را نصب کنید و با استفاده از Command Line Interface در خط فرمان پروژه را بیلد یا اجرا کنید. در این میان VSCode تجربه ی کاملی از کار با سی شارپ و دی باگ فراهم می کند. همچنین به راحتی می توانید سورس کدها را در GIT نگه داری کنید.
لیست کامل سیستم عامل هایی که ASP Core پشتیبانی می کند را در لینک زیر دنبال کنید :
https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.md
GitHub
dotnet/core
Home repository for .NET Core. Contribute to dotnet/core development by creating an account on GitHub.
آشنایی با Redis
دیتابیس Redis در واقع از نوع Non-Relational است و در آن از جدول و ردیف خبری نیست. این دیتابیس انواع مختلف اطلاعات را به صورت Key/Value دخیره می کند و در نوع خود سریعترین به شمار می رود.
دیتابیس های SQL در دیسک ذخیره می شوند و رفت و برگشت اطلاعات به آنها طول می کشد. در مقابل Redis از حافظه رم استفاده می کند که فوق العاده سریع است. اطلاعاتی که زیاد مورد استفاده قرار می گیرد درون آن کش میشود و دیگر رفت و برگشت به دیتابیس وجود ندارد. به همین دلیل سرعت پردازش اطلاعات با استفاده از Redis بیشتر میشود.
سایت هایی که ترافیک زیادی دارند معمولا از Redis برای کش کردن اطلاعات استفاده می کنند. می توان از آن به عنوان یک دیتابیس NoSQL هم استفاده کرد و اطلاعاتش را در دیسک ذخیره کرد.
این دیتابیس به زبان C و برای سیستم عامل لینوکس طراحی شده است اما امکان نصب آن روی ویندوز وجود دارد. در ASP Core به راحتی می توانید با استفاده از یک Nuget Package از آن استفاده کنید.
دیتابیس Redis در واقع از نوع Non-Relational است و در آن از جدول و ردیف خبری نیست. این دیتابیس انواع مختلف اطلاعات را به صورت Key/Value دخیره می کند و در نوع خود سریعترین به شمار می رود.
دیتابیس های SQL در دیسک ذخیره می شوند و رفت و برگشت اطلاعات به آنها طول می کشد. در مقابل Redis از حافظه رم استفاده می کند که فوق العاده سریع است. اطلاعاتی که زیاد مورد استفاده قرار می گیرد درون آن کش میشود و دیگر رفت و برگشت به دیتابیس وجود ندارد. به همین دلیل سرعت پردازش اطلاعات با استفاده از Redis بیشتر میشود.
سایت هایی که ترافیک زیادی دارند معمولا از Redis برای کش کردن اطلاعات استفاده می کنند. می توان از آن به عنوان یک دیتابیس NoSQL هم استفاده کرد و اطلاعاتش را در دیسک ذخیره کرد.
این دیتابیس به زبان C و برای سیستم عامل لینوکس طراحی شده است اما امکان نصب آن روی ویندوز وجود دارد. در ASP Core به راحتی می توانید با استفاده از یک Nuget Package از آن استفاده کنید.