مروری بر CQRS

ارئه دهنده : ناصر صفری نیا

در این وبینار قصد داریم علت نیاز به الگوی CQRS در پروژه های مبتنی بر DDD را بررسی کنیم، خواستگاه CQRS را از دیدگاه پدید آورنده ی آن (Grek Young) معرفی کرده و ملزومات استفاده از Event Sourcing به عنوان مکانیزم ذخیره سازی را بیان کنیم.

درباره این وبینار :

CQRS سرنام چهار کلمه ی Command Query Responsibility Segregation باشد که به معنی تفکیک وظایف Command و Query ها در نرم افزار است. در واقع، Command ها درخواست های نوشتن و Query ها درخواست های خواندن می باشند که باید توسط اشیا متفاوتی مدیریت و انجام شوند. مسائل متنوع زیادی در مورد موضوع CQRS وجود دارد که اغلب با Domain Driven Design گره خورده اند. قرار دادن دو بانک اطلاعاتی در برنامه به منظور انجام عملیات خواندن و نوشتن به صورت جداگانه از هر کدام از این بانک ها ساده ترین شکل الگوی CQRS می باشد. در تصویر زیر شکل ساده از این الگو را مشاهده می کنید.

طراحی دامنه محور یا همان Domain Driven Design در واقع درک نیازهای واقعی کسب و کار مشتری است. ما باید درباره دامنه های مختلف مانند بانکداری، مخابرات، زنجیره تامین، مراقبت های بهداشتی و… دانش داشته باشیم. بنابراین در اینجا دامنه به معنی دانش کسب و کار درباره صنعت خاص است. به طور مشابه طراحی دامنه محور تمرکز بیشتری نسبت به نیازهای کسب و کار دارد نه به تکنولوژی. برای شروع نوشتن یک سیستم، باید بدانیم که مشتری چه چیزی را مد نظر دارد، در حین فاز اولیه هیچگاه درباره برنامه نویسی و معماری آن فکر نمیکنید. هدف اصلی شما درک تمام شرایط کسب و کار مشتری و چگونگی مدل دامنه مورد نیاز او است.

بنابراین چیزی که ما به دنبال آن هستیم بحث با مشتری درباره نیازهای کسب و کار او است. Domain Driven Design صرفا بر اساس این فرضیات برای ترسیم کردن نیازهای کسب و کار در مدل دامنه است. طراحی دامنه محور همه چیز درباره چگونگی طراحی مدل دامنه شماست. به این معنا که هر کلاس دامنه باید یک رابطه مستقیم با آنچه که در دامنه کسب و کار است داشته باشد.