DotNetZoom
3.03K subscribers
342 photos
18 videos
36 files
606 links
DotNetZoom
💎 Everything about .NET

ارتباط با مدیر و تبلیغات آگهی استخدام:
@mjebrahimi

لینک گروه ASPNET Core:
https://t.iss.one/+ufG25x7lVFgyYTNk
Download Telegram
Forwarded from کدهک
نسخه نهایی NET 6.0 منتشر شد.

نسخه 6.0 دات نت به صورت طولانی مدت پشتیبانی میشود (LTS) و توسعه دهندگان می توانند تا سه سال بدون مهاجرت به نسخه بعدی همچنان آپدیت های آن را دریافت کنند.

به همراه این نسخه سی شارپ 10 و اف شارپ 6 هم منتشر شده است.

به گفته مایکروسافت این نسخه سریعترین نسخه دات نت تا به امروز است و می توانید از همین حالا شروع به استفاده از آن کنید.

با توجه به پایان پشتیبانی دات نت 5 در چند ماه آینده پروژه های دات نت 5 باید هرچه سریعتر به نسخه 6 آپدیت شوند.

میتوانید نسخه جدید را از لینک زیر دانلود کنید یا Visual Studio را به آخرین نسخه آپدیت کنید.

https://dotnet.microsoft.com/download
Forwarded from Software Philosophy
همه چیز در مورد NET Core 6.

دیروز نسخه رسمی NET Core 6. به همراه نسخه رسمی Visual Studio 2022 ارائه شد.
در واقع شما می‌توانید با نصب ویژوال استودیو همزمان NET Core 6. را هم نصب کنید.

اما موضوع این پست و سوال اصلی اینجاست که چه اتفاقاتی در NET Core 6. افتاده و آپدیت ها چه چیز هایی هستند؟

بررسی فیچر های جدیدی که با NET Core 6. ارائه شده:

1 - Looking inside ConfigurationManager in .NET 6
2 - Comparing WebApplicationBuilder to the Generic Host
3 - Exploring the code behind WebApplicationBuilder
4 - Building a middleware pipeline with WebApplication
5 - Supporting EF Core migrations with WebApplicationBuilder
6 - Supporting integration tests with WebApplicationFactory in .NET 6
7 - Analyzers for ASP.NET Core in .NET 6
8 - Improving logging performance with source generators
9 - Source generator updates: incremental generators

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

________
Forwarded from Software Philosophy
اضافه شدن قابلیت Temporal Table به EF Core 6

مایکروسافت در سال 2016 قابلیت Temporal Table که با نام System-Versioned نیز شناخته می‌شود را به SQL Server اضافه کرد.

این قابلیت امکان این را فراهم می‌کند که تغییرات مربوط به دیتا‌های هر جدول را ذخیره سازی کنیم.

این امکان برای مانیتورینگ و همچنین برگرداندن داده‌های حذف شده مفید است ولی باید در نظر داشت که این امکان باعث بالارفتن سریع حافظه دیتابیس می‌شود.

مایکروسافت در آخرین ورژن EF Core یعنی EF Core 6 این قابلیت را فراهم کرده‌است که به واسطه EF هم بتوانیم از این قابلیت SQL استفاده کنیم.

برای این که جدول مورد نظر از این ویژگی برخوردار باشد باید توسط Fluent Api این کار را انجام دهیم:

    modelBuilder
.Entity<Product>()
.ToTable("Products", b => b.IsTemporal());

جهت کسب اطلاعات بیشتر در مورد این ویژگی و نحوه استفاده از آن می‌توانید از این لینک استفاده کنید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

________
Forwarded from Software Philosophy
انتقال داده ها به واسطه Azure Service Bus

امروزه سرعت انتقال داده‌ها از اهمیت بالایی برخوردار است. برای مثال فرض کنید پروژه شما شامل ۲ اپلیکیشن مجزا از هم است که هر دوی آنها از یک دیتابیس مشترک برای داده‌های خود استفاده می‌کنند. اپلیکیشن ۱ بر روی داده‌ها تغییراتی انجام می‌دهد و اپلیکیشن ۲ از این تغییرات استفاده می‌کند.

