الگوی CQRS

سوال

سلام به همه دوستان

میخواستم در مورد الگوی CQRS بدونم

اینکه چی هست و آیا جایگزین الگوی Repositroy محسوب میشه

اگه منبعی برای آموزشش می شناسید ممنون میشم بهم بگید

در حال بررسی 0
Unknown 1 سال 1 پاسخ 63 دیده شده 0

پاسخ ( ۱ )

  1. مسیر اصلی CQRS
    اصلی ترین ایده ی پشت این الگو جدا کردن command و query ها میباشد.

    تمام نرم افزارهایی در تلاش برای تعامل با یک سیستم اطلاعاتی و برخورداری از سیستم ذخیره سازی با CRUD هستند،به بیان ساده تر در تمامی سیستم ها مدل هایی وجود دارند که میخواهیم در آن اطلاعات جدید اضافه کنیم،اطلاعات قبلی را بخوانیم،اطلاعات قبلی رو ویرایش کنیم و یا آنها را حذف کنیم.

    یک مثال ساده
    فرض کنید یک در حال طراحی یک سیستم فروشگاهی هستید.ساختار دیتابیس یک فروشگاه پر از ارتباط است؛ هر محصول میتواند گروه داشته باشد،میتواند تعداد زیادی خاصیت و صفت داشته باشد،میتواند در سبد خرید تعداد زیادی کاربر باشد و خیلی چیزهای دیگر.

    در این نوع سیستم ما به دلیل ساختار رابطه ای سیستم بهترین روش برای ذخیره سازی داده استفاده از دیتابیس های رابطه ای مانند Sql Server ، MySql میباشد.

    همچنین در هنگام واکشی اطلاعات به دلیل خاصیت های زیادی که هر محصول میتواند داشته باشد و بزرگ بودن آبجکت مورد نیاز بهترین راه حل استفاده از دیتابیسهای NoSqlمثل MongoDbمیباشد.

    با این شرایط راه حل چیست؟؟
    در چنین پروژه ای شما میباسیت از الگوی CQRS استفاده کنید.

    در این سیستم فروشگاهی لایه ی Repository را به دو بخش کلی تقسیم میکنیم که یه بخش شامل Command ها و بخش دیگر شامل Query ها میباشد که تمامی متد ها را بر اساس نوع آنها جدا میکند.زمانیکه اطلاعات در دیتابیس رابطه ای درج،ویرایش یا حذف میشود یه سرویس که اصطلاحا به آن Service Bus میگویند داده های درج شده در دیتابیس رابطه ای را پردازش میکند و آبجکت پیچیده ای که زمان واکشی داده نیاز داریم را به صورت آماده در دیتابیس NoSql ذخیر میکند.در این حالت شما در زمان واکشی داده برای دریافت داده نیاز به دستورات سخت و پیچیده ندارید،همچنین سرعت واکشی داده به دلیل از پیش پردازش شدن به شدت کاهش میابد.

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

ارسال یک پاسخ