سؤال

تمكنت التمدد إطار (MEF) وتمكنت من الدين إطار (MAF ، ويعرف أيضا باسم النظام.الدين) ويبدو أن إنجاز مشابهة جدا المهام.وفقا لهذا تجاوز سعة مكدس السؤال ، هو MEF بديلا عن النظام.الدين?, يمكنك حتى استخدام كليهما في نفس الوقت.

عندما تختار لاستخدام واحد مقابلالآخر ؟ تحت أي ظرف من الظروف أن تختار لاستخدام كلاهما معا ؟

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

المحلول

لقد تم تقييم هذه الخيارات هنا هو الاستنتاج الذي جئت.

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

MEF هو أكثر مثل حقن التبعية مع بعض المزايا الإضافية مثل الاكتشاف ، ...(رسم فارغة على هذا واحد).درجة من العزلة التي ماف لم يكن موجودا في MEF.هم اثنين من أطر مختلفة عن شيئين مختلفين.

نصائح أخرى

ما Danielg قال هو جيد.وأود أن أضيف:

إذا كنت مشاهدة أشرطة الفيديو عن النظام.Addins, من الواضح أنها تتحدث عن مشاريع كبيرة جدا.وهو يتحدث عن أحد فريق إدارة التطبيق المضيف آخر فريق إدارة كل الدين ، فريق إدارة العقد خط أنابيب.وبناء على ذلك أعتقد النظام.Addins بوضوح أكبر التطبيقات.أنا أفكر التطبيقات مثل نظم تخطيط موارد المؤسسات مثل SAP (ربما ليست كبيرة, ولكن تحصل على هذه الفكرة).إذا كنت شاهدت هذه الفيديوهات يمكنك أن تقول أن كمية العمل لاستخدام النظام.Addins كبيرة جدا.أنها سوف تعمل بشكل جيد إذا كان لديك الكثير من شركات البرمجة 3rd الطرف الإضافية على النظام الخاص بك لا يمكنك كسر أي من هذه الإضافة في العقود تحت طائلة الموت.

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

أهم نقطة أود أن أشير إليه هو أنه على الرغم من النظام.Addins في إطار بالفعل, أنا لا أرى الكثير من الأدلة من الناس ، MEF هو فقط يجلس هناك على CodePlex من المفترض أن تكون مدرجة في .صافي 4 و الناس بدأت بالفعل في بناء الكثير من التطبيقات مع ذلك (وأنا منهم).أعتقد أن يخبرك شيئا عن اثنين من الأطر.

بعد أن وضعت وشحنها MAF التطبيق.وجهات نظري على MAF إلى حد ما المتراخية.

ماف هو "دي إلى جانب النظام" أو "إلى جانب فضفاضة" النظام في أسوأ الأحوال.MEF هو "إلى جانب نظام" أو "فضفاضة زوجين" النظام في أحسن الأحوال.

ماف الفوائد التي أدركنا باستخدام ماف هي:

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

  2. الترخيص على أساس المكونات التي تم شراؤها.يمكننا التحكم الدين تم تحميلها من قبل دور المستخدم و أذونات ما إذا كان الدين كان مرخصة للاستخدام.

  3. سريع (أسرع من الوقت للوصول الى السوق).فإن الدين التنمية يناسب تماما مع رشيقة methodolgy ، قام فريق تطوير واحد الدين في وقت دون الحاجة إلى وضع أيضا دمج قطعة مع بقية التطبيقات.

  4. تحسين الجودة (فقط QA عنصر واحد في كل مرة).QA ثم يمكن اختبار وإصدار العيوب بت واحد من الوظائف.حالات الاختبار كان أسهل لوضع وتنفيذ.

  5. نشر (إضافة المكونات كما هي المتقدمة و صدر وأنها "مجرد عمل").نشر ليست سوى مسألة جعل الدين و تثبيت الملف.لا اعتبارات أخرى ضرورية!

  6. مكونات جديدة عملت مع المكونات القديمة.الدين التي تم تطويرها في وقت مبكر أبقى في العمل.جديد الوظائف الإضافية تناسب التطبيق بسلاسة

في رأيي أن هذه التكنولوجيات في الواقع الهدف حالات الاستخدام مختلفة جدا.

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

ماف لسيناريو حيث شخص/فريق تطوير منصة أو المضيف والمجموعات الأخرى إضافة قدرات بعد حقيقة و ليس تحت سيطرة مجموعة المضيف.في هذا السيناريو الحاجة أكثر تفصيلا آليات "حماية" المضيف من المارقة الإضافية (أو الحماية الإضافية من بعضها البعض).