در حالت عادی اپلیکیشن ۲ برای استفاده از داده‌هایی که قبلا توسط اپلیکیشن ۱ لود شده بود بایستی یک بار دیگر کوئری‌ای بر روی دیتابیس بزند و دیتاها را مجدد لود کند.
اما این روش دوباره کاری است و بهینه نیست.

یک راه حل بهتر استفاده از message broker ها است. تعریف خیلی ساده آن هم مفهوم صف است. یک صف (Queue) که خارج از اپلیکیشن‌های ما قرار دارد.

برای مثال Apache Kafka٬RabbitMQ٬Google Cloud Pub/Sub و ... از جمله معروف‌ترین message broker موجود هستند.

یکی از بهترین message broker های موجود٬ Azure Service Bus است.

این سرویس قابلیت‌هایی فراتر از یک صف معمولی دارد، که از جمله مهمترین آنها می‌توانیم به قابلیت جلوگیری از ارسال داده‌های تکراری و استفاده چندین subscriptions از یک topic را نام ببریم.

البته به صورت پیشفرض (پلن رایگان) از Topic نمیتوانیم استفاده کنیم و صرفا از همان مفهوم Queue می‌شود استفاده کرد.

در این ویدیو نحوه استفاده از Azure Service Bus آموزش داده شده است.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

________
Forwarded from Software Philosophy
امکانات LINQ در NET 6.

۱- امکان مشخص کردن مقدار پیش‌فرض در OrDefault*

var item1 = list1.FirstOrDefault(i => i == 4, -1);
// -1

var item2 = list2.SingleOrDefault(i => i == "Item2", "Not found");
// Not found



۲- متدهای جدید با مدل By*:

- MinBy
- MaxBy
- DistinctBy
- ExceptBy
- IntersectBy
- UnionBy


List<Product> products = new()
{
new() { Name = "Product1", Price = 100 },
new() { Name = "Product2", Price = 5 },
new() { Name = "Product3", Price = 50 },
};

Product theCheapestProduct = products.MinBy(x => x.Price);
Product theMostExpensiveProduct = products.MaxBy(x => x.Price);
Console.WriteLine(theCheapestProduct);
// Output: Product { Name = Product2, Price = 5 }
Console.WriteLine(theMostExpensiveProduct);
// Output: Product { Name = Product1, Price = 100 }


۳- متد کاربردی Chunk :

IEnumerable<int> numbers = Enumerable.Range(1, 505);
IEnumerable<int[]> chunks = numbers.Chunk(100);

foreach (int[] chunk in chunks)
{
Console.WriteLine($"{chunk.First()}...{chunk.Last()}");
}

// Output:
// 1...100
// 101...200
// 201...300
// 301...400
// 401...500
// 501...505


۴- تابع Zip

int[] numbers = { 1, 2, 3, 4, };
string[] months = { "Jan", "Feb", "Mar" };
string[] seasons = { "Winter", "Winter", "Spring" };

var test = numbers.Zip(months).Zip(seasons);

foreach ((int, string, string) zipped in numbers.Zip(months, seasons))
{
Console.WriteLine($"{zipped.Item1} {zipped.Item2} {zipped.Item3}");
}


۵- پشتیبانی از Index در تابع ElementAt :

IEnumerable<int> numbers = new int[] { 1, 2, 3, 4, 5 };
int last = numbers.ElementAt(^0);
Console.WriteLine(last); // 5


۶- پشتیبانی از Range در تابع Take :
var taken1 = numbers.Take(2..4);


۷- جلوگیری از شمارش تایپ‌های غیر Enumerable:

numbers.TryGetNonEnumeratedCount(out int count)



https://raygun.com/blog/linq-net-6-improvements/

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، برروی دکمه «نظرت را بگو» کلیک کنید.

#حامد_حاجیلو (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

________