Media is too big
VIEW IN TELEGRAM
EF Core Advanced Topics And Common Pitfalls
Chapter 1
Part 11: Concurrency types and handling them in EF Core
Telegram Channel:
https://t.iss.one/DotNetIsFun
Chapter 1
Part 11: Concurrency types and handling them in EF Core
Telegram Channel:
https://t.iss.one/DotNetIsFun
به جرئت میتونیم بگیم که با اومدن EF Core 7 دیگه نیازی نیست سراغ Micro ORM هایی مثل Dapper بریم
تیم توسعه EF Core تمام تمرکز خودش رو در این ورژن روی transaction ها و بهبود performance در عملیاتی که هنگام Save کردن دیتا اتفاق میتوفته گذاشته. یکی از مسائل خیلی مهمی که در پرفورمنس وجود داره تعداد ارجاع هایی هست که به دیتابیس زده میشه( حالا فرض کنید که دیتابیس روی سرور ریموت باشه و ما تاخیر شبکه رو هم داشته باشیم)
در EF Core 7 به طور خیلی خاص روی کم کردن تعداد این ارجاع ها به دیتابیس کار شده
به طور مثال میتونیم به اضافه کردن دستور output اشاره کنیم.
در ورژن کنونی EF Core وقتی شما عملیات add رو انجام میدین، EF Core دیتای شما رو با یک کوئری وارد دیتابیس میکنه و با کوئری دوم ID اون رو دریافت میکنه تا اون رو سمت خودش مقدار دهی کنه
حالا با دستور output دیگه نیازی به کوئری دوم نیست و ما توی همون قسمت insert به sql server میگیم که ID رو برامون برگردون! (البته حواستون باشه که تیبلتون توی دیتابیس نباید trigger داشته باشه، اگه هم داره که سریعا یه فکری به حالش بکنید و برش دارید که اوضاعتون خیلی خیطه!)
همچنین تغییراتی هم در نحوه ایجاد کوئری هنگام اد کردن چند رکورد ایجاد شده که پرفورمنس رو به طرز وحشتناکی بهبود داده!
شدیدا بهتون توصیه میکنم که لینک زیر رو مطالعه کنید
https://devblogs.microsoft.com/dotnet/announcing-ef7-preview6/
تیم توسعه EF Core تمام تمرکز خودش رو در این ورژن روی transaction ها و بهبود performance در عملیاتی که هنگام Save کردن دیتا اتفاق میتوفته گذاشته. یکی از مسائل خیلی مهمی که در پرفورمنس وجود داره تعداد ارجاع هایی هست که به دیتابیس زده میشه( حالا فرض کنید که دیتابیس روی سرور ریموت باشه و ما تاخیر شبکه رو هم داشته باشیم)
در EF Core 7 به طور خیلی خاص روی کم کردن تعداد این ارجاع ها به دیتابیس کار شده
به طور مثال میتونیم به اضافه کردن دستور output اشاره کنیم.
در ورژن کنونی EF Core وقتی شما عملیات add رو انجام میدین، EF Core دیتای شما رو با یک کوئری وارد دیتابیس میکنه و با کوئری دوم ID اون رو دریافت میکنه تا اون رو سمت خودش مقدار دهی کنه
حالا با دستور output دیگه نیازی به کوئری دوم نیست و ما توی همون قسمت insert به sql server میگیم که ID رو برامون برگردون! (البته حواستون باشه که تیبلتون توی دیتابیس نباید trigger داشته باشه، اگه هم داره که سریعا یه فکری به حالش بکنید و برش دارید که اوضاعتون خیلی خیطه!)
همچنین تغییراتی هم در نحوه ایجاد کوئری هنگام اد کردن چند رکورد ایجاد شده که پرفورمنس رو به طرز وحشتناکی بهبود داده!
شدیدا بهتون توصیه میکنم که لینک زیر رو مطالعه کنید
https://devblogs.microsoft.com/dotnet/announcing-ef7-preview6/
Microsoft News
Announcing Entity Framework Core 7 Preview 6: Performance Edition
Announcing Entity Framework Core 7 Preview 6 with update performance optimizations.
اجباری بودن تایید ایمیل از بات برداشته شد
سرور های دانلود بدون هیچگونه محدودیت سرعت در دسترس هستند
به هر کورسی نیاز داشتید به من پیام بدید تا رایگان داخل بات قرار داده بشه
بات رو هم به دوستانتون معرفی کنید
آیدی بات
@DotNetFunBot
تماس با بنده
@bob_tm
سرور های دانلود بدون هیچگونه محدودیت سرعت در دسترس هستند
به هر کورسی نیاز داشتید به من پیام بدید تا رایگان داخل بات قرار داده بشه
بات رو هم به دوستانتون معرفی کنید
آیدی بات
@DotNetFunBot
تماس با بنده
@bob_tm
بنا به درخواست دوستان دو کورس زیر به بات اضافه شدند
ASP NET Core Identity Deep Dive
Creating Telegram Bot Using C#
آدرس بات @DotNetFunBot
ASP NET Core Identity Deep Dive
Creating Telegram Bot Using C#
آدرس بات @DotNetFunBot
بنا به درخواست دوستان کورس EF Core 6 Best Practices به بات اضافه شد و میتونید اون رو با لینک مستقیم دانلود کنید
آدرس کورس: https://www.pluralsight.com/courses/ef-core-6-best-practices
آدرس بات: @DotNetFunBot
آدرس کورس: https://www.pluralsight.com/courses/ef-core-6-best-practices
آدرس بات: @DotNetFunBot
Pluralsight
EF Core: Best Practices
Forwarded from Zoomit | زومیت
بنا به درخواست دوستان دو کورس زیر از Pluralsight داخل بات قرار گرفتند که میتونید اونها رو با لینک مستقیم دانلود کنید:
Querying Data in EF Core 6
EF Core 6 Fundamentals By Judie Lerman
آدرس بات :
@DotNetFunBot
آدرس کانال:
@DotNetIsFun
برای درخواست کورس به آیدی @bob_tm پیام بدین
Querying Data in EF Core 6
EF Core 6 Fundamentals By Judie Lerman
آدرس بات :
@DotNetFunBot
آدرس کانال:
@DotNetIsFun
برای درخواست کورس به آیدی @bob_tm پیام بدین
Pluralsight
Querying Data in EF Core
بنا به درخواست شما دوستان دوره کامل و جامع C# 10 Design Patterns (به همراه آخرین آپدیت دوره) از یکی از بهترین MVP های مایکروسافت Kevin Dockx داخل بات قرار گرفت که میتونید اون رو با لینک مستقیم از بات دانلود کنید. (شخصا مشاهده این دوره رو خیلی بهتون پیشنهاد میکنم)
آدرس بات :
@DotNetFunBot
آدرس کانال:
@DotNetIsFun
برای درخواست کورس به آیدی @bob_tm پیام بدین
آدرس بات :
@DotNetFunBot
آدرس کانال:
@DotNetIsFun
برای درخواست کورس به آیدی @bob_tm پیام بدین
Pluralsight
C# Design Patterns
C# 11 New Features!!!!
1- "Required Properties" Are Now Supported In Attributes!
2- Many new "Math Features" are added to C# 11. For generics, there is a new interface called "INumber" which gives you the power to use numbers in a "Generic Way"
3- "Default Operators" such as (+ / - *) can be overloaded. You can use checked keyword to describe that your operator should be used instead of default operator.
4- Abstract methods or properties can now be Static! This feature was first introduced in C# 10 and NET 6 as a "preview feature" but now you can take full usage of this feature in C# 11 and NET7 ! This feature was one of the most requested feature for C# 11. IParsable is a new interface which uses this new feature. One of the best things you can do with this feature is using the "Factory Pattern" (Combining Abstract Factory and Static Factory Method together)
5- Pattern Matching got improved again! Pattern Matching now supports collections (such as Arrays and Lists). Range Expressions (such as .. ) are now supported in Pattern Matching. Pattern Matching also became more clever, giving you compile errors when a specific pattern will not hit in any situation.
6- String Literals feature got updated and cleaned up in C# 11! Intelisense now supports String Indentation which can help you wrap a paragraph with multiple lines. Intelisense now can give you hints and warnings about your string literal.
#NETConf2022
1- "Required Properties" Are Now Supported In Attributes!
2- Many new "Math Features" are added to C# 11. For generics, there is a new interface called "INumber" which gives you the power to use numbers in a "Generic Way"
3- "Default Operators" such as (+ / - *) can be overloaded. You can use checked keyword to describe that your operator should be used instead of default operator.
4- Abstract methods or properties can now be Static! This feature was first introduced in C# 10 and NET 6 as a "preview feature" but now you can take full usage of this feature in C# 11 and NET7 ! This feature was one of the most requested feature for C# 11. IParsable is a new interface which uses this new feature. One of the best things you can do with this feature is using the "Factory Pattern" (Combining Abstract Factory and Static Factory Method together)
5- Pattern Matching got improved again! Pattern Matching now supports collections (such as Arrays and Lists). Range Expressions (such as .. ) are now supported in Pattern Matching. Pattern Matching also became more clever, giving you compile errors when a specific pattern will not hit in any situation.
6- String Literals feature got updated and cleaned up in C# 11! Intelisense now supports String Indentation which can help you wrap a paragraph with multiple lines. Intelisense now can give you hints and warnings about your string literal.
#NETConf2022
بنا به درخواست شما دوستان دوره کامل و جامع Domain Driven Design In Practice از یکی از بهترین مدرس های جهان Vladimir Khorikov داخل بات قرار گرفت که میتونید اون رو با لینک مستقیم از بات دانلود کنید.
آدرس بات:
@DotNetFunBot
آدرس کانال:
@DotNetIsFun
برای درخواست کورس به آیدی @bob_tm پیام بدین
آدرس بات:
@DotNetFunBot
آدرس کانال:
@DotNetIsFun
برای درخواست کورس به آیدی @bob_tm پیام بدین
Pluralsight
Domain-Driven Design in Practice
If you have ever struggled with applying Domain-Driven Design in your own projects, this course is for you. Let's go through the whole process of creating an app using DDD principles.
.NET Fun
بنا به درخواست شما دوستان دوره کامل و جامع Domain Driven Design In Practice از یکی از بهترین مدرس های جهان Vladimir Khorikov داخل بات قرار گرفت که میتونید اون رو با لینک مستقیم از بات دانلود کنید. آدرس بات: @DotNetFunBot آدرس کانال: @DotNetIsFun برای درخواست…
تمامی دوره ها رایگان هستند دوستان
برای دانلود ابتدا وارد بات بشید و استارت رو بزنید
آدرس بات @DotNetFunBot
سپس با دستور /courses لیست دوره ها براتون نمایش داده میشه
برای دانلود ابتدا وارد بات بشید و استارت رو بزنید
آدرس بات @DotNetFunBot
سپس با دستور /courses لیست دوره ها براتون نمایش داده میشه
.NET Fun
Follow #NETConf2022 Hashtag!!
Performance enhancements and new features in ASP NET Core 7!
1-Websocket connections now support HTTP2. HTTP3 Protocol is still available as an opt-in feature
2- Rate Limiting is now available as a new feature in ASP NET Core 7! You no longer need 3rd party libraries to use this feature. Both options ( Limiting number of concurrent requests and limiting number of requests per user) is now available!
3- Output Caching is a new feature in ASP NET Core 7! The configuration of output caching is as simple as Response Caching. Just like before, there multiple cache store options (like memory, SQL , Disk , Redis) are available. This new feature supports something called "Thundering Herd Locking" in which the cache system implements auto locks for preventing multiple clients from changing the cache too many times ( This feature will come handy in scenarios where the site or service is starting up and clients are sending burst requests and prevents the service from becoming unavailable). It also supports cache invalidation and cache revalidation ( in previous versions you had to invalidate old cache files manually , but now ASP NET Core will handle it for you by using E-Tags )
#NETConf2022
1-Websocket connections now support HTTP2. HTTP3 Protocol is still available as an opt-in feature
2- Rate Limiting is now available as a new feature in ASP NET Core 7! You no longer need 3rd party libraries to use this feature. Both options ( Limiting number of concurrent requests and limiting number of requests per user) is now available!
3- Output Caching is a new feature in ASP NET Core 7! The configuration of output caching is as simple as Response Caching. Just like before, there multiple cache store options (like memory, SQL , Disk , Redis) are available. This new feature supports something called "Thundering Herd Locking" in which the cache system implements auto locks for preventing multiple clients from changing the cache too many times ( This feature will come handy in scenarios where the site or service is starting up and clients are sending burst requests and prevents the service from becoming unavailable). It also supports cache invalidation and cache revalidation ( in previous versions you had to invalidate old cache files manually , but now ASP NET Core will handle it for you by using E-Tags )
#NETConf2022
Clean Architecture Template Updated To NET7 + Package Updates
Repository Address
Breaking Changes: After January of 2022 the package "Microsoft.Data.SqlClient" made an update which made "Encrypt" property of connection string to "True" by default (it was "False" before) . The reason is that because of growing usage in cloud databases, connection strings must be encrypted in order to provide protection for connection string. Adding Encrypt=False to the connection string disables it.
Key features of this template:
-Supports ASP NET Core Identity out of the box.
-Supports JWT Authentication integrated with ASP NET Core Identity.
- Supports OTP Authentication integrated with ASP NET Core Identity.
- AutoMapper Profiles are auto-generated. Which means that you don't need to create profile for each mapping.
- Supports Dynamic permission system. Although some coding needed to give permissions to different users (I'll add it in future updates)
- The logging is done through Serilog and there is an option to enable Logging to Elasticsearch.
- Uses the popular MediatR library.
- Uses Unit of Work pattern.
-Easy to extend and develop.
- All JSON responses are in unified format which makes UI development easier.
- JWT Tokens are encrypted.
-Supports refresh token. Which means that you can refresh user's token without doing anything extra!
-ModelState Validations are done automatically
Let me know your thoughts about this project. If there is an issue about it, create issue on github and if you like it, give it a star!
Repository Address
Breaking Changes: After January of 2022 the package "Microsoft.Data.SqlClient" made an update which made "Encrypt" property of connection string to "True" by default (it was "False" before) . The reason is that because of growing usage in cloud databases, connection strings must be encrypted in order to provide protection for connection string. Adding Encrypt=False to the connection string disables it.
Key features of this template:
-Supports ASP NET Core Identity out of the box.
-Supports JWT Authentication integrated with ASP NET Core Identity.
- Supports OTP Authentication integrated with ASP NET Core Identity.
- AutoMapper Profiles are auto-generated. Which means that you don't need to create profile for each mapping.
- Supports Dynamic permission system. Although some coding needed to give permissions to different users (I'll add it in future updates)
- The logging is done through Serilog and there is an option to enable Logging to Elasticsearch.
- Uses the popular MediatR library.
- Uses Unit of Work pattern.
-Easy to extend and develop.
- All JSON responses are in unified format which makes UI development easier.
- JWT Tokens are encrypted.
-Supports refresh token. Which means that you can refresh user's token without doing anything extra!
-ModelState Validations are done automatically
Let me know your thoughts about this project. If there is an issue about it, create issue on github and if you like it, give it a star!
GitHub
GitHub - babaktaremi/Clean-Architecture-Template: 🧹 Ready to develop template based on clean architecture principles. Supports…
🧹 Ready to develop template based on clean architecture principles. Supports ASP NET Core Identity integrated with JWE tokens, OTP authentication, stand alone plugin development, CQRS pattern using...
تو شرایط اینترنت الان فکر کنم همه ما به مشکل پوش نوتیفیکیشن برخورد کردیم. یا تحریم هستیم و نمیتونیم نوتیفیکیشن ارسال کنیم یا نوتیفیکیشنی که با هزار زور و زحمت ارسال کردیم از اون طرف به دست کاربر نمیرسه.
اومدم یه سر به سرویس های ایرانی زدم دیدم اوضاع واقعا فاجعس. از نجوا و پنل افتضاح و داکیومنت نصف و نیمش که نگم براتون ( که بعد از اون افتضاح امنیتی به سطح جدیدی از امنیت رسیدن که از پنل خودشون به API های خودشون ارور CORS داره و عملا هیچی باز نمیشه) سرویس پوشه هم که ماشالا تعرفه هاش از قیمت های خود Firebase هم بالاتره.
بعد از یکم گشت و گذار رسیدم به این پکیج . خیلی تو اینترنت و گیت هاب گشتم و فقط یک مثال از پیدا کردم که خیلی قدیمی بود و پر از باگ بود و پروژه اصلا اجرا نمیشد. تصمیم گرفتم که پروژش رو آپدیت کنم و باگ هاش رو برطرف کنم ( به NetCore 3.1 اپدیت کردم ولی دیگه آپدیتش به NET7 کاری نداره) . کلی تست روی Chrome , Edge , Opera و Chrome Android گرفتم و خیلی خوب کار میکنه. پیاده سازی خیلی سرراستی هم داره و با اپدیت فایل Service Worker.js خیلی قابلیت های دیگه رو میتونید بهش اضافه کنید. حتما چکش کنید و مشکلی بود Issue بزنید یا Pull Request ایجاد کنید و اگه خوشتون اومد هم میتونید بهش استار بدید😁
https://github.com/babaktaremi/WebPush.ASPNETCore.Updated.Example
اومدم یه سر به سرویس های ایرانی زدم دیدم اوضاع واقعا فاجعس. از نجوا و پنل افتضاح و داکیومنت نصف و نیمش که نگم براتون ( که بعد از اون افتضاح امنیتی به سطح جدیدی از امنیت رسیدن که از پنل خودشون به API های خودشون ارور CORS داره و عملا هیچی باز نمیشه) سرویس پوشه هم که ماشالا تعرفه هاش از قیمت های خود Firebase هم بالاتره.
بعد از یکم گشت و گذار رسیدم به این پکیج . خیلی تو اینترنت و گیت هاب گشتم و فقط یک مثال از پیدا کردم که خیلی قدیمی بود و پر از باگ بود و پروژه اصلا اجرا نمیشد. تصمیم گرفتم که پروژش رو آپدیت کنم و باگ هاش رو برطرف کنم ( به NetCore 3.1 اپدیت کردم ولی دیگه آپدیتش به NET7 کاری نداره) . کلی تست روی Chrome , Edge , Opera و Chrome Android گرفتم و خیلی خوب کار میکنه. پیاده سازی خیلی سرراستی هم داره و با اپدیت فایل Service Worker.js خیلی قابلیت های دیگه رو میتونید بهش اضافه کنید. حتما چکش کنید و مشکلی بود Issue بزنید یا Pull Request ایجاد کنید و اگه خوشتون اومد هم میتونید بهش استار بدید😁
https://github.com/babaktaremi/WebPush.ASPNETCore.Updated.Example
شاید برای خیلی ها سوال باشه که برای Web API در ASP NET Core چجوری میتونیم پلاگین بنویسیم. یا آیا پلاگین نویسی برای Web API کار درستی هست یا نه؟
بنظر من پلاگین ها نقطه ای خیلی جذاب بین Monolithic Application ها و معماری میکروسرویس هستن که دردسر جفتشون رو ندارن و در عین حال اکثر مزیت جفتشون رو دارند.
تو ریپوی Clean Architecture Template ( که یکی از ریپو های مورد علاقم هست و مرتب آپدیتش میکنم) قابلیت پلاگین نویسی رو بهش اضافه کردم ( توی README مفصل توضیحش دادم. مثالش هم خیلی باحال و سادس بنظرم)
وقت کردید چکش کنید. دستتون هم برای Issue زدن و pull request ساختن و بخصوص استار دادن کاملا بازه 😁
https://github.com/babaktaremi/Clean-Architecture-Template
بنظر من پلاگین ها نقطه ای خیلی جذاب بین Monolithic Application ها و معماری میکروسرویس هستن که دردسر جفتشون رو ندارن و در عین حال اکثر مزیت جفتشون رو دارند.
تو ریپوی Clean Architecture Template ( که یکی از ریپو های مورد علاقم هست و مرتب آپدیتش میکنم) قابلیت پلاگین نویسی رو بهش اضافه کردم ( توی README مفصل توضیحش دادم. مثالش هم خیلی باحال و سادس بنظرم)
وقت کردید چکش کنید. دستتون هم برای Issue زدن و pull request ساختن و بخصوص استار دادن کاملا بازه 😁
https://github.com/babaktaremi/Clean-Architecture-Template
GitHub
GitHub - babaktaremi/Clean-Architecture-Template: 🧹 Ready to develop template based on clean architecture principles. Supports…
🧹 Ready to develop template based on clean architecture principles. Supports ASP NET Core Identity integrated with JWE tokens, OTP authentication, stand alone plugin development, CQRS pattern using...