سؤال

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

ما زلت لم أجد أي مثال على ذلك.

أي مساعدة؟

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

المحلول

هناك طريقتان رئيسيتان للتعامل مع تحويلات الأحداث. كلاهما يحدث أثناء تحلل الحدث:

  1. يمكنك إضافة فصول جديدة بأرقام الإصدار (شيء ما ، سيقوم Deserializer بتأسيس الفصل وملء الفصل ، وتم نقله إلى محول للحصول على نفس الحدث في نسخته العليا ، هنا شيء Happened3. تتمثل إحدى المشكلات في أنه سيتعين عليك أيضًا تحديث معالجات الأحداث لاستخدام الإصدار الأخير من الحدث. للتخفيف من ذلك ، يمكنك استخدام اتفاقية تفيد بأن شيء ما هو الإصدار الأخير دائمًا. عند الذهاب إلى v2 ، أعد تسمية شيء ما على أنه شيء ما هو appened1 وإنشاء شيء ما سيكون V2. للقيام بذلك ، تحتاج إلى التحكم في الفصول التي تم إنشاؤها من الحدث المسلسل نظرًا لأن اسم الفئة المسلسل لن يحتوي على رقم الإصدار ، يجب عليك تخزينه جانباً.

  2. بدلاً من ذلك الاحتفاظ بكل إصدار من الفئات في الكود الخاص بك ، سيتلقى المحول مستندًا (شجرة ، مثل مستند XML أو كائن JSON) وسيقوم بتعديله لتوفير المعلومات اللازمة لإنشاء الإصدار الأخير.

كل هذا يعتمد على السيطرة التي لديك على خط أنابيب التخلص من التخلص.

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