سؤال

لقد قمت بتنزيلها المنشور V4 وركض المثبت. ذهبت إلى الدليل وقمت بتشغيل الملفتين التاليتين:

  • سطح المكتب فقط - فتح الشكل مع mef quickstart.bat
  • سطح المكتب فقط - فتح الشكل مع Unity QuickStart.Bat

عندما أقوم بتجميع هذه التطبيقات ، لا أرى أي فرق حقيقي. لقد بحثت عن MEF vs Unity ووجدت بعض الإيجابيات/السلبيات ، ولكن لا شيء ينص على وجه التحديد على ما إذا كان المرء "أفضل" (وأنا أعلم أن هذا شخصي) مع الاستخدام في المنشور. أظن أنه إذا أدرجت متطلباتي ، فيمكن لشخص ما أن يشيرني إلى التقنيات الصحيحة لاستخدامها (حتى لو لم يكن Prism 4).

  • يتم كتابة التطبيق في WPF (ليس Silverlight).
  • سيكون التطبيق الرئيسي رقيقًا للغاية.
  • سيستخدم التطبيق الرئيسي خدمة ويب لإنشاء قائمة "التطبيقات/الوحدات" التي يمكن لأي شخص الوصول إليها.
  • سيتم احتواء "التطبيقات/الوحدات" بالكامل في المكتبات المدارة الأخرى.
  • يحصل التطبيق الرئيسي على وجهات النظر و ViewModels من خلال التفكير في هذه DLLs.
  • يجب أن يتغذى التطبيق الرئيسي في الخدمات للتسجيل ، وما إلى ذلك في "التطبيقات/الوحدات".

فمثلا:

قد يكون لدى المستخدم الأساسي خيارات:

  • عرض عنوان العنوان

جميع العناصر ذات الصلة هي داخل العنوان.

قد يكون لدى المستخدم المتقدم خيارات:

  • سجل عنوان جديد
  • سجل العنوان المفتوح (تحديث/حذف)
  • ادارة المستخدمين

جميع العناصر ذات الصلة هي داخل العنوان.
جميع العناصر إدارة ذات صلة هي داخل admin.dll.

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

لقد قمت بالفعل بحل تنزيل DLL عبر WebService. قون

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

المحلول

لا شيء "أفضل": إنها أشياء مختلفة.

IMO يجب أن يكون اختيارك مدفوعًا فقط بمتطلباتك. بناءً على المتطلبات التي نشرتها هنا ، أقترح عليك استخدام MEF ، لأن لديك وحدات موجودة في DLLs والتطبيق الرئيسي غير مدرك للوحدات النمطية التي يجب تحميلها. هذه المهام هي سبب وجود MEF.

على أي حال ، يمكنك استخدامهما على حد سواء: MEF للنموذج والوحدة لاتخاذ مزايا حقن التبعية (قابلية الاختبار ، إعادة الاستخدام ، ...)

نصائح أخرى

إذا لم تتم إعادة ترجمة جميع الوحدات في نفس الوقت الذي تمنحك فيه التطبيق ، فإن MEF تمنحك الكثير من الطرق للتعامل مع تغيير الواجهات في التطبيق الرئيسي. وإلا MEF مايو كن أكثر تعقيدًا ثم تحتاج.

لقد كنت أستخدم الوحدة على مدار عام مع المنشور ، لكنني لاحظت بعض مشكلات تسرب الذاكرة الخطيرة. ومن هنا قررت إعطاء PRISM 4 و MEF A GO. ما فعلته هو أولاً تحويل تطبيقي لاستخدام Prism 4 مع الوحدة. ثم قمت بتحويل فرع لاستخدام MEF. قد يبدو الأمر مضحكًا ولكن يبدو أن MEF تعالج استهلاك الذاكرة وإطلاقًا أفضل من الوحدة.

هل سيكون من الجيد سماع ما إذا كان الآخرون قد جعلوا نفس التجربة؟

فيما يتعلق بسؤالك عما إذا كان بإمكان MEF و Unity العمل بشكل جيد مع بعضهما البعض ، يمكنني أن أخبرك أنهما يعملان بشكل جيد مع بعضهما البعض. لقد طورت دليلًا على تطبيق المفهوم الذي استخدم المنشور والوحدة و MEF.

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