DotNet | دات نت
1.16K subscribers
670 photos
231 videos
485 files
718 links
تو این روزا بهتره که همیشه علم خودمون رو بالا ببریم و بتونیم با سریع ترین راه ممکن خودمونو بروز نگه داریم.
- سعی کنیم از کمترین امکانات بیشترین بهره رو ببریم
منتظرت هستیم😉
دنیا رو جای بهتری برای یادگیری کنیم 🌹
#course #book


🆔 @dotnetcode
Download Telegram
#سری_معرفی_وسایت_های_برتر

معرفی 10 سایت های برتر - سری اول
در مورد
#C و NET Core. و ASP.NET Core

🔶 اگه
مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم

🔷 یادتون نره واسه دوستانتون هم بفرستید✌️
1️⃣ https://exceptionnotfound.net/
2️⃣ https://www.talkingdotnet.com/
3️⃣ https://code-maze.com/
4️⃣ https://laurentkempe.com/
5️⃣ https://anthonygiretti.com/
6️⃣ https://michaelscodingspot.com/
7️⃣ https://www.meziantou.net/
8️⃣ https://mattwarren.org/
9️⃣ https://weblog.west-wind.com/
🔟 https://codewithshadman.com/
#سری_معرفی_وسایت_های_برتر

معرفی 10 سایت های برتر (سری دوم)
در مورد
#C و NET Core. و ASP.NET Core

🔶 اگه
مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم

🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://ardalis.com/blog
2️⃣ https://andrewlock.net/
3️⃣ https://www.stevejgordon.co.uk/
4️⃣ https://rehansaeed.com/
5️⃣ https://davepaquette.com/
6️⃣ https://ayende.com/blog/
7️⃣ https://www.carlrippon.com/
8️⃣ https://hamidmosalla.com/
9️⃣ https://khalidabuhakmeh.com/
🔟 https://www.strathweb.com/
_________________
تست کد های #C به صورت آنلاین

توی پست قبلی در مورد C# Interactive توضیح داده بودم الان میخوام روش آنلاینش رو بررسی کنیم.
واسه اینکار سایت های زیادی هست که امکان Syntax Highlighter و Run کردن کد رو بهتون میدن. با این ابزار ها میتونین کد سی شارپ تون رو انلاین و راحت تست کنین و یا کدتون رو با بقیه به اشتراک بگذارین

🔸اول از همه بهترینشون و با اختلاف فاحش، سایت SharpLab هست. امکانات فوق العاده ای داره، Intellisense خیلی قوی ایی داره که در نوع خودش واقعا بی نظیره، امکان Decompile کردن کد خروجی به IL و #C و حتی Jit Assembly رو بهتون میده. UX خوب و روون ایی داره و خیلی سریع، در لحظه کد رو اجرا میکنه.
https://sharplab.io/

🔹این سایت برای ویرایشگرش اش از پلاگین جاوااسکریپتی CodeMirror استفاده میکنه که یک Code Editor و Syntax Highlighter قوی هست و از تموم زبان ها پشتیبانی میکنه
مثلا اگه خواستین قابلیت اسکریپت نویسی و اجرای کد داینامیک رو برای پروژه تون اضافه کنین میتونین از این پلاگین استفاده کنین
https://github.com/codemirror/CodeMirror
[Demo] https://codemirror.net/

🔸 این سایت برای اجرای کد ها از Roslyn و برای Decompile کردنشون از ILSpy استاده میکنه که قوی ترین برنامه Decompiler دات نت هست و ابزار های حرفه دیگه از از جمله dnSpy از رو همین ساخته شدن

🔹سازنده این سایت اومده کل پکیج Code Editor سی شارپیش رو که بر روی CodeMirror و Roslyn ساخته شده رو به صورت سورس پاز تو گیتهاب گذاشته
بدین صورت مثلا میتونین یه ویرایشگر کامل سی شارپی به همراه Autocomplete واسه اسکریپت نویسی داینامیک به پروژه تون اضافه کنین
https://github.com/ashmind/mirrorsharp

🔰تنها ایرادی که سایت sharplab.io داره اینه که که امکان اضافه کردن Nuget Package به کد هاتون رو نداره
واسه همین یه سایت دیگه به نام NET Fiddle. هست (که البته به خوبی اون نیست ولی بعضی امکانات اضافه تر مثل همین nuget package داره)
https://dotnetfiddle.net/
اضافه شدن قابلیت Decompile کد های #C به VSCode

