در قسمت قبلی درباره تفاوتهای Stack و Heap، صحبت کرده و به این نتیجه رسیدیم که برای آزادسازی حافظه Heap، در صورتیکه نخواهیم اینکار را بصورت دستی انجام دهیم، نیاز به Garbage Collector پیدا خواهیم کرد. تاریخچهای مختصر از GC در NET.
ایده اولیه ایجاد Garbage Collector در NET.، در سال 1990 بود که در آن زمان، مایکروسافت مشغول پیاده سازی خود از JavaScript بنام JScript بود. در ا ...
در این مطلب قصد داریم به تفاوتهای بین Stack و Heap در Memory و زبان #C بپردازیم.
به زبان ساده، وقتی شما متغیر جدیدی را ایجاد میکنید، با توجه به نوع (Type) آن متغیر، "مقدار" متغیر شما در Stack یا Heap قرار خواهد گرفت. Stack Stack نوعی ساختمان دادهاست که در آن، دادهها بصورت خطی قرار گرفته و اصطلاحا ساختار LIFO ( مخفف Last i ...
در این قسمت قصد داریم به بررسی Behavior ها در فریمورک MediatR بپردازیم. کدهای این قسمت بهروزرسانی و از این ریپازیتوری قابل دسترسی است. با استفاده از Behaviorها امکان پیاده سازی AOP را براحتی خواهید داشت. Behaviorها، مانند Filter ها در ASP.NET MVC هستند. همانطور که با استفاده از متدهای OnActionExecuting و OnActionExecuted میتوانستیم اعمالی را قبل و بعد از اجرای یک اکشنمتد انجام دهیم، چنین قابلیتی را با Behaviorها در Me ...
در قسمت قبلی روش استفاده از IRequest و IRequestHandler را در MediatR که نقش پیاده سازی Command/Query را در CQRS بر عهده دارند، بررسی کردیم. کدهای این قسمت در این ریپازیتوری بهروزرسانی شده و قابل دسترسی است.
Command ما که نقش ایجاد یک مشتری را داشت ( CreateCustomerCommand )، هیچ Validation ای برای اعتبار سنجی مقادیر ورودی از سمت کاربر را ندارد و کاربر با هر مقادیری میتواند این Command را فراخو ...
در این مطلب قصد داریم به بررسی امکانات داخلی فریمورک MediatR بپردازیم. سورس این قسمت مقاله در این ریپازیتوری قابل دسترسی است. نصب و راه اندازی در ابتدا یک پروژه جدید ASP.NET Core از نوع API را ایجاد میکنیم و با استفاده از Nuget Package Manager ، پکیج MediatR را داخل پروژه نصب میکنیم: Install-Package MediatR
...
در مطالب قبلی ( 1 , 2 ) الگوی CQRS معرفی شد. همانطور که میبینید، پیاده سازی این الگو هرچند با فریمورک آمادهای همچون SimpleCQRS ، دارای پیچیدگی زیادی است و باعث نوشتن حجم زیادی کد میشود. فریمورک MediatR توسط توسعه دهنده کتابخانهی محبوب AutoMapper ایجاد شدهاست. این فریمورک پیاده سازی کاملی از الگوی طراحی Mediator در NET. است که داخل خود، تمام پیچیدگیهای پیاده سازی CQRS را Abstract کرده و با حداقل کد ممکن، میتوانید بهراح ...
Route Constraints قابلیتی است در ASP.NET Core که با استفاده از آن میتوانید از رسیدن مقادیر نامعتبر به پارامترهای Action متد یک Controller جلوگیری کنید. بعنوان مثال میتوانید محدودیتی قرار دهید که Routing فقط زمانی انجام شود که پارامتر وارد شده توسط کاربر، از جنس int باشد: [Route("api/[controller]")]
public class ValuesController : ControllerBase
{
[HttpGet("{id:int}")]
public IActionResult Get(int id)
{
...
در مطالب گذشته، دربارهی پیاده سازی API Versioning در ASP.NET Web API و الزامات استفادهی از آن، صحبت شدهاست. اگر مطلب ذکر شده را مطالعه کنید، میبینید که پیاده سازی Versioning در ASP.NET Web API کاری دشوار و زمانبر بود؛ اما در ASP.NET Core انجام تمامی آن مراحل، در 1 خط صورت میگیرد که در ادامه آن را بررسی میکنیم. برای شروع با اجرای این دستور در Package Manager Console، پکیج Microsoft.AspNetCore.Mvc.Versioning را داخل پر ...