الثالث مماثلة في نمط التكنولوجيا كلها ProviderBase المخطط.هذا يمكن أيضا استبدال القدرة ولكن هدفها هو حقا السيناريو حيث host/التطبيق يحتاج الاطلاق القدرة والحاجة هي حقا تحديد تطبيقات مختلفة عبر التكوين.

أنا فقط وجدت هذا مطولة المادة مناقشة كل ماف و MEF.http://emcpadden.wordpress.com/2008/12/07/managed-extensibility-framework-and-others/

بالإضافة إلى النقاط التي أثارها إجابات أخرى, يبدو كما لو كان أحد الاختلافات الرئيسية بين MEF و ماف هو أن تدار التمدد إطار سيسمح composable جزء تعتمد على آخر.وهذا من شأنه أن يسمح في المكونات تعتمد على المكونات في آخر, على سبيل المثال.

تمكنت التمدد الإطار أيضا لا تميز بين المضيف في هذا النظام.الدين لا.بقدر ما MEF بالقلق, أنهم جميعا مجرد composable أجزاء.

في رأيي, أفضل طريقة لاكتشاف الاختلافات هو بعض التدريب العملي على رمز.لقد وجدت اثنين من MSDN تجول ، سواء مع آلة حاسبة سبيل المثال بحيث يمكنك بسهولة مقارنة تطبيقات:

MEF: آلة حاسبة بسيطة على سبيل المثال استخدام MEF أجزاء
(مanaged هـxtensibility Framework)

  • يوضح كيفية بناء آلة حاسبة بسيطة باستخدام MEF التكنولوجيا.لا تظهر كيفية تحميل الخارجي dlls.(ولكن يمكنك ببساطة تعديل المثال باستخدام catalog.Catalogs.Add(new DirectoryCatalog("Plugins", "*.dll")); بدلا من استخدام catalog.Catalogs.Add(new AssemblyCatalog(typeof(Program).Assembly)); واستخراج آلة حاسبة رمز عقد منفصل DLL المشاريع.)
  • MEF لا تحتاج إلى دليل معين بنية أنها بسيطة وسهلة الاستخدام حتى بالنسبة للمشاريع الصغيرة.ذلك يعمل مع الصفات ، أن تعلن ما هو تصديرها ، التي هي سهلة القراءة والفهم. على سبيل المثال: [Export(typeof(IOperation))] [ExportMetadata("Symbol", '+')] class Add: IOperation { public int Operate(int left, int right) { return left + right; } }

  • MEF لا تلقائيا التعامل مع الإصدارات

ماف: آلة حاسبة بسيطة مع V1 و V2 نسخة ماف الإضافات
(مanaged Aبن Framework)

  • يوضح كيفية بناء آلة حاسبة باستخدام V1 المساعد ثم كيفية التحرك إلى V2 المساعد مع الحفاظ على الوراء التوافق (ملاحظة: يمكنك أن تجد V2 نسخة من البرنامج المساعد هنا, الرابط في المقالة الأصلية مكسورة)
  • MAF يفرض محدد بنية الدليل ، وأنه يحتاج إلى الكثير من رمز المتداول أن تجعل من العمل ، وبالتالي أنا لا أوصي به للمشروعات الصغيرة.على سبيل المثال:
    Pipeline
      AddIns
        CalcV1
        CalcV2
      AddInSideAdapters
      AddInViews
      Contracts
      HostSideAdapters
    

كل MEF و ماف مدرجة في .NET Framework 4.x.إذا قارنت مثالين ستلاحظ أن ماف الإضافات لديك الكثير من التعقيد مقارنة مع MEF الإطار - لذلك تحتاج إلى التفكير بعناية عند استخدام أي من هذه الأطر.

MAF و MEF على حد سواء يمكن استخدام AppDomains وكلاهما يمكن تحميل/إلغاء تحميل dll في وقت التشغيل.ومع ذلك فإن الاختلافات لقد وجدت هي:ماف AddIns المنفصلة, MEF مكونات فضفاضة إلى جانب;MAF "ينشط" (new سبيل المثال) في حين MEF يجعل الحالات بشكل افتراضي.

مع MEF يمكنك استخدام الأدوية لجعل GenericHost على أي عقد.وهذا يعني MEF تحميل/تفريغ وإدارة العناصر يمكن أن تكون في المكتبة العامة و تستخدم بشكل عام.

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