کدهک
1.92K subscribers
1.3K photos
7 videos
1 file
679 links
آموزشگاه تخصصی دات نت

https://codehaks.com

لینکدین :
https://www.linkedin.com/in/codehaks

یوتیوب:
https://www.youtube.com/@codehaksfa

ارتباط با مدیر :
Admin: @codehak
Email: ghods.hakim@hotmail.com
call: 09380146555
Download Telegram
فریم ورک ASP Core چقدر سریع است ؟
فریم ورک 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 میلیون را ثبت کرده است.
سورس یک پروژه میان افزار

پیاده سازی یک میان افزار همراه با Extention و بخش Options در ASP Core که یک فایل انتخابی را به کاربر بر میگرداند.

https://github.com/codehaks/Codehaks.Middlewares.SendFile
پروژه دمو با Vue.js

در این پروژه لیست کامل کشورها رو با استفاده از ajax بارگذاری می کنیم و سپس با کمک Vue.js آنها را در یک جدول نمایش می دهیم.
قابلیت جستجوی نام کشورها و فیلتر کردن آنها بر اساس قاره هم اضافه شده است. همچنین شما می توانید همه ی ستونها را از بالا به پایین یا از پایین به بالا مرتب کنید.
برای جستجو و فیلتر سازی از lodash.js استفاده شده است .

https://github.com/codehaks/WorldVue
در ویژوال استودی پروژه ی پیش فرض بر پایه ی Razor Page ایجاد میشود.
نگاهی دوباره به 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 هنوز با شک و تردید به این تکنولوژی نگاه می کنند.
مقایسه تعداد ستاره ها در Github نشان میدهد فریم ورک Vue.js با سرعت بیشتری در حال رشد است و به زودی از React پیشی میگیرد.
ایوان یو موسس فریم ورک Vue.js مدتی در گوگل روی پروژه ی انگولار کار میکرد.
می گوید "تصمیم گرفتم بهترین قسمتهای انگولار را بردارم و یک فریم ورک سبک پیاده کنم که آن همه بار اضافی نداشته باشد".
فریم ورک dotnet Core علاوه بر ویندوز از macOS و Linux پشتیبانی می کند. با استفاده از Core CLI و VSCode می توانید هر جایی پروژه را پیاده سازی و منتشر کنید.
چه سیستم عامل هایی از 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

http://codehaks.com/gallery/more/9/actionfilter-asp-core
ابزار Redis محبوبترین دیتابیس جهت ذخیره سازی موقت اطلاعات در حافظه است و از آن برای کش کردن استفاده میشود.
آشنایی با Redis

دیتابیس Redis در واقع از نوع Non-Relational است و در آن از جدول و ردیف خبری نیست. این دیتابیس انواع مختلف اطلاعات را به صورت Key/Value دخیره می کند و در نوع خود سریعترین به شمار می رود.

دیتابیس های SQL در دیسک ذخیره می شوند و رفت و برگشت اطلاعات به آنها طول می کشد. در مقابل Redis از حافظه رم استفاده می کند که فوق العاده سریع است. اطلاعاتی که زیاد مورد استفاده قرار می گیرد درون آن کش میشود و دیگر رفت و برگشت به دیتابیس وجود ندارد. به همین دلیل سرعت پردازش اطلاعات با استفاده از Redis بیشتر میشود.

سایت هایی که ترافیک زیادی دارند معمولا از Redis برای کش کردن اطلاعات استفاده می کنند. می توان از آن به عنوان یک دیتابیس NoSQL هم استفاده کرد و اطلاعاتش را در دیسک ذخیره کرد.

این دیتابیس به زبان C و برای سیستم عامل لینوکس طراحی شده است اما امکان نصب آن روی ویندوز وجود دارد. در ASP Core به راحتی می توانید با استفاده از یک Nuget Package از آن استفاده کنید.
ابزار Identity در ASP Core مسئولیت تشخیص هویت و کنترلر دسترسی را به عهده دارد. در نسخه ی جدید می توان از سه روش Role و Claim و Policy دسترسی کاربران را مدیریت کرد.
انواع هویت سنجی در ASP Core Identity

ابزار Identity در ASP Core مسئولیت تشخیص هویت و کنترلر دسترسی را به عهده دارد. این ابزار در نسخه های قبل هم وجود داشت اما مانند سایر قسمتها باز نویسی شده است. در اینجا به سه روش اصلی کنترل دسترسی در Idenity Core می پردازیم.

روش Role-Based

در این روش کاربر بر اساس سمتی که دارد به بخش هایی از سایت دسترسی پیدا می کند. مثلا دسترسی به بخش مدیریت سایت فقط برای کاربرهایی با سمت Admin میسر است. در اینجا ما یک جدول برای نگه داری سمت ها داریم و یک جدول هم برای نگه داری رابطه ی بین کاربران با هر سمت. یک کاربر می تواند چندین سمت داشته باشد.

روش Claims-Based

نسخه ی جدید ASP Core تاکید زیادی به استفاده از این روش دارد. در این روش یک کاربر می تواند چند هویت داشته باشد. هر هویت مشخصه های خودش را دارد. دسترسی های یک کاربر بر اساس مشخصه های هر هویت فرق می کند. مثلا شما برای گرفتن وام به بانک مراجعه می کنید و برای شناسایی کارت ملی ارائه می کنید. مشخصات کارت ملی بخشی از مشخصات شما شامل نام و تاریخ تولد را نشان می دهد و یکی از هویت های شما محسوب میشود. حالا اگر بخواهید وام دانشجویی بگیرید باید ثابت کنید دانشجو هستید. در این مرحله کارت دانشجویی ارائه می کنید که شامل نام دانشگاه و شماره ی دانشجویی است. در سیستم Claims-Based انواع مشخصات شما در یک جدول key/value دخیره می شود و بعدا می توانید دسترسی به اکشن ها و کنترلر ها را بر اساس آن محدود کنید.

روش Policy-Based

این شیوه ترکیبی از روشهای قبل است. می توانید برای اجرای هر کدام از اکشنها یک سیاست یا Policy تعریف کنید که می تواند شامل مجموعه از سمت ها و مشخصه های هویتی (Claims) باشد.

علاوه بر اینها چند روش دیگر هم وجود دارد و باید گفت نسخه ی جدید از هر نظر کامل است. به طور کلی پیاده کردن سیستم امنیتی پیچیده است و بهتر است همیشه از Identity استفاده کنید. این سیستم بسیاری از نکات مهم مانند رمز نگاری را به خوبی رعایت کرده است و سطح امنیت سایت را به میزان قابل توجهی بالا می برد.