سؤال

واحدة من المبادئ الأساسية من CQRS، كما أفهمها، هي أن الأوامر يجب أن تكون مراسقا سلوكا، ولديها قيمة في العمل أو UL، وليس على التركيز على البيانات، أي، CRUD. بدلا من التركيز على تحديث العميل، لدينا أوامر مثل جونسية. ماذا لو كان لديك شاشات CRUD الموجودة هناك لتصحيح بعض البيانات. على سبيل المثال، نحتاج إلى تغيير اسم العميل الذي يتم إملائه. هذا ليس له قيمة كبيرة في العمل. يجب أن يكون هذا فقط تحت مظلة قيادة UpdateCustomer؟

هل كانت مفيدة؟

المحلول

في الواقع، يمكن أن يكون هناك أسباب مختلفة لتحديث اسم العميل. كما تقول، يمكن إملاء إملائي أو ... يمكنك الزواج وتغيير اسمك إلى زوجك.

إذا كان لديك أمر UpdateCustomer فقط، فسوف تفقد النية الأصلية ولن تتمكن من الحصول على سلوكيات مختلفة لكل منها. إذا تم misseled الاسم، فقد يكون الأمر بسيطا مثل تحديث قاعدة البيانات، في حين أن عميلك قد تزوجت، فقد تحتاج إلى إخطار إدارة التسويق حتى يتمكن من تقديم خصم.

في الحالة أن كيانك هو CRUD بحت، لا يوجد أي نية يمكنك ربطها بتعديل الخصائص، فلا من لا بأس أن يكون لديك updateentitycommand. يمكنك بعد ذلك الانتقال ببطء إلى شيء أكثر من المهمة القائمة

نصائح أخرى

أريد فقط وضع تعليق على هذا بسرعة كما برزت.

من المهم أن نلاحظ أن بعض الكائنات هي في الواقع crud وهذا ما يرام. قد لا أهتم حقا لماذا يتغير الاسم في نطاقي حيث أشحن المنتجات إلى الأشخاص ويحتاجون فقط إلى هذه البيانات لطباعة الملصقات البريدية. تكون الحيلة في صنع السلوك الافتراضي ثم العودة إلى واجهة CRUD بمجرد أن تأكد من أنك لا تهتم بالأسباب بدلا من العكس.

جريج

Customerhamsing هو الحدث الذي يتم إطلاقه بعد تحديث موقع العملاء. يقوم هذا الحدث بتحديث قواعد بيانات قواعد بيانات القراءة / ذاكرة التخزين المؤقت. يجب أن يكون الأمر من واجهة المستخدم الرسومية moveCustomer أو شيء من هذا القبيل. أعتقد أنني سأضع تحديث اسم العميل في أمر مثل UpdateCustomer.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top