كيف يمكنني الاستفادة من iobservable/iobserver للتخلص من "كائن الله"؟

StackOverflow https://stackoverflow.com/questions/2275167

سؤال

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

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

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

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

لقد رأيت المزيد حول ميزات iobservable/iobserver من الإطار التفاعلي والتي يتم لفها إلى .NET 4.0 (على ما أظن).

هل يمكنني الاستفادة من هذا النمط للمساعدة في استبدال "كائن الله"؟ كيف يجب أن أفعل هذا؟ هل هناك أي موارد لاستخدام هذا النمط لهذا الغرض المحدد؟

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

المحلول

يبدو أنه يمكنك استبدالك كائن الله بماذا MSDN يصف هنا:

لإنشاء تطبيقات معالجة الأحداث المعقدة (CEP) باستخدام منصة Microsoft Streaminsight ، يمكنك إنشاء هياكل تحدد الأحداث ، والكائنات التي تنتج وتستهلك الأحداث ، وقوالب الاستعلام التي تحتوي على منطق العمل اللازم لمعالجة الأحداث.

فريقنا لا ينتقل إلى .NET 4.0 في أي وقت قريب (لسوء الحظ). لذلك قمنا بالتحايل أ كائن الله سيناريو عن طريق بناء إطار مخصص يشبه ما يوفره MAF/MEF. أنشأ هذا قاعدة معرفة موزعة باستخدام ما تسميه Microsoft مشترك كهربائي. كل محول مسؤول فقط عن الوحدة النمطية الخاصة به ، ومرور البيانات ، والأحداث ، وما إلى ذلك. هناك شائع المشغل أو العامل يستقبل البيانات والأحداث والعمليات وينتقل إلى المحول المعني.

فهمي IObservable & IObserver يضفيني على الاعتقاد بأن أ كائن الله لن يكون ضروريًا - في الواقع إنشاء قاعدة معرفة موزعة لما يجري داخل الأجزاء المختلفة. يبدو أن ميزة واضحة لهذه الواجهات هي أن التواصل المتوسط (أي المحول) لم يعد مطلوبًا. وبالتالي فإن توزيع المعرفة هو حقا في فئة المشتقة من iobservable. هذا النموذج يستمد بطبيعته أ المتكلم/المستجيب العلاقة - لا توجد فئة وساطة/تحكيم.

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