کدهک
1.92K subscribers
1.3K photos
7 videos
1 file
681 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 MVC سه روش برای انتقال اطلاعات از کنترلر به ویو وجود دارد.
آشنایی با ViewData ، ViewBag و TempData

در محیط ASP Core هم مانند ASP MVC سه روش برای انتقال اطلاعات از کنترلر به ویو وجود دارد.

روش ViewData
این روش از قدیمی ترین تکنیک های گردش اطلاعات از کنترلر به ویو است. در این روش اطلاعات به صورت Weakly-Typed است و موقع تایپ کردن کدها از طرف VS راهنمایی دریافت نمی کنید (Intellisense). اطلاعات به صورت جفتهای Key-Value است و با فراخوانی کلید می توانید مقدار آن را مشاهده کنید. همه ی داده های Model هم درون ViewData قرار می گیرد. در حقیقا مدل در View ها از درون ViewData خوانده میشود. با این تفاوت که مدل Strongly-Typed است و شهروند درجه اول در محیط ویو است.

روش ViewBag
داده های درون ViewBag آینه تمام نما یا کپی کامل اطلاعات درون ViewData است. با این تفاوت که این کپی روی یک شی dynamic انجام گرفته است. شی dynamic در #C می تواند بعد از کامپایل تغییر کند و خصوصیات جدید دریافت کند. به همین دلیل نیاز نیست که خصوصیات مدل یا کلیدها را قبلا در کد تعریف کنید و می توانید آن را مستقیما بخوانید.

روش TempData
اطلاعات در این روش مانند دو روش قبل به صورت Key-Value دخیره میشود و می توانید هر نوع داده ای را ذخیره کنید اما حجم داده دارای محدودیت است و بهتر است از 500 بایت فراتر نرود. اطلاعات TempData در ASP Core رمز گذاری شده و درون Cookie ذخیره میشود. به این معنی که با تغییر مرورگر توسط کاربراز بین میرود. نکته ی مهم در مورد TempData این است که بلافاصله بعد از آنکه اطلاعات آن خوانده شد پاک میشود. از این روش برای ارسال اطلاعاتی که نیاز به نگه داری بلند مدت و یا هنگام Redirect استفاده میشود.

در نسخه Razor Pages امکان استفاده از ViewBag وجود ندارد و این امکان قرار نیست به آن اضافه شود. به طور کلی توصیه میشود همیشه از ViewData استفاده کنید چون ViewBag متغیر دینامیک است و پردازش آن زمان بیشتری میگیرد.
ُسورس دستور ViewBag در محیط ASP Core که ViewData را تبدیل به متغیر داینامیک میکند.
کتاب مختصر و مفید درباره ASP Core

این کتاب به زبان انگلیسی و در 124 صفحه تهیه شده و به صورت مختصر مفید شما را با مبانی برنامه نویسی در محیط ASP Core آشنا می کند. این کتاب به صورت رایگان است و شامل قوانین کپی رایت نمی شود. می توانید آن را از وبلاگ شخصی نویسنده دانلود کنید.

https://www.recaffeinate.co/book/
در ASP Core اطلاعات Session را می توان در Cookie ذخیره کرد هم در حافظه ی سرور نگه داشت.
در دنیای وب HTTP یک محیط State-less است و محلی برای ذخیره سازی موقعیت جاری ندارد. اطلاعات HTTP بین دو درخواست حفظ نمی شود. از این رو برای انتقال اطلاعات به Request های بعدی نیاز به ابزار کمکی داریم .

در ASP Core مانند نسخه های قبل امکان استفاده از Session وجود دارد. به طور پیش فرض اطلاعات Session در کوکی ذخیره میشود. مدت زمان پیش فرض برای نگه داری اطلاعات 20 دقیقه است که می توانید تغییر دهید. همچنین از آنجا اطلاعات در کوکی مرورگر نگه داری میشود اگر کاربر مرورگر خود را هنگام کار عوض کند اطلاعات Session از بین میرود.

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

نباید اطلاعات محرمانه را در Session ذخیره کرد. همچنین اطلاعات آن مختص به یک کاربر نیست و ممکن است کاربر دیگر با استفاده از همان مرورگر بتواند از Session قبلی استفاده کند.

بر خلاف گذشته اطلاعات Session قفل نمی شود و هر درخواست جدید می تواند آن را تغییر دهد. در واقع اگر چند درخواست بخواهند اطلاعات Session را تغییر دهند آخرین درخواست برنده میشود.

استفاده از Session به طور کلی توصیه نمی شود و بهتر است تا می توانید از آن صرف نظر کنید. اما در ASP Core ابزار خوبی برای مدیریت Session وجود دارد.
سال گذشته شرکت Raygun اعلام کرد با مهاجرت از Nodejs به ASP Core بازدهی سایتهایش بدون هیچ تغییر سخت افزاری به میزارن 2000 درصد بهبود پیدا کرده است. این یعنی 20 برابر شدن ظرفیت سرورها بدون هزینه اضافی!
فریم ورک 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 مدتی در گوگل روی پروژه ی انگولار کار میکرد.
می گوید "تصمیم گرفتم بهترین قسمتهای انگولار را بردارم و یک فریم ورک سبک پیاده کنم که آن همه بار اضافی نداشته باشد".