در ASP NET Core ابزار IoC Container از سه روش Scoped و Transient و Singleton پشتیبانی می کند. در این ویدیو اثر استفاده از هرکدام را بررسی می کنیم
https://youtu.be/OhcYyK-w5Mg
https://youtu.be/OhcYyK-w5Mg
شمارش خودکار ارجاع یا ARC روشی است که در زبانهایی مانند Objective-C و Swift برای مدیریت حافظه استفاده میشود.
در این روش پاکسازی حافظه یک شی زمانی انجام میشود که دیگر هیچ رفرنسی به آن داده نشده باشد.
در GC که #C و Java از آن استفاده میکنند پاکسازی حافظه در بازه های زمانی اتفاق می افتد و باعث مکث در برنامه میشود. همچنین هنگامی که حافظه سیستم پر میشود باید GC در بازه های زمانی کوتاهتر اجرا شود.
در ARC رفرنس های داده شده به شی یا گرفته شده از آن شمارش میشود و زمانی که تعداد آنها به صفر میرسد حافظه شی تخلیه میشود. این روش نیاز به الگوریتم ساده تری دارد و جایی که منابع حافظه محدود است (موبایل) کارایی بیشتری دارد.
اما ARC قادر به مدیریت Reference Cycle نیست یعنی زمانی که شی A فقط به شی B وابسته باشد و برعکس تعداد رفرنس ها هیچوقت صفر نمیشود و نیاز به مکانیزم بیرونی برای تشخیص و پاکسازی بوجود می آید در غیر این صورت Memory Leak پیش می آید.
همچنین دفعات زیاد رفرنس دهی یا حذف رفرنس از شی در ARC غیر بهینه عمل میکند. در حالی که در GC تاثیر نمیگذارد.
در iOS از نسخه 5 به بعد از ARC استفاده میشود.
در این روش پاکسازی حافظه یک شی زمانی انجام میشود که دیگر هیچ رفرنسی به آن داده نشده باشد.
در GC که #C و Java از آن استفاده میکنند پاکسازی حافظه در بازه های زمانی اتفاق می افتد و باعث مکث در برنامه میشود. همچنین هنگامی که حافظه سیستم پر میشود باید GC در بازه های زمانی کوتاهتر اجرا شود.
در ARC رفرنس های داده شده به شی یا گرفته شده از آن شمارش میشود و زمانی که تعداد آنها به صفر میرسد حافظه شی تخلیه میشود. این روش نیاز به الگوریتم ساده تری دارد و جایی که منابع حافظه محدود است (موبایل) کارایی بیشتری دارد.
اما ARC قادر به مدیریت Reference Cycle نیست یعنی زمانی که شی A فقط به شی B وابسته باشد و برعکس تعداد رفرنس ها هیچوقت صفر نمیشود و نیاز به مکانیزم بیرونی برای تشخیص و پاکسازی بوجود می آید در غیر این صورت Memory Leak پیش می آید.
همچنین دفعات زیاد رفرنس دهی یا حذف رفرنس از شی در ARC غیر بهینه عمل میکند. در حالی که در GC تاثیر نمیگذارد.
در iOS از نسخه 5 به بعد از ARC استفاده میشود.
آموزش Collection Binding با Blazor Server و مقایسه آن با Blazor Web Assembly
https://youtu.be/uYT3k0P3rdc
https://youtu.be/uYT3k0P3rdc
در این ویدیو یک Custom TagHelper Attribute تعریف می کنیم که می تواند تگهای HTML درون ویو را پنهان کند.
https://youtu.be/kYdnCIohbIs
https://youtu.be/kYdnCIohbIs
مایکروسافت شرکت تولید کننده بازی Activision Blizzard را به قیمت 68.7 میلیارد دلار خریداری می کند.
این خرید به صورت تمام نقدی انجام میشود و پس از آن مایکروسافت را به سومین شرکت تولید کننده بازی های رایانه ای تبدیل می شود.
بازی هایی مثل Call of Duty و Candy Crush و Warcraft از محصولات Activision Blizzard هستند که به مالکیت مایکروسافت منتقل می شوند.
این بزرگترین گام مایکروسافت برای توسعه شاخه بازی و پلتفرم XBox به شمار میرود.
این خرید به صورت تمام نقدی انجام میشود و پس از آن مایکروسافت را به سومین شرکت تولید کننده بازی های رایانه ای تبدیل می شود.
بازی هایی مثل Call of Duty و Candy Crush و Warcraft از محصولات Activision Blizzard هستند که به مالکیت مایکروسافت منتقل می شوند.
این بزرگترین گام مایکروسافت برای توسعه شاخه بازی و پلتفرم XBox به شمار میرود.
مقایسه حجم دانلود اپلیکیشن های Blazor WebAssembly
اپ هایی که با Blazor WebAssembly پیاده میشوند برای اجرا ابتدا باید به طور کامل روی دستگاه کاربر دانلود شوند. این رفتار مشابه مانند React و Angular است. البته در مورد فریم ورکهای جاوا اسکریپت حجم دانلود به مراتب کمتر است.
حجم فریم ورک دات نت در وب اسمبلی چیزی در حدود 1 مگابایت است.
در حالت Ahead of time compilation که سورس بجای ترجمه در زمان اجرا از قبل کامپایل میشود حجم تا 3 مگابایت افزایش میابد.
استفاده از AOT برای اپ هایی که نیاز به پرفورمنس بالا دارند و CPU-Bound هستند توصیه میشود. مثل بازی ها و برنامه هایی با محاسبات ریاضی سنگین.
استفاده از EF Core حجم اپ های Blazor را به حد چشمگیری افزایش میدهد. پس اگر با دیتابیس کار می کنید (مثل sqlite در مرورگر) کاربر برای استفاده از برنامه شما باید چیزی در حدود 5 مگابایت را دانلود کند. البته این دانلود فقط در اجرای اول نیاز است و در مراحل بعدی کاهش میابید.
اپ هایی که با Blazor WebAssembly پیاده میشوند برای اجرا ابتدا باید به طور کامل روی دستگاه کاربر دانلود شوند. این رفتار مشابه مانند React و Angular است. البته در مورد فریم ورکهای جاوا اسکریپت حجم دانلود به مراتب کمتر است.
حجم فریم ورک دات نت در وب اسمبلی چیزی در حدود 1 مگابایت است.
در حالت Ahead of time compilation که سورس بجای ترجمه در زمان اجرا از قبل کامپایل میشود حجم تا 3 مگابایت افزایش میابد.
استفاده از AOT برای اپ هایی که نیاز به پرفورمنس بالا دارند و CPU-Bound هستند توصیه میشود. مثل بازی ها و برنامه هایی با محاسبات ریاضی سنگین.
استفاده از EF Core حجم اپ های Blazor را به حد چشمگیری افزایش میدهد. پس اگر با دیتابیس کار می کنید (مثل sqlite در مرورگر) کاربر برای استفاده از برنامه شما باید چیزی در حدود 5 مگابایت را دانلود کند. البته این دانلود فقط در اجرای اول نیاز است و در مراحل بعدی کاهش میابید.
آشنایی با LLVM
این پروژه در سال 2000 به عنوان یک تحقیق دانشجویی توس کریس لتنر شروع شد.
در گذشته وقتی میخواستید یک زبان برنامه نویسی جدید بسازید بایدفرآیند خوانش کد و تبدیل آن به زبان ماشین را خودتان پیاده میکردید. مشکل این است که پردازنده های سخت افزاری متعددی در بازار وجود دارد و ساز و کار x86 با ARM و PowerPC و ... متفاوت است.
این مشکلی است که LLVM به خوبی حل می کند. LLVM مجموعه ای از ابزار با API های ماژولار در اختیار شما قرار میدهد تا بتوانید سورس کد را به زبانی میانی یا Intermediate Representation تبدیل کنید. فقط کافی است کدهای مربوط به Front-End را بنویسید و به LLVM ارسال کنید.
این Front-End بخشی از کامپایلر است که وظیفه ی Parse کردن و تشخیص خطاهای Syntax را به عهده دارد. بعد از اینکه کد شما به IR تبدیل شد LLVM می تواند آن را برای انواع مختلف سخت افزار آماده کند و کد ماشین مورد نیاز را تولید کند.
ابزار LLVM کمک کرده فرآیند طراحی زبان های برنامه نویسی جدید آسانتر شود و در نتیجه زبانهایی مثل Kotlin و Rust و Swift در کوتاهترین زمان جای خود را بین برنامه نویسان باز کرده اند.
این پروژه در سال 2000 به عنوان یک تحقیق دانشجویی توس کریس لتنر شروع شد.
در گذشته وقتی میخواستید یک زبان برنامه نویسی جدید بسازید بایدفرآیند خوانش کد و تبدیل آن به زبان ماشین را خودتان پیاده میکردید. مشکل این است که پردازنده های سخت افزاری متعددی در بازار وجود دارد و ساز و کار x86 با ARM و PowerPC و ... متفاوت است.
این مشکلی است که LLVM به خوبی حل می کند. LLVM مجموعه ای از ابزار با API های ماژولار در اختیار شما قرار میدهد تا بتوانید سورس کد را به زبانی میانی یا Intermediate Representation تبدیل کنید. فقط کافی است کدهای مربوط به Front-End را بنویسید و به LLVM ارسال کنید.
این Front-End بخشی از کامپایلر است که وظیفه ی Parse کردن و تشخیص خطاهای Syntax را به عهده دارد. بعد از اینکه کد شما به IR تبدیل شد LLVM می تواند آن را برای انواع مختلف سخت افزار آماده کند و کد ماشین مورد نیاز را تولید کند.
ابزار LLVM کمک کرده فرآیند طراحی زبان های برنامه نویسی جدید آسانتر شود و در نتیجه زبانهایی مثل Kotlin و Rust و Swift در کوتاهترین زمان جای خود را بین برنامه نویسان باز کرده اند.
یک فانکشن در SQL Server تعریف می کنیم و آن را در یک Computed Column استفاده می کنیم و سرعت اجرای آن را با Sub Query در EF Core مقایسه می کنیم.
https://youtu.be/uCASTdXdYMg
https://youtu.be/uCASTdXdYMg
با استفاده از Razor Class Library می توانید ویوها و صفحات سایت رو به پروژه ها جدا منتقل کنید.
https://youtu.be/ByHhEebHz1c
https://youtu.be/ByHhEebHz1c
معماری WSL2
از نسخه 18917 ویندوز به بعد می توانید از قابلیت Windows Subsystem For Linux نسخه 2 استفاده کنید. معماری این نسخه تغییرات اساسی داشته و پرفورمنس محیط لینکوس را به طول قابل توجهی افزایش میدهد.
به طور کلی WSL به شما امکان میدهد روی ویندوز یک نسخه از لینوکس مثل Ubuntu یا CentOs نصب و اجرا کنید. در مقایسه با ابزاری مثل Virtual Box این کار راحت تر است و به منابع کمتری نیاز دارید.
در WSL1 دستورات Linux باید به Windows ترجمه میشد و بعد اجرا میشد اما در WSL2 هسته لینکوس به طور مجزا روی ویندوز نصب میشود و تنها نیاز به Hypvervisor جهت اجرا دارد که سربار به مراتب کمتری دارد.
با WSL2 می توانید عملا هر نرم افزار Linux را روی ویندوز اجرا کنید و این گزینه برای توسعه دهندگان نرم افزار میتواند ابزار خوبی باشد.
نسخه جدید Docker ویندوز هم روی WSL2 اجرا میشود.
از نسخه 18917 ویندوز به بعد می توانید از قابلیت Windows Subsystem For Linux نسخه 2 استفاده کنید. معماری این نسخه تغییرات اساسی داشته و پرفورمنس محیط لینکوس را به طول قابل توجهی افزایش میدهد.
به طور کلی WSL به شما امکان میدهد روی ویندوز یک نسخه از لینوکس مثل Ubuntu یا CentOs نصب و اجرا کنید. در مقایسه با ابزاری مثل Virtual Box این کار راحت تر است و به منابع کمتری نیاز دارید.
در WSL1 دستورات Linux باید به Windows ترجمه میشد و بعد اجرا میشد اما در WSL2 هسته لینکوس به طور مجزا روی ویندوز نصب میشود و تنها نیاز به Hypvervisor جهت اجرا دارد که سربار به مراتب کمتری دارد.
با WSL2 می توانید عملا هر نرم افزار Linux را روی ویندوز اجرا کنید و این گزینه برای توسعه دهندگان نرم افزار میتواند ابزار خوبی باشد.
نسخه جدید Docker ویندوز هم روی WSL2 اجرا میشود.
با ADO.NET می توایند با دیتابیس ارتباط برقرار کنید و دیتای آن را بخوانید یا تغییر دهید. در این ویدیو نحوه استفاده از ADO.NET در یک پروژه ASP.NET Core آموزش داده میشود و سپس به مقایسه آن با EF Core 5.0 می پردازیم.
https://youtu.be/ik5rTMDsP_c
https://youtu.be/ik5rTMDsP_c