Plan for Entity Framework Core 7.0
در این لینک، لیستی از مواردی که در EF Core 7 اضافه خواهد شد را میتوانید ملاحظه کنید.
از مهمترین آنها میتوان به Distributed transactions اشاره کرد.
همچنین اسم EF Core 7 بصورت خلاصه EF7 نامیده میشود.
Plan for Entity Framework Core 7.0
در این لینک، لیستی از مواردی که در EF Core 7 اضافه خواهد شد را میتوانید ملاحظه کنید.
از مهمترین آنها میتوان به Distributed transactions اشاره کرد.
همچنین اسم EF Core 7 بصورت خلاصه EF7 نامیده میشود.
اگر به مبحث CQRS علاقمند هستید و میخواهید بطور کامل و درست اونو تو پروژههای خودتون پیاده سازی کنید و از پرفرمنس اپلیکیشن خود راضی باشید، ریپازیتوری ای را که معرفی میکنم، دنبال کنید.
یکی از مزایای CQRS ، Scalability است. بدون Scale کردن ، کل اپلیکیشن ما درون یک سرور قرار دارد و تنها به منابع یک سرور محدود میشود. با گذشت زمان و رشد اپلیکیشن منابع بیشتری مورد نیاز خواهد بود و باید این سرور را قویتر کنیم که این ماجرا هزینه بر است.
چونکه عملیات خواندن بیشتر از نوشتن، آپدیت و حذف اطلاعات درخواست میشود درنتیجه بار بیشتری روی کوریهای اپلیکیشن هست ، پس جداسازی دیتابیسهای Query و Command میتواند تاثیر چشمگیری در سرعت و کارایی اپلیکیشن شما داشته باشد.
بدین ترتیب میتوانیم برای عملیات Read ، سرور را قویتر و برای باقی عملیات از سرورهای ضعیفتر استفاده کنیم و این چیزی است که توسط Scalability فراهم میشود.
در این پروژه کانتکستها و ریپازیتوریهای خواندن و نوشتن جدا شده است و به این ترتیب میتونید در Query ها از کانتکست یا ریپازیتوری خواندن و در Command ها از کانتکست یا ریپازیتوری نوشتن استفاده کنید.
یک راه برای جداسازی دیتابیسهای خواندن و نوشتن استفاده از تکنیک Always On اسکول سرور است که بعد از پیاده سازی آن، شما میتوانید کانکشن استرینگهای دیتابیسهای خود را در فایل appsettings.json قرار داده و دیتابیس Command و Query اپلیکیشن خود را بدین ترتیب جدا سازی نمایید.
راه حل دیگر میتواند این باشد که در پیاده سازی ریپازیتوری خواندن خود از Dapper برای کوری گرفتن استفاده کنید که کارایی و سرعت آن در مواردی به مراتب بیشتر از ef است.
یک راه بهتر می تواند طراحی دیتابیسی باشد که جداول Denormal و Flat داشته باشد که تمام فیلدهای مورد نیاز درون آن قرارگیرد. سپس با هر بار درج اطلاعات در دیتابیس Command این جداول نیر آپدیت شوند. با داشتن این جداول دیگر نیاز به Join های عجیب و غریب SQL نداریم.
بسته به بیزینس مورد نظر و منابع موجود میتوانید از تکنیک ها، ابزارها و دیتابیسهای دیگری هم در پیاده سازیهای خود استفاده کنید.
با توجه به پیشرفت تکنولوژی و معماریهای مدرن، در اپلیکیشنهای امروزی سرعت و کارایی از مولفه هایی هستند که بیشتر احساس نیاز میشوند و درصورت عدم دارا بودن این مولفه ها، اپلیکیشن مورد توجه کاربران قرار نخواهد گرفت و درنهایت سودی به بار نخواهد آمد.
یکی از روشهای کسب این مولفهها استفاده از کشینگ در سطح ایپلیکیشن خودتون است.
در زیر پکیجی رو براتون معرفی میکنم که میتوانید در پروژههای دات نت خودتون کشینگ رو براحتی پیاده سازی کنید.
شما با استفاده از پکیج PolyCache براحتی و در سریعترین زمان میتونید کشینگ رو پیاده سازی کنید.
روال و جزئیات پیاده سازی در گیت هاب پروژه قرار گرفته است.