مواردی که در Entity Framework Core 7.0 اضافه خواهد شد
200, OK
https://github.com/dotnet/efcore/issues/26994 icon

Plan for Entity Framework Core 7.0

در این لینک، لیستی از مواردی که در EF Core 7 اضافه خواهد شد را می‌توانید ملاحظه کنید.

از مهم‌ترین آن‌ها می‌توان به Distributed transactions   اشاره کرد.

همچنین اسم EF Core 7 بصورت خلاصه EF7 نامیده می‌شود.

مواردی که در Entity Framework Core 7.0 اضافه خواهد شد
کجا می توانیم از Task.WhenAll استفاده کنیم و چگونه؟
200, OK
https://virgool.io/@ahmadpooromid/%DA%A9%D8%AC%D8%A7-%D9%85%DB%8C-%D8%AA%D9%88%D8%A7%D9%86%DB%8C%D9%85-%D8%A7%D8%B2-taskwhenall-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%DA%A9%D9%86%DB%8C%D9%85-%D9%88-%DA%86%DA%AF%D9%88%D9%86%D9%87-nv7eumbl6pn5 icon

در برنامه نویسی Asynchronous در سی شارپ، برای نوشتن کدهایی با پرفرمنس بهتر، روش هایی وجود دارد.

یکی از این روش‌ها استفاده از Task.WhenAll است.

در این مقاله به این موضوع می‌پردازیم و شرایطی را بررسی می‌کنیم که استفاده از Task.WhenAll این امکان را به ما می‌دهد که کد با پرفرمنس بهتری بنویسیم. 

کجا می توانیم از Task.WhenAll استفاده کنیم و چگونه؟
کاربرد EventBus و معرفی پکیج NeoBus
200, OK
https://virgool.io/@ahmadpooromid/%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF-eventbus-%D9%88-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%BE%DA%A9%DB%8C%D8%AC-neobus-rveoqqgefbmu icon

در این مطلب به معرفی و کاربرد EventBus پرداخته می‌شود.

هم چنین یک EventBus جهت استفاده تو پروژه‌های دات نتی معرفی و نحوه کار آن شرح داده می‌شود.

در واقع این EventBus یک نوگت پکیج هست که شما براحتی میتونید اونو تو پروژه‌های خودتون استفاده کنید.

کاربرد EventBus و معرفی پکیج NeoBus
مفهوم و پیاده سازی Scalability در CQRS
200, OK
https://github.com/omid-ahmadpour/CleanArchitecture-Template icon

اگر به مبحث CQRS علاقمند هستید و میخواهید بطور کامل و درست اونو تو پروژه‌های خودتون پیاده سازی کنید و از پرفرمنس اپلیکیشن خود راضی باشید، ریپازیتوری ای را که معرفی می‌کنم، دنبال کنید.

یکی از مزایای CQRS ، Scalability است. بدون Scale کردن ، کل اپلیکیشن ما درون یک سرور قرار دارد و تنها به منابع یک سرور محدود می‌شود. با گذشت زمان و رشد اپلیکیشن منابع بیشتری مورد نیاز خواهد بود و باید این سرور را قوی‌تر کنیم که این ماجرا هزینه بر است.

چونکه عملیات خواندن بیشتر از نوشتن، آپدیت و حذف اطلاعات درخواست می‌شود درنتیجه بار بیشتری روی کوری‌های اپلیکیشن هست ، پس جداسازی دیتابیس‌های Query و Command می‌تواند تاثیر چشمگیری در سرعت و کارایی اپلیکیشن شما داشته باشد.

بدین ترتیب می‌توانیم برای عملیات Read ، سرور را قویتر و برای باقی عملیات از سرورهای ضعیف‌تر استفاده کنیم و این چیزی است که توسط Scalability فراهم می‌شود.

در این پروژه کانتکست‌ها و ریپازیتوری‌های خواندن و نوشتن جدا شده است و به این ترتیب میتونید در Query ‌ها از کانتکست یا ریپازیتوری خواندن و در Command ‌ها از کانتکست یا ریپازیتوری نوشتن استفاده کنید.

یک راه برای جداسازی دیتابیس‌های خواندن و نوشتن استفاده از تکنیک Always On اسکول سرور است که بعد از پیاده سازی آن، شما می‌توانید کانکشن استرینگ‌های دیتابیس‌های خود را در فایل appsettings.json قرار داده و دیتابیس Command و Query اپلیکیشن خود را بدین ترتیب جدا سازی نمایید.

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

یک راه بهتر می تواند طراحی دیتابیسی باشد که جداول Denormal و  Flat داشته باشد که تمام فیلدهای مورد نیاز درون آن قرارگیرد. سپس با هر بار درج اطلاعات در دیتابیس Command این جداول نیر آپدیت شوند. با داشتن این جداول دیگر نیاز به Join های عجیب و غریب  SQL  نداریم.

بسته به بیزینس مورد نظر و منابع موجود می‌توانید از تکنیک ها، ابزارها و دیتابیس‌های دیگری هم در پیاده سازی‌های خود استفاده کنید.

مفهوم و پیاده سازی Scalability در CQRS
پیاده سازی راحت کشینگ در پروژه های دات نت با PolyCache
200, OK
https://github.com/omid-ahmadpour/PolyCache icon

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

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

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

شما با استفاده از پکیج PolyCache  براحتی و در سریع‌ترین زمان میتونید کشینگ رو پیاده سازی کنید.

روال و جزئیات پیاده سازی در گیت هاب پروژه قرار گرفته است.

پیاده سازی راحت کشینگ در پروژه های دات نت با PolyCache
چند اصل مهم توسعه نرم افزار
200, OK
https://github.com/omid-ahmadpour/Software-Development-Principle icon

Software-Development-Principles

چند اصل توسعه نرم افزار که برنامه نویسان و مهندسین نرم افزار بهتر است بدانند.

some software development principle you should know

چند اصل مهم توسعه نرم افزار
CleanArchitecture-Template
301, MovedPermanently
https://github.com/omidah/CleanArchitecture-Template icon
پیاده سازی معماری تمیز در asp.net core با استفاده از تاپ‌ترین تکنولوژی‌ها و رعایت اصول کدنویسی و معماری نرم افزار


: Technologies used
 ASP.NET Core
 Entity Framework Core
 CQRS
MediatR
 Swagger
 Api Versioning
 FluentValidation
 Serilog
 Elasticsearch(for writing Logs)
 AutoMapper

: Software Development Best Practices used
 Clean Architecture
 Clean Code
 Solid Principles
 REST API Naming Conventions
 Use multiple environments in ASP.NET Core(Development,Production,Staging,etc)
 Modular Design
 Custom Exceptions
 Custom Exception Handling
 PipelineBehavior for Validation and Performance tracking
CleanArchitecture-Template