قابلیت Decompilation به افزونه مخصوص سی شارپ (OmniSharp) در VSCode اضافه شد. این امکان به واسطه کتابخانه قدرتمند ILSpy انجام شده

🔰برای فعال سازی اون کافیه

1️⃣ افزونه OmniSharp بروزرسانی بشه (با باز شدن VSCode خودش چک میکنه اگه ورژن جدید داشته باشه Update میکنه - بعدشم باید یه بار باز و بسته کنین VSCode رو)

2️⃣ سپس روی یه کلاسی که سورسش رو ندارین راست کلیک کنین و گزینه "Go to Definition" رو انتخاب کنین (بار اول یه سوال میپرسه که گزینه Yes رو انتخاب کنین)

3️⃣ و تامام، لذت ببرین

🔻در صورتی که براتون کار نکرد از بروز بودن OmniSharp و VSCode مطمئن بشین و شایدم لازم باشه این قابلیت رو دستی فعال کنین
____________________
DotNet | دات نت
Photo
مایکروسافت از انتشار رسمی فریم‌ورک Blazor WebAssembly خبر می‌دهد؛ Blazor WebAssembly قرار است در نقش جایگزین سیلورلایت ظاهر شود.

براساس اعلام پیشین، مایکروسافت قصد دارد در تاریخ ۱۲ اکتبر ۲۰۲۱ (۲۰ مهر ۱۴۰۰) به‌صورت رسمی به‌پشتیبانی از سیلورلایت (Microsoft Silverlight) پایان دهد. گرچه سیلورلایت هنوز هم تحت پشتیبانی مایکروسافت قرار دارد، اما روند توسعه‌ی فعال این ابزار چند سال است که متوقف شده. در حال حاضر سیلورلایت تنها روی مرورگر اینترنت اکسپلورر ۱۱ پشتیبانی می‌شود.

سیلورلایت به توسعه‌دهندگان امکان می‌دهد برای ساخت اپلیکیشن‌های دسکتاپ و وب اقدام کنند. مایکروسافت به توسعه‌دهندگان اپلیکیشن‌های دسکتاپ سیلورلایت پیشنهاد می‌کند به استفاده از APIهای UWP یا WPF در دات‌نت کُر (NET Core.) بپردازند. ازطرفی اهالی ردموند از توسعه‌دهندگان اپلیکیشن‌های تحت وب سیلورلایت می‌خواهند از فریم‌ورکی جدید با نام Blazor WebAssembly بهره بگیرند. در نظر داشته باشید که Blazor WebAssembly نسخه‌ی پیش‌نمایش نیست و به‌مرحله‌ی نهایی رسیده. درواقع امروزه می‌توان ازطریق Blazor WebAssembly به خلق اپلیکیشن‌های تحت وب پرداخت.

