تو مبحث DDD دلیل اصلی که Repository وارد داستان شده Persistence Ignorance میباشد ،
همونطور که میدونید ، این قضیه میگه که شما تو Domain نبایید بگید EF این طوری Select میزنه Nhibernate یک نوع دیگر ، NoSql یک نحو دیگر (NoSql ها هم بخاطر اینکه میتونند براحتی یک Aggregate رو ذخیره کنند میتونند ابزار خوبی برای DDD باشند! )
چون Domain نباید به تکنولوژی وابسته باشد ! نباید رفرنسی به دیتا اکسس یا EF و یا ... داشته باشد فقط یک سری Interface تعریف میکند ، که یکی که بعدا به نام لایه دیتا اکسس میباشد باید این اینترفیس رو Implement کتد !
در مورد CQRS هم چون معمولا Application Layer بر روی Rest هاست میشوند پس هر Request فقط شامل یک Command میباشد که Unit Of work رو هم فقط روی همان Command ایجاد میکنند
جالبه براتون بگم که در Domain Driven Design اصل بر این هست که شما در هر ترانزاکشن فقط یک Aggregate رو باید ذخیره کنید و تغییر در Aggregate های دیگه بوسیله Event Source ها Publish میشه
و از توصیههای اولیه DDD اینه که برای پروژههای Complex و Huge استفاده بشه ،پس قطعا برای یک پروژه که از این متد استفاده نمیشه و یا در ابعاد کوچکتر میباشد کاملا حرف شما درست باشد و از پیچیده شدن برنامه جلوگیری میکند
همونطور که میدونید ، این قضیه میگه که شما تو Domain نبایید بگید EF این طوری Select میزنه Nhibernate یک نوع دیگر ، NoSql یک نحو دیگر (NoSql ها هم بخاطر اینکه میتونند براحتی یک Aggregate رو ذخیره کنند میتونند ابزار خوبی برای DDD باشند! )
چون Domain نباید به تکنولوژی وابسته باشد ! نباید رفرنسی به دیتا اکسس یا EF و یا ... داشته باشد فقط یک سری Interface تعریف میکند ، که یکی که بعدا به نام لایه دیتا اکسس میباشد باید این اینترفیس رو Implement کتد !
در مورد CQRS هم چون معمولا Application Layer بر روی Rest هاست میشوند پس هر Request فقط شامل یک Command میباشد که Unit Of work رو هم فقط روی همان Command ایجاد میکنند
جالبه براتون بگم که در Domain Driven Design اصل بر این هست که شما در هر ترانزاکشن فقط یک Aggregate رو باید ذخیره کنید و تغییر در Aggregate های دیگه بوسیله Event Source ها Publish میشه
و از توصیههای اولیه DDD اینه که برای پروژههای Complex و Huge استفاده بشه ،پس قطعا برای یک پروژه که از این متد استفاده نمیشه و یا در ابعاد کوچکتر میباشد کاملا حرف شما درست باشد و از پیچیده شدن برنامه جلوگیری میکند