‫۳ سال و ۹ ماه قبل، دوشنبه ۱۰ آذر ۱۳۹۹، ساعت ۱۵:۱۸
علاوه بر این تغییرات، در NET 5. به کلاس HttpClient یک متد جدید بنام Send اضافه شده است که نسخه Sync متد SendAsync است. در نگاه اول شاید عجیب باشد که برای یک متد Async، در NET 5. نسخه Sync اضافه شده است!

در نسخه‌های پیش‌تر از NET 5.، کلاس HttpClient متدی برای ارتباط Synchronous نداشت و اگر Code-base ای قدیمی بود و بر این اساس، از پایه با دید Async طراحی نشده بود و یا interface ای وجود داشت که متدهای آن فقط synchronous بودند، مجبور به استفاده از متدهای Async این کلاس (HttpClient) با استفاده از GetAwaiter.GetResult یا Result یا Wait روی آنها داخل متدهای Sync خود میشدید.
در NET 5. متد Send اضافه شد تا این مشکل را برطرف کند. استفاده از sync over async، در حالت کلی overhead بیشتری نسبت به استفاده از متد sync بطور مسقیم دارد! و برای رفع این مشکل، نسخه synchronous نیز برای Send روی HttpClient اضافه شد. 34948#
var httpClient = new HttpClient();
httpClient.SendAsync(null!); // works on .NET 5 and before
httpClient.Send(null!); // Works on .NET 5, But not compiling on previous versions!

‫۴ سال و ۷ ماه قبل، سه‌شنبه ۲۴ دی ۱۳۹۸، ساعت ۱۵:۳۹
سلام، 
خیر، به تغییر دیگه ای نیازی نیست اما به این نکته توجه کنید که اگر منظورتون از "پروژه mvc"، یک پروژه ASP.NET MVC هست، نیازی به اضافه کردن این مورد بصورت Explicit داخل Web.Config نیست، چون بصورت پیشفرض برنامه‌های ASP.NET و بطور کلی سمت سرور، از Server GC استفاده میکنن.
‫۴ سال و ۹ ماه قبل، یکشنبه ۱۰ آذر ۱۳۹۸، ساعت ۱۴:۳۰
علاوه بر پاسخ وحید عزیز که کلا GC رو در Runtime غیرفعال میکنه، شما میتونید در #C با استفاده از کلمه کلیدی unsafe در یک block از متد، کدی بنویسید که Unmanaged باشه.
هرکدی در داخل unsafe block نوشته میشه، از تحت کنترل CLR خارج میشه و مکانیزم GC هم همونطور که گفتیم، داخل Runtime تعبیه شده و با خارج کردن CLR، عملا GC ای هم وجود نداره.
با این روش، داخل برنامه کاملا Managed خودتون، میتونید یک قسمتی از برنامه رو Unmanaged بنویسید که البته use-case همچین چیزی بسیار کم هست.
‫۵ سال و ۲ ماه قبل، پنجشنبه ۳۰ خرداد ۱۳۹۸، ساعت ۱۵:۰۵
پیاده سازی Event Souring به خودی خود با استفاده از MediatR کار پیچیده ای نیست و براحتی با استفاده از Behavior هاش قابل پیاده سازی هست.
اگر پروژه شما با MediatR نیست ، شما میتونید از Attribute‌ها ، Middleware‌ها و یا AOP برای پیاده سازی خودکار این مکانیزم استفاده کنید که نسبت به استفاده از Command‌های MediatR ، کمی کار سختتر خواهد بود.
‫۵ سال و ۷ ماه قبل، یکشنبه ۱۴ بهمن ۱۳۹۷، ساعت ۱۷:۲۹
استراتژی‌های مختلفی برای پیاده سازی Rollback وجود داره ، در قسمت بعد یک PipelineBehavior مینویسیم که داخلش از Transaction استفاده میکنیم و کل بدنه Command هارو داخل Transaction قرار میدیم تا در صورت بوجود آمدن استثنا ، RollBack بشه.