نگاشت خودکار اشیاء توسط #AutoMapper و #Reflection - ایده شماره 1
لینک مقاله :
https://www.dotnettips.info/post/2983
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
لینک مقاله :
https://www.dotnettips.info/post/2983
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
.NET Tips
نگاشت خودکار اشیاء توسط AutoMapper و Reflection - ایده شماره 1
آموزش کامل AutoMapper قبلا در سایت ارائه شده است. در این مقاله میخواهیم Mapping نوعهای مختلف بین Dto و Entityهای پروژه را توسط Reflection به صورت خودکار انجام دهیم. سورس کامل مثال را میتوانید در این ریپازیتوری مشاهده کنید. در این روش ما یک کلاس…
#فیسبوک، الگوریتم #فشرده_سازی خود را در گیتهاب عمومی کرد
پروژه #Zstandard یا به اختصار zstd یک الگوریتم فشرده سازی بدون افت کیفیت با سرعت بالا است که فیسبوک آن را توسعه داده و برای مصارف خود مانند فشرده سازی دیتا و تصاویر و... استفاده میکرد و به تازگی سورس آن را به صورت متن باز منتشر کرده است
توضیحات بیشتر + بنچمارک :
https://facebook.github.io/zstd/
بنچمارک مقایسه zstd با الگوریتم های هم رده دیگه، نشون میده این الگوریتم دارای بیشترین میزان فشرده سازی (Compress Ratio) و سرعت نسبتا خوبی است.
در واقع از جمله سریع ترین الگوریتم ها می توان به LZ4 و برای قوی ترین الگوریتم فشرده سازی به LZMA اشاره کرد ولی الگوریتم Zstd تعادلی میان این دو است.
لینک ریپازیتوری :
https://github.com/facebook/zstd
این کتابخانه با زبان C نوشته شده است و چندین API جهت استفاده دارد. همچنین Wrapper هایی به زبان های زبادی از جمله C#, Java, PHP, Python, NodeJs و ... برای استفاده از API های این کتابخانه فراهم شده است.
در پست بعدی به معرفی کتابخانه های دات نتی آن و ابزار های استفاده از این الگوریتم می پردازیم.
@IranAspMvc
پروژه #Zstandard یا به اختصار zstd یک الگوریتم فشرده سازی بدون افت کیفیت با سرعت بالا است که فیسبوک آن را توسعه داده و برای مصارف خود مانند فشرده سازی دیتا و تصاویر و... استفاده میکرد و به تازگی سورس آن را به صورت متن باز منتشر کرده است
توضیحات بیشتر + بنچمارک :
https://facebook.github.io/zstd/
بنچمارک مقایسه zstd با الگوریتم های هم رده دیگه، نشون میده این الگوریتم دارای بیشترین میزان فشرده سازی (Compress Ratio) و سرعت نسبتا خوبی است.
در واقع از جمله سریع ترین الگوریتم ها می توان به LZ4 و برای قوی ترین الگوریتم فشرده سازی به LZMA اشاره کرد ولی الگوریتم Zstd تعادلی میان این دو است.
لینک ریپازیتوری :
https://github.com/facebook/zstd
این کتابخانه با زبان C نوشته شده است و چندین API جهت استفاده دارد. همچنین Wrapper هایی به زبان های زبادی از جمله C#, Java, PHP, Python, NodeJs و ... برای استفاده از API های این کتابخانه فراهم شده است.
در پست بعدی به معرفی کتابخانه های دات نتی آن و ابزار های استفاده از این الگوریتم می پردازیم.
@IranAspMvc
معرفی برنامه ها و کتابخانه های دات نتی جهت استفاده از الگوریتم فشرده سازی #Zstandard
نسخه مخصوص برنامه 7zip با پشتیبانی از الگوریتم #Zstd و چندین الگوریتم دیگر : Brotli, Fast-LZMA2, Lizard, LZ4, LZ5
لینک ریپازیتوری پروژه (شامل بنچمارک الگوریتم ها) و دانلود نسخه 64 بیتی
https://github.com/mcmilk/7-Zip-Zstd
و یا پلاگین مخصوص 7zip جهت استفاده از Zstd
https://www.tc4shell.com/en/7zip/modern7z/
2 کتابخانه سی شارپی جهت استفاده از Zstd در دات نت
https://github.com/skbkontur/ZstdNet
https://github.com/bp74/Zstandard.Net
طرز کارشون به این صورته که آرایه ای از byte ها رو دریافت کرده و فشرده سازی میکنن. مثال کامل هم داخلش هست
شما میتونین تصاویر یا فایل هایی که میخواین ذخیره کنین (چه توی دیتابیس و چه توی هارد) رو byte[] اش رو بخونین، فشرده کنین و سپس ذخیره کنین
@IranAspMvc
نسخه مخصوص برنامه 7zip با پشتیبانی از الگوریتم #Zstd و چندین الگوریتم دیگر : Brotli, Fast-LZMA2, Lizard, LZ4, LZ5
لینک ریپازیتوری پروژه (شامل بنچمارک الگوریتم ها) و دانلود نسخه 64 بیتی
https://github.com/mcmilk/7-Zip-Zstd
و یا پلاگین مخصوص 7zip جهت استفاده از Zstd
https://www.tc4shell.com/en/7zip/modern7z/
2 کتابخانه سی شارپی جهت استفاده از Zstd در دات نت
https://github.com/skbkontur/ZstdNet
https://github.com/bp74/Zstandard.Net
طرز کارشون به این صورته که آرایه ای از byte ها رو دریافت کرده و فشرده سازی میکنن. مثال کامل هم داخلش هست
شما میتونین تصاویر یا فایل هایی که میخواین ذخیره کنین (چه توی دیتابیس و چه توی هارد) رو byte[] اش رو بخونین، فشرده کنین و سپس ذخیره کنین
@IranAspMvc
نگاشت خودکار اشیاء توسط #AutoMapper و #Reflection - ایده شماره 2
لینک مقاله :
https://www.dotnettips.info/post/2988
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
- در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط Reflection به صورت خودکار انجام میشد.
- در این قسمت میخواهیم مکانیزم Mapping خودکار را کمی تغییر داده و قابلیت سفارشی سازی Mappingها را نیز فراهم کنیم.
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
لینک مقاله :
https://www.dotnettips.info/post/2988
لینک ریپازیتوری :
https://github.com/mjebrahimi/auto-mapping
- در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط Reflection به صورت خودکار انجام میشد.
- در این قسمت میخواهیم مکانیزم Mapping خودکار را کمی تغییر داده و قابلیت سفارشی سازی Mappingها را نیز فراهم کنیم.
#پیشنهاد میکنم حتما بخونین و لذت ببرین :)
@IranAspMvc
.NET Tips
نگاشت خودکار اشیاء توسط AutoMapper و Reflection - ایده شماره 2
پیش نیاز این مطلب، قسمت قبل آن است. در قسمت قبل، یک کلاس جنریک را به نام BaseDto ایجاد کردیم که با ارث بری Dtoهای پروژه از این کلاس، علاوه بر متدهای ToEntity و FromEntity جهت ساده سازی عملیات نگاشت، Mappingهای لازم بین Dtoها و Entityهای مربوطه، توسط…
پروژه ای جهت پیاده سازی ایده های خلاقانه در ASPNET Core
https://github.com/aspnet/Entropy/
بررسی سورس کد این پرژه، ایدههای بسیار جالبی به شما میدهد. پیشنهاد میکنم حتما کد هاشو بررسی کنید. نکات آموزشی زیادی داخل هست.
چند پروژه منتخب :
- پروژه Mvc.GenericControllers : ساخت کنترولر برای Entityها بدون کدنویسی!
- پروژه Mvc.CustomRoutingConvention : مسیریابی بر اساس namespace کنترولرها
- پروژه Localization.EntityFramework : مدیریت منابع چند زبانگی توسط EntityFramework
@IranAspMvc
https://github.com/aspnet/Entropy/
بررسی سورس کد این پرژه، ایدههای بسیار جالبی به شما میدهد. پیشنهاد میکنم حتما کد هاشو بررسی کنید. نکات آموزشی زیادی داخل هست.
چند پروژه منتخب :
- پروژه Mvc.GenericControllers : ساخت کنترولر برای Entityها بدون کدنویسی!
- پروژه Mvc.CustomRoutingConvention : مسیریابی بر اساس namespace کنترولرها
- پروژه Localization.EntityFramework : مدیریت منابع چند زبانگی توسط EntityFramework
@IranAspMvc
تقویم شمسی، قمری و میلادی به همراه انتخابگر زمان و تاریخ برای Kendo UI
https://github.com/kitcat2014/KendoUI_Gregorian-Persian-Hijri_Calendar-DatePicker-TimePicker
_______________
@IranAspMvc
https://github.com/kitcat2014/KendoUI_Gregorian-Persian-Hijri_Calendar-DatePicker-TimePicker
_______________
@IranAspMvc
This media is not supported in your browser
VIEW IN TELEGRAM
#آیا_میدانستید
آیا میدانستید اگر در یک ریپازیتوری Github، دکمه "T" را فشار دهید، صفحه ای برای جستجوی فایل ها بر اساس "نام و مسیر" برای شما باز میشود؟
بدون شک این راحت ترین و سریع ترین راه جستجوعه برای زمانی که میدونین دنبال چه فایلی میگردین😎
@IranAspMvc
آیا میدانستید اگر در یک ریپازیتوری Github، دکمه "T" را فشار دهید، صفحه ای برای جستجوی فایل ها بر اساس "نام و مسیر" برای شما باز میشود؟
بدون شک این راحت ترین و سریع ترین راه جستجوعه برای زمانی که میدونین دنبال چه فایلی میگردین😎
@IranAspMvc
معرفی کتابخانه EFCore.BulkExtensions
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
در حالت عادی (متد Add و یا AddRange)، رکورد های شما به صورت تکی Insert میشه و سرعت بالایی نداره، بر خلافش اما، در روش Bulk Insert، همه رکورد ها به صورت یکجا Insert میشن و سرعت بسیار بسیار بالایی داره این روش (حتی تا 20 برابر سریع تر!)
این کتابخونه بی نظیر، قابلیت انجام عملیات Bulk و Batch رو در EF Core فراهم میکنه و از async هم پیشتیبانی میکنه :
- Bulk operations (Insert, Update, Delete, Read, Upsert, Sync)
- Batch operations (Delete, Update)
* برای مقایسه پرفرمنس و تفاوت سرعت بین روش عادی و Bulk هم تصویر پست گویای همه چی هست
لینک ریپازیتوری + مثال و توضیحات :
https://github.com/borisdj/EFCore.BulkExtensions
#Bulk #EFCore #Performance
@IranAspMvc
در سری #معرفی_اکستنشن_های_کاربردی_EFCore
Entity Framework Core Bulk Batch Extensions for Insert Update Delete and Read (CRUD) operations on SQL Serverخیلی وقتا نیاز میشه یک مرتبه حجم زیادی از رکورد ها رو توسط EFCore ذخیره کنین (مثلا import کردن از یه فایل excel)
در حالت عادی (متد Add و یا AddRange)، رکورد های شما به صورت تکی Insert میشه و سرعت بالایی نداره، بر خلافش اما، در روش Bulk Insert، همه رکورد ها به صورت یکجا Insert میشن و سرعت بسیار بسیار بالایی داره این روش (حتی تا 20 برابر سریع تر!)
این کتابخونه بی نظیر، قابلیت انجام عملیات Bulk و Batch رو در EF Core فراهم میکنه و از async هم پیشتیبانی میکنه :
- Bulk operations (Insert, Update, Delete, Read, Upsert, Sync)
- Batch operations (Delete, Update)
* برای مقایسه پرفرمنس و تفاوت سرعت بین روش عادی و Bulk هم تصویر پست گویای همه چی هست
لینک ریپازیتوری + مثال و توضیحات :
https://github.com/borisdj/EFCore.BulkExtensions
#Bulk #EFCore #Performance
@IranAspMvc
دانلود کتاب رایگان TypeScript for C# Programmers به صورت PDF
لینک دانلود :
https://ufile.io/ydp6c
@IranAspMvc
لینک دانلود :
https://ufile.io/ydp6c
@IranAspMvc
Forwarded from سفر کهکشان با ابوراجا :)
مجموعه آموزش ویدئویی فارسی زامارین اندروید به صورت رایگان منتشر شد. از طریق لینک زیر می تونید همه قسمت ها را آنلاین ببینید یا دانلود کنید.
مدرس: ابوالفضل رجب پور
https://rajabpour.net/?p=81
سرفصل ها:
۰- مقدمه ای بر زامارین Xamarin
۱- چرا زامارین مهم است – یک داستان واقعی
۲- آموزش نصب زامارین در ویژوال استودیو – قسمت اول
۲- آموزش نصب زامارین در ویژوال استودیو – قسمت دوم
۳- نصب شبیه ساز جنی موشن Genymotion
۴- ساخت یک برنامه ساده
۵- پلتفرم زامارین
۶- ساختار یک برنامه اندروید
۷- کنترل های طراحی صفحات در اندروید
۸- ساختار پروژه فروشگاه کتاب
۹- ساخت صفحه نمایش جزئیات کتاب
۱۰- متصل کردن دیتا به صفحه نمایش کتاب
۱۱- ساخت یک لیست ویو ساده listview
۱۲- ساخت لیست ویو سفارشی custom listview
۱۳- انتقال دیتا بین اکتیویتی ها
۱۴- ساخت یک وب سرویس rest در asp.net
۱۵- فراخوانی وب سرویس rest در زامارین
۱۶- ذخیره سازی دیتای ساده در زامارین
۱۷- ذخیره سازی دیتا در زامارین با استفاده از sqlite
۱۸- صفحه ثبت نام و سفارش کتاب
۱۹- سبک متریال دیزاین اندروید material design
۲۰- کار با دفترچه تلفن در اندروید
۲۱- ارسال پیامک از طریق کد و دریافت پیام
۲۲- کار با گالری تصویر در اندروید
۲۳- انتشار برنامه اندروید در کافه بازار
#آموزش #فارسی #زامارین #اندروید
مدرس: ابوالفضل رجب پور
https://rajabpour.net/?p=81
سرفصل ها:
۰- مقدمه ای بر زامارین Xamarin
۱- چرا زامارین مهم است – یک داستان واقعی
۲- آموزش نصب زامارین در ویژوال استودیو – قسمت اول
۲- آموزش نصب زامارین در ویژوال استودیو – قسمت دوم
۳- نصب شبیه ساز جنی موشن Genymotion
۴- ساخت یک برنامه ساده
۵- پلتفرم زامارین
۶- ساختار یک برنامه اندروید
۷- کنترل های طراحی صفحات در اندروید
۸- ساختار پروژه فروشگاه کتاب
۹- ساخت صفحه نمایش جزئیات کتاب
۱۰- متصل کردن دیتا به صفحه نمایش کتاب
۱۱- ساخت یک لیست ویو ساده listview
۱۲- ساخت لیست ویو سفارشی custom listview
۱۳- انتقال دیتا بین اکتیویتی ها
۱۴- ساخت یک وب سرویس rest در asp.net
۱۵- فراخوانی وب سرویس rest در زامارین
۱۶- ذخیره سازی دیتای ساده در زامارین
۱۷- ذخیره سازی دیتا در زامارین با استفاده از sqlite
۱۸- صفحه ثبت نام و سفارش کتاب
۱۹- سبک متریال دیزاین اندروید material design
۲۰- کار با دفترچه تلفن در اندروید
۲۱- ارسال پیامک از طریق کد و دریافت پیام
۲۲- کار با گالری تصویر در اندروید
۲۳- انتشار برنامه اندروید در کافه بازار
#آموزش #فارسی #زامارین #اندروید
خااااار و مادر سرعت توی عملیات Linq با کتابخانه LinqFaster !
این کتابخانه با استفاده از تکنولوژی SIMD (ساده بگم : پردازش برداری موازی و فوق سریع) و پردازش موازی با Multi-Threading اومده و متد های کمکی مشابه ایی نوشته که عملیات Linq رو با سرعت بالا و مصرف حافظه کمتر انجام میده.
فقط کافیه بنچمارک رو توی تصویر ببینین :)
LinqFaster
متدهای کمکی Linq با پرفرمنس بالا
https://www.nuget.org/packages/LinqFaster/
LinqFaster.SIMD
متدهای کمکی Linq با پرفرمنس بالا با استفاده از تکنولوژی SIMD
https://www.nuget.org/packages/LinqFaster.SIMD/
LinqFaster.Parallel
متدهای کمکی Linq با پرفرمنس بالا با استفاده از پردازش موازی/Multi-Threading
https://www.nuget.org/packages/LinqFaster.Parallel/
LinqFaster.SIMD.Parallel
متدهای کمکی Linq با پرفرمنس بالا با استفاده از تکنولوژی SIMD و پردازش موازی/Multi-Threading
https://www.nuget.org/packages/LinqFaster.SIMD.Parallel/
لینک ریپازیتوری :
https://github.com/jackmott/LinqFaster
#Linq #Performance
@IranAspMvc
این کتابخانه با استفاده از تکنولوژی SIMD (ساده بگم : پردازش برداری موازی و فوق سریع) و پردازش موازی با Multi-Threading اومده و متد های کمکی مشابه ایی نوشته که عملیات Linq رو با سرعت بالا و مصرف حافظه کمتر انجام میده.
فقط کافیه بنچمارک رو توی تصویر ببینین :)
LinqFaster
متدهای کمکی Linq با پرفرمنس بالا
https://www.nuget.org/packages/LinqFaster/
LinqFaster.SIMD
متدهای کمکی Linq با پرفرمنس بالا با استفاده از تکنولوژی SIMD
https://www.nuget.org/packages/LinqFaster.SIMD/
LinqFaster.Parallel
متدهای کمکی Linq با پرفرمنس بالا با استفاده از پردازش موازی/Multi-Threading
https://www.nuget.org/packages/LinqFaster.Parallel/
LinqFaster.SIMD.Parallel
متدهای کمکی Linq با پرفرمنس بالا با استفاده از تکنولوژی SIMD و پردازش موازی/Multi-Threading
https://www.nuget.org/packages/LinqFaster.SIMD.Parallel/
لینک ریپازیتوری :
https://github.com/jackmott/LinqFaster
#Linq #Performance
@IranAspMvc
کتابخانه EasyCaching : قابلیت Caching با امکانات زیاد اما یکپارچه و آسان!
https://github.com/dotnetcore/EasyCaching
این کتابخانه، تکنولوژیها و کتابخانههای زیر را در راستای ایجاد یک Caching کامل و با امکانات زیاد، یکپارچه کرده و استفاده از آنها را آسان میکند.
Caching Providers
- Memory
- Redis
- SQLite
- Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
Serializer Extensions
- BinaryFormatter
- MessagePack
- Json
- ProtoBuf
Caching Interceptor
- AspectCore
- Castle
Caching Bus
- Redis
- RabbitMQ
_______________
@IranAspMvc
https://github.com/dotnetcore/EasyCaching
این کتابخانه، تکنولوژیها و کتابخانههای زیر را در راستای ایجاد یک Caching کامل و با امکانات زیاد، یکپارچه کرده و استفاده از آنها را آسان میکند.
Caching Providers
- Memory
- Redis
- SQLite
- Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
Serializer Extensions
- BinaryFormatter
- MessagePack
- Json
- ProtoBuf
Caching Interceptor
- AspectCore
- Castle
Caching Bus
- Redis
- RabbitMQ
_______________
@IranAspMvc
کتابخانه EasyCaching : قابلیت #Caching با امکانات زیاد اما یکپارچه و آسان!
https://github.com/dotnetcore/EasyCaching
این کتابخانه، تکنولوژیها و کتابخانههای زیر را در راستای ایجاد یک Caching کامل و با امکانات زیاد، یکپارچه کرده و استفاده از آنها را آسان میکند.
Caching Providers
- #Memory
- #Redis
- SQLite
- #Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
Serializer Extensions
- BinaryFormatter
- #MessagePack
- Json
- #ProtoBuf
Caching Interceptor
- AspectCore
- Castle
Caching Bus
- #Redis
- #RabbitMQ
_______________
@IranAspMvc
https://github.com/dotnetcore/EasyCaching
این کتابخانه، تکنولوژیها و کتابخانههای زیر را در راستای ایجاد یک Caching کامل و با امکانات زیاد، یکپارچه کرده و استفاده از آنها را آسان میکند.
Caching Providers
- #Memory
- #Redis
- SQLite
- #Memcached
- Hybrid(Combine local caching and distributed caching)
- Disk
Serializer Extensions
- BinaryFormatter
- #MessagePack
- Json
- #ProtoBuf
Caching Interceptor
- AspectCore
- Castle
Caching Bus
- #Redis
- #RabbitMQ
_______________
@IranAspMvc
GitHub
GitHub - dotnetcore/EasyCaching: :boom: EasyCaching is an open source caching library that contains basic usages and some advanced…
:boom: EasyCaching is an open source caching library that contains basic usages and some advanced usages of caching which can help us to handle caching more easier! - dotnetcore/EasyCaching
منتشر شد .NET Core 3 Preview 2
بررسی تغییرات و قابلیت های مهم :
1- پشتیبانی از قابلیت های جدید سی شارپ 8
- قابلیت Using Declarations :
توسط این قابلیت میتونین متغیر های Disposable تون رو به صورت using توی یک بلاک scope تعریف کنین و قتی اون بلاک به اتمام رسید، اون متغیر هم به صورت خودکار Dispose میشه
این قابلیت امکان تعریف راحت تر و هوشمندانه تر دستور switch رو مشابه سینتکس lambda expression را برای ما فراهم میکنه.
محدودیت قابلیت await/async این بود که در آن نمی شد لیستی از مقادیر رو به صورت yield باز گردوند. این محدودیت توسط قابلیت Async streams برطرف شده و شما میتونین همزمان هم از yield return و در نتیجه گرفتن خروجی به صورت lazy توی IEnumerable استفاده کنین و هم از async
- قابلیت های سی شارپ 8 در آینده به تفصل مورد بررسی قرار خواهند گرفت
2- اضافه شدن Json Seralizer داخلی بسیار سریع
در راستای حذف وابستگی JsonNET - Newtonsoft از ASP Core و جایگزین کردن آن با یک Json Serializer داخلی سبک و سریع، کلاس های Utf8JsonWriter و JsonDocument اضافه شده اند.
کلاس Utf8JsonWriter که برای Serialize کردن استفاده میشه نسبت به مشابه اون در JsonNET، افزایش پرفرمنس 30 تا 80 درصدی را (بدون تخصیص حافظه) به همراه داشته.
و کلاس JsonDocument که برای Desrialize/Parse کردن استفاده میشه نیز نسبت به مشابه آن در JsonNET بین 2 تا 3 برابر سریع تره و حافظه کمتری تخصیص میکنه.
3- بهبود محاسبات اعداد اعشاری!
در راستای مطابقت با استاندارد IEEE 754-2008 revision (که درباره عملیات های مربوط به محاسبات اعداد اعشاری است) بهبود هایی انجام گرفته و چندین api محاسبات ریاضی جدید هم اضافه شده.
4- پیشتبانی بیشتر از CPU instruction sets
مجموعه ای دستور العمل هایی برای CPU (مانند SIMD یا Bit Manipulation) وجود دارند که در بعضی سناریو های خاص مانند پردازش موازی یا... ،پرفرمنس را به شدت افزایش میدهند که در این ورژن پشتیبانی بیشتری از آنها انجام شده است.
لیست تغییرات خیلی بیشتره میتونین از لینک زیر مطالعه کنین.
توضیحات بیشتر :
https://blogs.msdn.microsoft.com/dotnet/2019/01/29/announcing-net-core-3-preview-2/
_______________
@IranAspMvc
بررسی تغییرات و قابلیت های مهم :
1- پشتیبانی از قابلیت های جدید سی شارپ 8
- قابلیت Using Declarations :
توسط این قابلیت میتونین متغیر های Disposable تون رو به صورت using توی یک بلاک scope تعریف کنین و قتی اون بلاک به اتمام رسید، اون متغیر هم به صورت خودکار Dispose میشه
HttpResposeMessage GetUrl(string url)- قابلیت Switch Expressions :
{
using var httpClient = new HttpClient();
return httpClient.Get(url);
} // httpClient disposed here
این قابلیت امکان تعریف راحت تر و هوشمندانه تر دستور switch رو مشابه سینتکس lambda expression را برای ما فراهم میکنه.
string Display(object item) => o switch- قابلیت Async streams :
{
Point { X: 0, Y: 0 } => "origin",
Point { X: var x, Y: var y } => $"({x}, {y})",
_ => "unknown"
};
محدودیت قابلیت await/async این بود که در آن نمی شد لیستی از مقادیر رو به صورت yield باز گردوند. این محدودیت توسط قابلیت Async streams برطرف شده و شما میتونین همزمان هم از yield return و در نتیجه گرفتن خروجی به صورت lazy توی IEnumerable استفاده کنین و هم از async
- قابلیت های سی شارپ 8 در آینده به تفصل مورد بررسی قرار خواهند گرفت
2- اضافه شدن Json Seralizer داخلی بسیار سریع
در راستای حذف وابستگی JsonNET - Newtonsoft از ASP Core و جایگزین کردن آن با یک Json Serializer داخلی سبک و سریع، کلاس های Utf8JsonWriter و JsonDocument اضافه شده اند.
کلاس Utf8JsonWriter که برای Serialize کردن استفاده میشه نسبت به مشابه اون در JsonNET، افزایش پرفرمنس 30 تا 80 درصدی را (بدون تخصیص حافظه) به همراه داشته.
و کلاس JsonDocument که برای Desrialize/Parse کردن استفاده میشه نیز نسبت به مشابه آن در JsonNET بین 2 تا 3 برابر سریع تره و حافظه کمتری تخصیص میکنه.
3- بهبود محاسبات اعداد اعشاری!
در راستای مطابقت با استاندارد IEEE 754-2008 revision (که درباره عملیات های مربوط به محاسبات اعداد اعشاری است) بهبود هایی انجام گرفته و چندین api محاسبات ریاضی جدید هم اضافه شده.
4- پیشتبانی بیشتر از CPU instruction sets
مجموعه ای دستور العمل هایی برای CPU (مانند SIMD یا Bit Manipulation) وجود دارند که در بعضی سناریو های خاص مانند پردازش موازی یا... ،پرفرمنس را به شدت افزایش میدهند که در این ورژن پشتیبانی بیشتری از آنها انجام شده است.
لیست تغییرات خیلی بیشتره میتونین از لینک زیر مطالعه کنین.
توضیحات بیشتر :
https://blogs.msdn.microsoft.com/dotnet/2019/01/29/announcing-net-core-3-preview-2/
_______________
@IranAspMvc
.NET Blog
Announcing .NET Core 3 Preview 2
Today, we are announcing .NET Core 3 Preview 2. It includes new features in .NET Core 3.0 and C# 8, in addition to the large number of new features in Preview 1. ASP.NET Core 3.0 Preview 2 is also released today.
منتشر شد ASP.NET Core 3.0
اینطور که پیداست، تغییرات توی AspCore 3.0 و پیش نمایش هاش زیاده و هر بار با تعداد زیادی قابلیت و تغییر مواجه میشیم
Razor Components
SignalR client-to-server streaming
Pipes on HttpContext
Generic host in templates
Endpoint routing updates
به زودی تغییرات مهم این رو هم بررسی میکنیم
https://blogs.msdn.microsoft.com/webdev/2019/01/29/aspnet-core-3-preview-2/
_____________
@IranAspMvc
اینطور که پیداست، تغییرات توی AspCore 3.0 و پیش نمایش هاش زیاده و هر بار با تعداد زیادی قابلیت و تغییر مواجه میشیم
Razor Components
SignalR client-to-server streaming
Pipes on HttpContext
Generic host in templates
Endpoint routing updates
به زودی تغییرات مهم این رو هم بررسی میکنیم
https://blogs.msdn.microsoft.com/webdev/2019/01/29/aspnet-core-3-preview-2/
_____________
@IranAspMvc
ASP.NET Blog
ASP.NET Blog | ASP.NET Core updates in .NET Core 3.0 Preview 2
ASP.NET Core 3.0 Preview 2 now available and includes what's new like Razor Components, SignalR client-to-server streaming, Pipes on HttpContext, and more!
دانلود کتاب رایگان Domain Driven Design: The First 15 Years
به مناسبت 15 امین سالگرد به وجود اومدن Domain Driven Design، با دعوت اساتید برجسته این حوزه، کتابی تحت عنوان "15 سال اول" تهیه و به صورت رایگان منتشر شده است.
https://ufile.io/u6bx8
_______________
@IranAspMvc
به مناسبت 15 امین سالگرد به وجود اومدن Domain Driven Design، با دعوت اساتید برجسته این حوزه، کتابی تحت عنوان "15 سال اول" تهیه و به صورت رایگان منتشر شده است.
https://ufile.io/u6bx8
_______________
@IranAspMvc
توی این سری پست ها میخوایم تغییرات مهم ASP.NET Core 3.0 پیش نمایش 2 رو بررسی کنیم.
1️⃣ حذف وابستگی ها
یکی از تغییرات مهم این نسخه، حذف وابستگی JSON.Net از ASP Core 3.0 و اضافه شدن یک Json Serializer داخلی سریع و سبک در NET Core 3.0 در راستای ایجاد یک بستر مشترک و مستقل برای ASP Core است
به همین جهت از این به بعد برای استفاده از JSON.Net (مثل سابق) و یا برای ارتقاء برنامه های موجود خود با ورژن های پایین تر به ASP Core 3.0، باید پکیج
همچنین در همین راستا، وابستگی کامپایلر Roslyn نیز حذف شده و در نتیجه آن قابلیت کامپایل runtime برای View ها نیز حذف شده است و به جای آن، کامپایل ویو ها در زمان Build انجام خواهد شد.
ولی گفته شده برای فعال سازی قابلیت کامپایل runtime ویو ها در نسخه های پیش نمایش بعدی، یک پکیچ Nuget ارائه خواهد شد.
2️⃣ قابلیت Streaming دیتا از کلاینت به سرور در SignalR
قابلیت استریمینگ از سرور به کلاینت توی نسخه 2.1 اضافه شد و این امکان رو به ما میداد که به جای اینکه سمت سرور منتظر باشیم تا دیتا کامل لود بشه و بعد اون رو سمت کلاینت ارسال کنیم، دیتا ها رو به محض اماده شدن، به صورت بخش بخش به کلانیت ارسال کنیم
حالا برعکس این قابلیت یعنی استریمینگ از کلاینت به سرور اضافه شده در نتیجه کلاینت میتونه به جای اینکه صبر کنه تا دیتا کامل سمت کلاینت آماده بشه، لحظه به لحظه به محض اینکه هر دیتایی سمت کلاینت آماده شد، اون رو به سرور ارسال کنه.
از این قابلیت میشه مثلا برای استریمینگ ویدئو به سرور (مثلا ارسال تصاویر وبکم به سرور) استفاده کرد و سمت سرور هم میتونیم تصاویر دریافتی رو به یه کاربر دیگه به صورت استریمینگ ارسال کنیم و این یعنی امکان ایجاد یک ارتباط ویدئویی آنلاین بین دو/چند نفر!
لینک زیر هم همینکارو خیلی جالب انجام داده. اگه وبکم دارین کافیه لینک زیر رو باز کنین و توی اون تکس باکس یه اسم تایپ کنین و دکمه Start Streaming رو بزنین و اجازه دسترسی وبکم رو بهش بدین و تصویر خودتون رو به صورت متنی مشاهده کنین!
https://streamr.azurewebsites.net/
در کل در این نسخه، تغییرات زیادی داشته و اگه نجنبیم از غافله اپدیت ها عقب میمونیم :)
ادامه بررسی ها در پست بعدی
@IranAspMvc
1️⃣ حذف وابستگی ها
یکی از تغییرات مهم این نسخه، حذف وابستگی JSON.Net از ASP Core 3.0 و اضافه شدن یک Json Serializer داخلی سریع و سبک در NET Core 3.0 در راستای ایجاد یک بستر مشترک و مستقل برای ASP Core است
به همین جهت از این به بعد برای استفاده از JSON.Net (مثل سابق) و یا برای ارتقاء برنامه های موجود خود با ورژن های پایین تر به ASP Core 3.0، باید پکیج
Microsoft.AspNetCore.Mvc.NewtonsoftJson نصب و متد زیر اعمال شود.services.AddMvc()در غیر این صورت، عملیات سریالاز Json توسط Json Serializer داخلی آن انجام می شود که در پست قبلی سرعت آن را مقایسه کردیم و پیشنهاد می شود از این به بعد از آن به جای JSON.Net استفاده شود چرا که بسیار سریع تر و سبک تر است.
.AddNewtonsoftJson();
همچنین در همین راستا، وابستگی کامپایلر Roslyn نیز حذف شده و در نتیجه آن قابلیت کامپایل runtime برای View ها نیز حذف شده است و به جای آن، کامپایل ویو ها در زمان Build انجام خواهد شد.
ولی گفته شده برای فعال سازی قابلیت کامپایل runtime ویو ها در نسخه های پیش نمایش بعدی، یک پکیچ Nuget ارائه خواهد شد.
2️⃣ قابلیت Streaming دیتا از کلاینت به سرور در SignalR
قابلیت استریمینگ از سرور به کلاینت توی نسخه 2.1 اضافه شد و این امکان رو به ما میداد که به جای اینکه سمت سرور منتظر باشیم تا دیتا کامل لود بشه و بعد اون رو سمت کلاینت ارسال کنیم، دیتا ها رو به محض اماده شدن، به صورت بخش بخش به کلانیت ارسال کنیم
حالا برعکس این قابلیت یعنی استریمینگ از کلاینت به سرور اضافه شده در نتیجه کلاینت میتونه به جای اینکه صبر کنه تا دیتا کامل سمت کلاینت آماده بشه، لحظه به لحظه به محض اینکه هر دیتایی سمت کلاینت آماده شد، اون رو به سرور ارسال کنه.
از این قابلیت میشه مثلا برای استریمینگ ویدئو به سرور (مثلا ارسال تصاویر وبکم به سرور) استفاده کرد و سمت سرور هم میتونیم تصاویر دریافتی رو به یه کاربر دیگه به صورت استریمینگ ارسال کنیم و این یعنی امکان ایجاد یک ارتباط ویدئویی آنلاین بین دو/چند نفر!
لینک زیر هم همینکارو خیلی جالب انجام داده. اگه وبکم دارین کافیه لینک زیر رو باز کنین و توی اون تکس باکس یه اسم تایپ کنین و دکمه Start Streaming رو بزنین و اجازه دسترسی وبکم رو بهش بدین و تصویر خودتون رو به صورت متنی مشاهده کنین!
https://streamr.azurewebsites.net/
در کل در این نسخه، تغییرات زیادی داشته و اگه نجنبیم از غافله اپدیت ها عقب میمونیم :)
ادامه بررسی ها در پست بعدی
@IranAspMvc
3️⃣ قابلیت جدیدی به نام Razor Component
اما میشه گفت مهم ترین قابلیتی که به این نسخه اضافه شده Razor Components هست. این قابلیت یه روش جدید برای ساخت کامپیوننت های UI سمت کلاینت هست با این تفاوت که امکان اجرا کد های اونا سمت سرور هم وجود داره و ارتباط کلاینت و سرور جهت برورسانی وضعیت اون کامپوننت، به صورت real-time توسط SignalR انجام میشه. درنتیجه باهاش میتونین کد های منطق کامپوننت تون رو به جای javascript، با سی شارپ و سمت سرور بنویسین و بلافاصله تغییرات ظاهری لازم رو سمت کاربر مشاهده کنین.
این کامپوننت های کاملا مستقل هتستند و به راحتی میتونین کامپوننت ها رو بیلد کنین و خروجی dll اش رو توی پروژه هاتون اضافه و از کامپوننت هاتون استفاده کنین.
این قابلیت در ابتدا توی پروژه Blazor تحت عنوان Blazor Component به وجود آومد و الان ماکروسافت، اون رو به ASP Core هم منتقل کرده و هم اکنون امکان اجرای Razor Component ها بر روی هر دو پلتفرم ASP Core و Blazor ممکن شده.
اینطور که پیداست ماکروسافت حسابی پشت Blazor رو گرفته و تصمیم داره بعضی از قابلیت های Blazor رو به ASP Core اضافه کنه. پس میشه احتمال داد که آینده خوبی در انتظار Blazor هست!
پیشنهاد میکنم یه بار تستش کنین خیلی با حاله.
نحوه کار باهاش تو لینک زیر :
https://bit.ly/2GpmCqs
تو این مثال، یه button گذاشته که با هربار کلیک روش، یه واحد به یک عدد اضافه میشه؛ تو حالت عادی این کد باید با javascript نوشته بشه، ولی در اینجا، کد تمام کد لازم برای این عملیات با سی شارپ و سمت سرور نوشته شده و وقتی روی اون button کلیک میکنین با SignalR عملیات لازم سمت سرور انجام و نتیجه اون بلافاصله سمت کلاینت مشاهده میشه.
البته چون این قابلیت، عملیات منطق و رندر شدن کامپوننت ها سمت سرور انجام میشه، ممکنه توی تعداد بازدید بالا، بار روی سرور رو زیاد کنه پس بهتره با احتیاط استفاده بشه.
توضیحات بیشتر و آموزش :
https://bit.ly/2Gobkml
نکته جالب دیگه، امکان تعامل و اجرای کد های جاواسکریپت در Razor Component ها هست. یعنی میتونین سمت سرور مشخص کنین، وقتی روی فلان button کلیک شد یه کد javascript ایی سمت کاربر اجرا بشه، مثلا یه مودال خوشگل (که کتابخانه JS ایش سمت کلاینت اضافه شده) نمایش داده بشه. (که به این قابلیت میگن JavaScript interop)
یه روش دیگه برای کار با Razor Component ها، اجرای مستقیم اون ها درون مرورگر بدون نیاز به اتصال به سرور از طریق SignalR هست. در واقع به لطف پروژه Blazor و امکان اجرای کد های دات نت در مروگر توسط WebAssembly، میشه کامپوننت هایی با سی شارپ نوشت که مستقما توی مروگر اجرا میشن
البته این قابلیت هنوز توی این نسخه از ASP Core نیومده ولی قراره در نسخه های بعدی اضافه بشه.
نکته آخر هم اینکه: در حال حاضر فقط ادیتور VS 2019 از Razor Component پشتیبانی میکنه و نه VS for Mac و نه VS Code واسه توسعه این قابلیت پشتیبانی لازم رو ندارند. اینم به اون معنی نیست که بدون VS 2019 نمیتونین از Razor Component استفاده کنین. بلکه فقط intellisense و عیب یابی رو توی بقیه ندارین وگرنه با یه notepad هم میشه کد های Razor Component رو ویرایش کرد و توسعه داد.
مهم ترین تغییراتش اینا بود ولی چندتای دیگه هم مونده که اگه فرصت کردم در آینده بهشون میپردازم.
@IranAspMvc
اما میشه گفت مهم ترین قابلیتی که به این نسخه اضافه شده Razor Components هست. این قابلیت یه روش جدید برای ساخت کامپیوننت های UI سمت کلاینت هست با این تفاوت که امکان اجرا کد های اونا سمت سرور هم وجود داره و ارتباط کلاینت و سرور جهت برورسانی وضعیت اون کامپوننت، به صورت real-time توسط SignalR انجام میشه. درنتیجه باهاش میتونین کد های منطق کامپوننت تون رو به جای javascript، با سی شارپ و سمت سرور بنویسین و بلافاصله تغییرات ظاهری لازم رو سمت کاربر مشاهده کنین.
این کامپوننت های کاملا مستقل هتستند و به راحتی میتونین کامپوننت ها رو بیلد کنین و خروجی dll اش رو توی پروژه هاتون اضافه و از کامپوننت هاتون استفاده کنین.
این قابلیت در ابتدا توی پروژه Blazor تحت عنوان Blazor Component به وجود آومد و الان ماکروسافت، اون رو به ASP Core هم منتقل کرده و هم اکنون امکان اجرای Razor Component ها بر روی هر دو پلتفرم ASP Core و Blazor ممکن شده.
اینطور که پیداست ماکروسافت حسابی پشت Blazor رو گرفته و تصمیم داره بعضی از قابلیت های Blazor رو به ASP Core اضافه کنه. پس میشه احتمال داد که آینده خوبی در انتظار Blazor هست!
پیشنهاد میکنم یه بار تستش کنین خیلی با حاله.
نحوه کار باهاش تو لینک زیر :
https://bit.ly/2GpmCqs
تو این مثال، یه button گذاشته که با هربار کلیک روش، یه واحد به یک عدد اضافه میشه؛ تو حالت عادی این کد باید با javascript نوشته بشه، ولی در اینجا، کد تمام کد لازم برای این عملیات با سی شارپ و سمت سرور نوشته شده و وقتی روی اون button کلیک میکنین با SignalR عملیات لازم سمت سرور انجام و نتیجه اون بلافاصله سمت کلاینت مشاهده میشه.
البته چون این قابلیت، عملیات منطق و رندر شدن کامپوننت ها سمت سرور انجام میشه، ممکنه توی تعداد بازدید بالا، بار روی سرور رو زیاد کنه پس بهتره با احتیاط استفاده بشه.
توضیحات بیشتر و آموزش :
https://bit.ly/2Gobkml
نکته جالب دیگه، امکان تعامل و اجرای کد های جاواسکریپت در Razor Component ها هست. یعنی میتونین سمت سرور مشخص کنین، وقتی روی فلان button کلیک شد یه کد javascript ایی سمت کاربر اجرا بشه، مثلا یه مودال خوشگل (که کتابخانه JS ایش سمت کلاینت اضافه شده) نمایش داده بشه. (که به این قابلیت میگن JavaScript interop)
یه روش دیگه برای کار با Razor Component ها، اجرای مستقیم اون ها درون مرورگر بدون نیاز به اتصال به سرور از طریق SignalR هست. در واقع به لطف پروژه Blazor و امکان اجرای کد های دات نت در مروگر توسط WebAssembly، میشه کامپوننت هایی با سی شارپ نوشت که مستقما توی مروگر اجرا میشن
البته این قابلیت هنوز توی این نسخه از ASP Core نیومده ولی قراره در نسخه های بعدی اضافه بشه.
نکته آخر هم اینکه: در حال حاضر فقط ادیتور VS 2019 از Razor Component پشتیبانی میکنه و نه VS for Mac و نه VS Code واسه توسعه این قابلیت پشتیبانی لازم رو ندارند. اینم به اون معنی نیست که بدون VS 2019 نمیتونین از Razor Component استفاده کنین. بلکه فقط intellisense و عیب یابی رو توی بقیه ندارین وگرنه با یه notepad هم میشه کد های Razor Component رو ویرایش کرد و توسعه داد.
مهم ترین تغییراتش اینا بود ولی چندتای دیگه هم مونده که اگه فرصت کردم در آینده بهشون میپردازم.
@IranAspMvc
aspnetcore-developer-roadmap.png
534.3 KB
نقشه راه برنامه نویسی ASP.NET Core 2019
اگه میخواین بدونین چه سرفصل ها و موضوعاتی رو باید/بهتره یاد بگیرین و یا از کجاش شروع کنین، این نقشه راه (Roadmap) خیلی کمکتون میکنه
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
در آینده این رودمپ تکمیل تر و اصلاح تر هم خواهد شد پس واسه دیدن آخرین تغییرات به لینک ریپازیتوریش سر بزنین
@IranAspMvc
اگه میخواین بدونین چه سرفصل ها و موضوعاتی رو باید/بهتره یاد بگیرین و یا از کجاش شروع کنین، این نقشه راه (Roadmap) خیلی کمکتون میکنه
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
در آینده این رودمپ تکمیل تر و اصلاح تر هم خواهد شد پس واسه دیدن آخرین تغییرات به لینک ریپازیتوریش سر بزنین
@IranAspMvc
مقایسه تکنولوژی استفاده شده در شرکت های بزرگ برنامه نویسی دنیا
توسط این سایت می توانید بهترین تکنولوژی، ابزار ها و فریمورک های مورد استفاده در شرکت های بزرگ برنامه نویسی دنیا را مشاهده و با یکدیگر مقایسه کنید.
https://stackshare.io/
مثلا لینک زیر تکنولوژی ها و ابزاری های مورد استفاده در شرکت Airbnb را نمایش می دهد.
https://stackshare.io/airbnb/airbnb
_______________
@IranAspMvc
توسط این سایت می توانید بهترین تکنولوژی، ابزار ها و فریمورک های مورد استفاده در شرکت های بزرگ برنامه نویسی دنیا را مشاهده و با یکدیگر مقایسه کنید.
https://stackshare.io/
مثلا لینک زیر تکنولوژی ها و ابزاری های مورد استفاده در شرکت Airbnb را نمایش می دهد.
https://stackshare.io/airbnb/airbnb
_______________
@IranAspMvc
مقایسه بهترین کتابخانه های دات نت
https://dotnet.libhunt.com
توسط این سایت میتونین کتابخانه های دات نت رو با هم مقایسه کنین و بفهمین کدوم محبوب تره، همچنین میتونین لیستی از کتابخانه های مشابه رو هم برای هر کدوم پیدا کنید.
این سایت از پارامتر های مختلفی برای مقایسه و امتیازدهی کتابخانه ها استفاده میکنه. از جمله:
- Star, Fork, Watcher گیتهاب
- میزان فعال بودن بر اساس آخریت کامیت
- تعداد دانلود در ماه
- میزان کیفیت کد و ...
- میزان سرچ اش رو هم براسا امار Google Trend نشون میده
مثلا لینک زیر IOC Container های معروف Autofac و Ninject را با هم مقایسه میکنه.
https://dotnet.libhunt.com/compare-autofac-vs-ninject?rel=cmp-lib
🔸 توسط این سایت و سایت قبلی که معرفی کردیم میتونین بدون شک "محبوب ترین" کتابخانه و ابزار ها رو برای کاراتون پیدا کنین.
@IranAspMvc
https://dotnet.libhunt.com
توسط این سایت میتونین کتابخانه های دات نت رو با هم مقایسه کنین و بفهمین کدوم محبوب تره، همچنین میتونین لیستی از کتابخانه های مشابه رو هم برای هر کدوم پیدا کنید.
این سایت از پارامتر های مختلفی برای مقایسه و امتیازدهی کتابخانه ها استفاده میکنه. از جمله:
- Star, Fork, Watcher گیتهاب
- میزان فعال بودن بر اساس آخریت کامیت
- تعداد دانلود در ماه
- میزان کیفیت کد و ...
- میزان سرچ اش رو هم براسا امار Google Trend نشون میده
مثلا لینک زیر IOC Container های معروف Autofac و Ninject را با هم مقایسه میکنه.
https://dotnet.libhunt.com/compare-autofac-vs-ninject?rel=cmp-lib
🔸 توسط این سایت و سایت قبلی که معرفی کردیم میتونین بدون شک "محبوب ترین" کتابخانه و ابزار ها رو برای کاراتون پیدا کنین.
@IranAspMvc