فریم‌ورک Blazor توسعه‌دهندگان را قادر می‌سازد برای تولید اپلیکیشن‌های تحت وب به‌جای جاوا اسکریپت از زبان برنامه‌نویسی سی‌شارپ (#C) استفاده کنند. ازطریق این فریم‌ورک همچنین امکان استفاده‌ی دوباره از کد سیلورلایت دات‌نت وجود دارد. افزون بر این موارد، اپلیکیشن‌های ساخته‌شده با فریم‌ورک Blazor از رابط کاربری تحت وب با قابلیت استفاده‌ی مجدد ساخته شده‌اند، خود اجزای رابط کاربری با بهره‌گیری از زبان‌های برنامه‌نویسی سی‌شارپ، HTML و CSS در اپلیکیشن جای داده می‌شوند. با درنظرگرفتن این حقیقت که هر دو کد کلاینت و سرور با استفاده از زبان سی‌شارپ نوشته شده‌اند، امکان به‌اشتراک‌گذاری کدها و کتاب‌خانه‌ها برای توسعه‌دهندگان فراهم می‌شود.
مایکروسافت در بخشی از اطلاعیه‌ی جدید خود می‌گوید: «Blazor را می‌توان یکی از قابلیت‌های ای‌اس‌پی‌دات‌نت (ASP.NET) به‌حساب آورد. ASP.NET فریم‌ورک محبوب توسعه‌ی وب است که قابلیت‌های پلتفرم توسعه‌ی دات‌نت را ازطریق ابزارها و کتاب‌خانه‌هایی جدید به‌منظور ساخت اپلیکیشن‌های تحت وب، گسترش می‌دهد».

براساس اطلاعات رسمی، Blazor نسبت‌به سیلورلایت دارای مزیت‌هایی است که در ادامه به تشریح آن‌ها می‌پردازیم:

Blazor بدون نیاز به پلاگین یا ترانسپایل‌کردن کد از استانداردهای بازِ وب استفاده می‌کند (ترانسپایل یا Transpile به‌اقدام برای تبدیل‌کردن کدِ نوشته‌شده در یک‌ زبان به کدی در زبان دیگر گفته می‌شود).
Blazor در تمامی مرورگرهای مدرن وب کار می‌کند که در بین آن‌ها حتی مرورگرهای موبایلی هم به‌چشم می‌خورند.
اپلیکیشن‌های ساخته‌شده با Blazor می‌توانند به‌لطف بهره‌مندی از ویژگی دات‌نت استاندارد (NET Standard.)، از کتاب‌خانه‌های فعلی دات‌نت هم بهره بگیرند.
کد سی‌شارپ شما می‌تواند به‌سادگی APIها و کتاب‌خانه‌های جاوا اسکریپت را فراخوانی کند. بدین ترتیب شما همچنان می‌توانید به استفاده از اکوسیستم بزرگ کتاب‌خانه‌های جاوا اسکریپت ادامه دهید.
ویژوال استودیو و ویژوال استودیو کد تجربه‌ی توسعه‌ی فوق‌العاده‌ای از Blazor را روی سیستم‌های عامل ویندوز، macOS و لینوکس ارائه می‌دهند.
دات‌نت رایگان است و این موضوع، Blazor را نیز شامل می‌شود. استفاده از Blazor هیچ هزینه‌ای ندارد، حتی برای اهداف تجاری.
محبوب ترین زبانهای برنامه نویسی

برنامه نویس ها ممکن است برای کار روزانه مجبور باشند از یک زبان یا تکنولوژی خاص استفاده کنند اما شبها وقت خود را با زبانی دوست دارند سرگرم می کنند.

در نظر سنجی 2020 سایت Stackoverflow همچنان Rust محبوب ترین زبان برنامه نویسی است که البته دلایل روشنی ندارد.

سال گذشته جایگاه دوم در اختیار پایتون بود که امسال یک پله سقوط کرده است و TypeScript جای آن را گرفته است.

نکته ی جالب TypeScript است که محصولی از مایکروسافت است و برای حل مشکلات استفاده از جاوا اسکریپت ابداع شده است. این زبان به مدیریت Anders Hejlsberg توسعه داده میشود که طراحی زبانهایی مانند Delphi و #C را در کارنامه خود دارد.

در حالی که سی شارپ با دو پله سعود به رده 8م لیست رسیده است جاوا نسبت به سال قبل تغییری نکرده و به نظر میرسد محبوبیت رو به رشدی نداشته باشد.

تاکید گوگل بر جایگزین کردن Kotlin بجای جاوا در توسعه اپ های اندروید می تواند یکی از عوامل کاهش رشد جاوا باشد. همچنین استفاده از جاوا دیگر رایگان نیست و شرکتها جهت استفاده از JDK باید لایسنس خریداری کنند.
شمارش خودکار ارجاع یا ARC روشی است که در زبانهایی مانند Objective-C و Swift برای مدیریت حافظه استفاده میشود.

در این روش پاکسازی حافظه یک شی زمانی انجام میشود که دیگر هیچ رفرنسی به آن داده نشده باشد.

در GC که #C و Java از آن استفاده میکنند پاکسازی حافظه در بازه های زمانی اتفاق می افتد و باعث مکث در برنامه میشود. همچنین هنگامی که حافظه سیستم پر میشود باید GC در بازه های زمانی کوتاهتر اجرا شود.

در ARC رفرنس های داده شده به شی یا گرفته شده از آن شمارش میشود و زمانی که تعداد آنها به صفر میرسد حافظه شی تخلیه میشود. این روش نیاز به الگوریتم ساده تری دارد و جایی که منابع حافظه محدود است (موبایل) کارایی بیشتری دارد.

اما ARC قادر به مدیریت Reference Cycle نیست یعنی زمانی که شی A فقط به شی B وابسته باشد و برعکس تعداد رفرنس ها هیچوقت صفر نمیشود و نیاز به مکانیزم بیرونی برای تشخیص و پاکسازی بوجود می آید در غیر این صورت Memory Leak پیش می آید.

همچنین دفعات زیاد رفرنس دهی یا حذف رفرنس از شی در ARC غیر بهینه عمل میکند. در حالی که در GC تاثیر نمیگذارد.

در iOS از نسخه 5 به بعد از ARC استفاده میشود.
تست کد های #C به صورت آنلاین

توی پست قبلی در مورد C# Interactive توضیح داده بودم الان میخوام روش آنلاینش رو بررسی کنیم.
واسه اینکار سایت های زیادی هست که امکان Syntax Highlighter و Run کردن کد رو بهتون میدن. با این ابزار ها میتونین کد سی شارپ تون رو انلاین و راحت تست کنین و یا کدتون رو با بقیه به اشتراک بگذارین

🔸اول از همه بهترینشون و با اختلاف فاحش، سایت SharpLab هست. امکانات فوق العاده ای داره، Intellisense خیلی قوی ایی داره که در نوع خودش واقعا بی نظیره، امکان Decompile کردن کد خروجی به IL و #C و حتی Jit Assembly رو بهتون میده. UX خوب و روون ایی داره و خیلی سریع، در لحظه کد رو اجرا میکنه.
https://sharplab.io/

🔹این سایت برای ویرایشگرش اش از پلاگین جاوااسکریپتی CodeMirror استفاده میکنه که یک Code Editor و Syntax Highlighter قوی هست و از تموم زبان ها پشتیبانی میکنه
مثلا اگه خواستین قابلیت اسکریپت نویسی و اجرای کد داینامیک رو برای پروژه تون اضافه کنین میتونین از این پلاگین استفاده کنین
https://github.com/codemirror/CodeMirror
[Demo] https://codemirror.net/

🔸 این سایت برای اجرای کد ها از Roslyn و برای Decompile کردنشون از ILSpy استاده میکنه که قوی ترین برنامه Decompiler دات نت هست و ابزار های حرفه دیگه از از جمله dnSpy از رو همین ساخته شدن

🔹سازنده این سایت اومده کل پکیج Code Editor سی شارپیش رو که بر روی CodeMirror و Roslyn ساخته شده رو به صورت سورس پاز تو گیتهاب گذاشته
بدین صورت مثلا میتونین یه ویرایشگر کامل سی شارپی به همراه Autocomplete واسه اسکریپت نویسی داینامیک به پروژه تون اضافه کنین
https://github.com/ashmind/mirrorsharp

🔰تنها ایرادی که سایت sharplab.io داره اینه که که امکان اضافه کردن Nuget Package به کد هاتون رو نداره
واسه همین یه سایت دیگه به نام NET Fiddle. هست (که البته به خوبی اون نیست ولی بعضی امکانات اضافه تر مثل همین nuget package داره)
https://dotnetfiddle.net/
____________________
#سری_معرفی_وسایت_های_برتر

معرفی 10 سایت های برتر (سری سوم)
در مورد
#C و NET Core. و ASP.NET Core

🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم

🔷 یادتون نره واسه رفقاتون بفرستید✌️
1️⃣ https://fullstackmark.com/
2️⃣ https://www.syncfusion.com/blogs/
3️⃣ https://weblog.west-wind.com/
4️⃣ https://www.blog.jamesmichaelhickey.com/
5️⃣ https://logcorner.com/
6️⃣ https://cmatskas.com/
7️⃣ https://www.tugberkugurlu.com/
8️⃣ https://dotnetcoretutorials.com/
9️⃣ https://damienbod.com/
🔟 https://chrissainty.com/
_____________
معرفی Design Pattern ها به همراه مثال در زبان های مختلف

یکی از بهترین سایت هایی که میشه به عنوان مرجع برای #DesignPattern ها بهش نگاه کرد سایت زیر هست.

این سایت خیلی روون و ساده الگو های برنامه نویسی رو توضیح داده، براشون مثال زده و توی زبان های مختلفی از جمله #C و JavaScript و Java و Python و ... پیاده سازیشون کرده

https://refactoring.guru/design-patterns/catalog

🔰2تا ریپوی زیر هم پیاده سازی ایی از این دیزاین پترن ها در سی شارپ هست
1️⃣ https://github.com/exceptionnotfound/DesignPatterns
2️⃣ https://github.com/HamidMosalla/CSharpDesignPatterns
_____________________
#سری_معرفی_وسایت_های_برتر

معرفی 10 سایت های برتر (سری چهارم)
در مورد
#C و NET Core. و ASP.NET Core

🔶 اگه مشتاق به یادگیری و مطالعه هستین این میتونه بهترین پست برای شما باشه. توی این سری پست ها هربار 10 وبسایت که از نظر سطح علمی و کیفیت محتوا، بروز و متنوع بودن بهترین هستند رو معرفی میکنم👌
اینا در واقع منابعی هستند که خودم معمولا دنبالشون میکنم

🔷 یادتون نره واسه رفقاتون بفرستید✌️

1️⃣ https://www.dotnetcurry.com/
2️⃣ https://referbruv.com/blog/
3️⃣ https://codingsight.com/
4️⃣ https://www.danylkoweb.com/
5️⃣ https://buildplease.com/
6️⃣ https://www.binaryintellect.net/
7️⃣ https://ranjeet.dev/
8️⃣ https://dontcodetired.com/blog
9️⃣ https://gunnarpeipman.com/
🔟 https://codeopinion.com/
_________________
قابلیت Decompile کد های #C در Visual Studio

قبلا در مورد اضافه شدن قابلیت Decompile کد های سی شارپ در VSCode (https://t.iss.one/DotNetZoom/944) توسط ILSpy گفته بودیم

این قابلیت برای Visual Studio هم وجود داره اما در حالت پیش نمایش هست و به صورت پیشفرض فعال نیست

جهت فعال سازی این قابلیت باید از منو Tools گزینه Options را انتخاب کرده و از قسمت Text Editor > C# > Advanced گزینه Enable navigation to decompiled sources رو تیک بزنین

بعد از فعال سازی روی کلاس/متدی که سورسش رو ندارین راست کلید و گزینه "Go to Definition" رو انتخاب کنین براتون Decompile کنه و کدشو نشونتون بده

این امکان هم توسط کتابخانه معروف ILSpy انجام شده و بار اولی که ازش استفاده کنین یه سوال (در مورد قبول License کتابخونه ILSpy) میپرسه که گزینه Yes رو باید بزنین

جهت استفاده از این قابلیت باید حداقل ویژوال استادیو 2019 نسخه 16.5 به بالا نصب داشته باشین (از منوی Help گزینه Check for Update میتونین چک کنین)
تست کد های #C به صورت آنلاین

توی پست قبلی در مورد C# Interactive توضیح داده بودم الان میخوام روش آنلاینش رو بررسی کنیم.
واسه اینکار سایت های زیادی هست که امکان Syntax Highlighter و Run کردن کد رو بهتون میدن. با این ابزار ها میتونین کد سی شارپ تون رو انلاین و راحت تست کنین و یا کدتون رو با بقیه به اشتراک بگذارین

🔸اول از همه بهترینشون و با اختلاف فاحش، سایت SharpLab هست. امکانات فوق العاده ای داره، Intellisense خیلی قوی ایی داره که در نوع خودش واقعا بی نظیره، امکان Decompile کردن کد خروجی به IL و #C و حتی Jit Assembly رو بهتون میده. UX خوب و روون ایی داره و خیلی سریع، در لحظه کد رو اجرا میکنه.
https://sharplab.io/

🔹این سایت برای ویرایشگرش اش از پلاگین جاوااسکریپتی CodeMirror استفاده میکنه که یک Code Editor و Syntax Highlighter قوی هست و از تموم زبان ها پشتیبانی میکنه
مثلا اگه خواستین قابلیت اسکریپت نویسی و اجرای کد داینامیک رو برای پروژه تون اضافه کنین میتونین از این پلاگین استفاده کنین
https://github.com/codemirror/CodeMirror
[Demo] https://codemirror.net/

🔸 این سایت برای اجرای کد ها از Roslyn و برای Decompile کردنشون از ILSpy استاده میکنه که قوی ترین برنامه Decompiler دات نت هست و ابزار های حرفه دیگه از از جمله dnSpy از رو همین ساخته شدن

🔹سازنده این سایت اومده کل پکیج Code Editor سی شارپیش رو که بر روی CodeMirror و Roslyn ساخته شده رو به صورت سورس پاز تو گیتهاب گذاشته
بدین صورت مثلا میتونین یه ویرایشگر کامل سی شارپی به همراه Autocomplete واسه اسکریپت نویسی داینامیک به پروژه تون اضافه کنین
https://github.com/ashmind/mirrorsharp

🔰تنها ایرادی که سایت sharplab.io داره اینه که که امکان اضافه کردن Nuget Package به کد هاتون رو نداره
واسه همین یه سایت دیگه به نام NET Fiddle. هست (که البته به خوبی اون نیست ولی بعضی امکانات اضافه تر مثل همین nuget package داره)
https://dotnetfiddle.net/
____________________
❇️ مهم ترین اخبار رویداد NET Conf. با موضوع Focus on Blazor

چند وقت پیش رویداد یک روزه دات نت کانف با محوریت تمرکز بر روی Blazor برگزار شد و اخبار و آموزش های جدید در اون منتشر شد از جمله :

🔶 معرفی امکانات جدید
امکانات جدیدی که قرار است تا ماه May به Blazor WebAssembly (همان Client-Side Blazor سابق) اضافه شود
https://gunnarpeipman.com/focus-on-blazor-announcements/

🔷 معرفی نمونه پروژه ای از ترکیب Blazor + Electron
که امکان ساخت برنامه های مدرن و سریع Desktop ایی به صورت Cross-Platform توسط Blazor و تکنولوژی های Web ایی را فراهم می سازد (توضیحات بیشتر)
ریپازیتوری گیتهاب :
https://aka.ms/blazorelectron

🔶معرفی نمونه پروژه ای از ترکیب Blazor + WebWindow
که امکان ساخت برنامه های مانند پروژه قبلی را فراهم می سازد با این تفاوت که سبک تر است و حجم کمتری دارد. WebWindow یک پروژه (در حال حاضرآزمایشی) است که توسط Steve Sanderson خالق Blazor ساخته شده و جایگزین الکترون برای برنامه‌های NET Core. خواهد شد و نسبت به الکترون سبک تر و کم حجم تر است.
https://aka.ms/webwindow

🔷معرفی پروژه Mobile Blazor Bindings
که امکان ساخت برنامه های Native موبایل را توسط Razor و #C و CSS فراهم می سازد. همچنین به کامپوننت های بومی موبایل مانند GPS و Media دسترسی دارد. در این روش از کامپوننت های مبنی بر Xamarin Forms استفاده می شود
اطلاعات بیشتر و نمونه اپ های ساخته شده
https://devblogs.microsoft.com/aspnet/mobile-blazor-bindings-experiment/
https://docs.microsoft.com/en-us/mobile-blazor-bindings/
https://github.com/xamarin/MobileBlazorBindings

🔶امکان تست نویسی برای Blazor
قابلیت Unit Test نویسی برای کامپوننت های Blazor هم اکنون در حد نمونه اولیه پیاده سازی شده است و به زودی تکمیل می شود
اطلاعات بیشتر و ریپازیتوری کتابخانه مربوطه
https://blog.stevensanderson.com/2019/08/29/blazor-unit-testing-prototype/
https://github.com/egil/razor-components-testing-library

🔷کاهش حجم برنام های Blazor WebAssembly
توسط قابلیت Assembly trimming می توان حجم خروجی برنامه های Blazor WebAssembly را کاهش داد. به طور مثال حجم نسخه پیشفرض فعلی یک اپ Blazor WebAassembly حدود 2 مگابایت است که تیم Blazor وعده داده در انتشار ماه May سال جاری، حجم آن را تا 1.5 مگابایت کاهش دهد.
وب اسمبلی (WebAssembly) چیه؟ و چرا آینده Web هست؟!

وب اسمبلی (یا WASM مخفف WebAssembly) یک زبان low-level (سطح پایین) با فرمت Binary (دو-دویی) هست که توسط مرورگر اجرا میشه

🔸در اینجا چندتا نکته مهم وجود داره:
1️⃣ اول اینکه یه زبان سطح-پایین هست و با پرفرمنسی نزدیک به Native اجرا میشه (اصلا یکی از اهداف اصلی ایجاد WASM اجرا سریع تر کدها توی مروگر بود)

2️⃣ برخلاف js به جای اینکه فرمت متنی داشته باشه، فرمت باینری (دو-دویی) داره که باعث میشه کد حجم کمتری داشته باشه در نتیجه این به معنی بارگزاری سریع تر نیز هست
در واقع وقتی کدی قراره human-readable باشه حجم بیشتری میگیره تا اینکه باینری باشه. مشابه این اتفاق برای سریالایز کردن به json در مقایسه با binary formatter هایی مانند protobuf و message-pack هم اتفاق میافته. ضمن اینکه کدی که به صورت باینری باشه امکان فشرده سازی بیشتر و بهینه تری داره

3️⃣ علاوه بر حالت باینری، یه حالت متنی (به صورت S-expression) هم داره که human-readable هست و قابلیت دیباگ و خوانایی خوبی داره
این فرمت در قالب فایل های با پسوند wat. یا wast. ذخیره میشه که میتونین نمونه کدش رو اینجا ببینین (البته در گذشته این دو معادل هم بودند ولی جدیدا بیشتر wat. برای اینکار استفاده میشه)

4️⃣ گرچه در ابتدا WASM برای اجرا توی مروگر طراحی شده بود ولی بعد ها توی پلتفرم های دیگه هم مورد استقبال قرار گرفت و یه سری Runtime هایی (مانند wasmer و wasmtime) براش نوشته شد که این امکان رو میده که برنامه های WASM رو توی Desktop و IoT و Server و... اجرا بشن

5️⃣ این زبان در کنار خودش یه سری کامپایلر (از جمله emscripten و binaryen) ارائه داده تا زبان های low-level ایی همچون C و ++C و Rust بتونن کدشون رو به WASM کامپایل کنن
زبان های دیگه هم از جمله #C و Java و Python و Go به این سمت حرکت کردن و امکان اجرای کد هاشون رو توی مرورگر فراهم کردند
به عنوان مثال Blazor امکان اجرا کد های #C رو در مرورگر فراهم میکنه
مزیت این روش اینه که شما به زبون های دلخواه خودتون میتونین کدی بنویسین که توی مرورگر اجرا بشه. یعنی اصلا نیاز نیس زبان WASM رو بلد باشین.

🔹حالا سوال مهم اینه که این زبان جای JavaScript رو میگیره؟
جواب: نه، اصلا نمیتونه. WASM اومده که مکمل JS باشه و ضعف های اون رو برطرف کنه
زبان JS تو پلتفرم های زیادی استفاده میشه و جامعه بسیار بزرگی داره پس نه WASM نه هیچ زبان دیگه ای نمی تونه اون رو کنار بزنه (حداقل به این زودی ها نه)
در واقع تنها مزیت منحصر به فرد JS سمت Front بود که تنها پادشاه سمت مرورگر بود. ولی الان که امکان اجرای زبان های دیگه سمت مرورگر فراهم شده عملا راه برای ظهور پادشاه های دیگری هم فراهم شده
یکی از کارهای دیگری که در این زمینه انجام شده AssemblyScript هست که در واقع یک کامپایلر TypeScript به WASM هست که سینتکس کدش کاملا TS نیست ولی شبیه اونه و نهایتا کد های شما رو به WASM کامپایل میکنه

🔸در آخر نکته مهم اینه که که بدونین این تکنولوژی محکوم به اینه که آینده وب باشه!
یعنی حتی اگه این زبان از خودش هیچ آورده ای هم نداشته باشه بازم مسیر توسعه وب در آینده به سمت اون هدایت میشه (توسط دست های پشت پرده :دی) .
چرا؟ چون توسط بنیاد W3C (کنسرسیوم جهانی وب) به عنوان یه استاندارد شناخته شده و نیز شرکتای غولی همچون Google و Microsoft و Mozilla و Apple و Intel و Red Hat و... روش سرمایه گذاری شده
میگن اگه میخوای پیش گوی خوبی باشی، آینده رو پیش بینی نکن، اون رو بساز. و این ها در واقع کسانی هستند که مسیر توسعه وب رو پیش بینی نمیکنند بلکه اون رو خودشون میسازند