ما هو إطار عمل MVVM الذي يجب أن أستخدمه؟[مغلق]

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

  •  05-07-2019
  •  | 
  •  

سؤال

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

ومن بين الخيارات الممكنة ما يلي:

  • مجموعة أدوات MVVM
  • مؤسسة إم في في إم
  • إطار تطبيق WPF (WAF)
  • ضوء MVVM
  • كاليبورن
  • سهل جدا
  • نشور زجاجي

ومن خلال تجربتك أيهما أفضل؟

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

المحلول

يعتمد الأمر حقًا على ما تحاول تحقيقه، وحجم البنية التحتية التي تريد تنفيذها بالفعل، بالإضافة إلى سهولة العثور على العينات التي تساعدك.سأعلن عن اهتمامي هنا، لأنني شاركت بنشاط في إطار عمل MVVM واحد على الأقل، وكان لدي مدخلات في الآخرين من خلال مجموعة WPF Disciples، لذلك أنا متحيز قليلاً.بقول ذلك ، هنا يذهب:

ميكروسوفت مجموعة أدوات MVVM - وهذا لا يزال في مراحل ألفا إلى حد كبير.عندما تم إصداره في الأصل، استغرق الأمر بعض الوحشية من التلاميذ بسبب ما لم يفعله.لنقول ذلك، تتطلع MS إلى تعزيز إطار العمل هذا بحيث يكون يستحق المشاهدة - إنه ليس جاهزًا بعد.

مؤسسة إم في في إم - نسخة آه جوش سميث من الإطار.جوش هو أحد آباء MVVM، وكان مدافعًا كبيرًا عن هذا النمط ومعلمًا له.ونتيجة لذلك، فإن الكثير مما ستجده في أطر عمل أخرى يحمل بصمات Josh في كل مكان.يهدف هذا الإطار إلى توفير أساسيات MVVM، وليس معالجة بعض المشكلات الأكثر خصوصية.في الأصل كان هذا مخصصًا لـ WPF فقط، لكن أشخاصًا مثل Laurent Bugnion وأنا أضافوا وظائف/مشاريع مما يعني أن هذا سيكون إطار عمل متوافقًا مع Silverlight أيضًا.

واف - ليس لدي خبرة في ذلك، لذلك لا أستطيع التعليق عليه أخشى.

ضوء إم في في إم - رأي Laurent Bugnion في هذا الأمر، وتم تحديثه للتو إلى الإصدار 2.يعد هذا إطارًا جيدًا جدًا، ولكن مرة أخرى ليس المقصود منه تغطية كل جانب من جوانب تطبيقات MVVM.نظرًا لخلفية لوران، فهو يتمتع بدعم قوي جدًا لـ Silverlight وBlendability.

تحديث لقد أبلغني لوران للتو أن إصداري .NET 3.5 و.NET 4.0 متوافقان مع الميزات.واو للذهاب لوران.

Cinch - إطار عمل MVVM الممتاز الخاص بـ WPF فقط من Sacha Barber.وهذا يغطي مساحة أكبر من الأطر التي تحدثت عنها أعلاه.إنه إطار عمل ممتاز، ويستفيد من المفاهيم التي يغطيها كتاب بيل كيمبف الممتاز الجزع مشروع.يهدف Onyx إلى استكمال أطر عمل MVVM، ويضيف وظائف كان من الصعب عادةً على الأشخاص القيام بها في MVVM/WPF.مرة أخرى، كان المقصود في الأصل أن يكون WPF فقط، وقد تقدم Onyx ليشمل التوافق مع SL - وهو العمل الذي أشعر بالفخر بشكل خاص لأنني شاركت فيه.

نشور زجاجي - مرة أخرى، لم أستخدمه أبدًا، لكن سمعت عنه الكثير من الأشياء الجيدة.

محيط - أصدر كارل شيفليت، مدير البرامج في فريق Cider، مؤخرًا إطار عمل WPF MVVM المميز بالكامل.مرة أخرى، هذا إطار عمل ممتاز ولديه الكثير مما يمكن التوصية به.

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

نصائح أخرى

لقد وجدت هذه المقالة مفيدة جدا http://www.japf.fr/2009/10/a-quick-tour-of-existing-mvvm-frameworks/ لذا أحمله هنا للمستخدمين القادمين

أقوم بتحديث قسم Cinch وأضف دعم Silverlight إلى ميزاته

أنا آسف على القصة الطويلة

السمات المشتركة:

• فئة ViewModelBase (لتنفيذ واجهة INotifyPropertyChanged)

• RelayCommand مثل الفصل لربط أمر واجهة المستخدم بمعالجات ViewModel

• اختبارات الوحدة تأتي مع الإطار

سهل جدا

• مؤلف:ساشا باربر

• دعم Silverlight:لا (الإصدار 2 من Cinch يدعم Silverlight)

• توثيق:ممتاز، 6 مقالات منشورة على CodeProject

• الاستضافة :كودبلكس

• رخصة:ترخيص مشروع الكود المفتوح

• سمات:

  1. السلوكيات المرفقة

  2. التحقق من الصحة باستخدام IDataErrorInfo

  3. دعم لـ IEditableObject

  4. ضعف إنشاء الأحداث والاشتراك فيها

  5. رسائل الوسيط باستخدام الأحداث الضعيفة

  6. دعم IOC/DI (باستخدام Unity)

  7. خدمات:مسجل الأحداث، مربع الرسالة، فتح مربع حوار الحفظ، النافذة المنبثقة

  8. مساعدين خيوط

  9. دعم عناصر القائمة

  10. نماذج عرض قابلة للإغلاق

  11. مولد رمز MVVM

مجموعة أدوات MVVM الخفيفة

• مؤلف:لوران بونيون

• دعم Silverlight:نعم

• توثيق:العديد من المقالات متاحة على مدونة لوران + مطورين آخرين أيضًا

• الاستضافة:كودبلكس

• رخصة:رخصة معهد ماساتشوستس للتكنولوجيا

• سمات:

  1. تثبيت MSI

  2. قالب المشروع والعنصر VS

  3. مقتطفات كود VS

  4. نظام ماسنجر للتواصل بين نماذج العرض

  5. التعامل مع الأحداث كأوامر

مساعدي MVVM

• مؤلف:مارك سميث

• دعم Silverlight:لا

• توثيق:بعض المقالات على مدونة مارك

• الاستضافة:موقع شخصي

• رخصة:غير معرف

• سمات:

  1. السلوكيات المرفقة

  2. إنشاء نموذج العرض باستخدام امتداد العلامات

  3. التحقق من صحة السمات

  4. IOC/DI باستخدام نهج ServiceProvider

  5. نموذج عرض قابل للإغلاق

  6. مؤشر الانتظار (باستخدام WaitCursor() الجديد {// الكود الخاص بك هنا })

مؤسسة إم في في إم

• مؤلف:جوش سميث

• دعم Silverlight:لا

• توثيق:مقالات حول تطبيق Messenger على مدونة Josh أو Marlon Grech

• الاستضافة:كودبلكس

• رخصة:MS-PL

• سمات:

  1. نظام ماسنجر للتواصل بين نماذج العرض

  2. مراقب الأحداث الخاص بـ PropertyChanged

كاليبورن

• مؤلف:روب أيزنبرغ

• دعم Silverlight:نعم

• توثيق:الوثائق الكاملة متاحة على الإنترنت

• الاستضافة:كودبلكس http://www.codeplex.com/caliburn

• رخصة:رخصة معهد ماساتشوستس للتكنولوجيا

• سمات:

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

  2. مقدمو العروض الذين يتعاملون مع مشكلة دورة حياة واجهة المستخدم مثل التعامل مع دلالات التنشيط وإلغاء التنشيط وإيقاف التشغيل لمختلف مكونات واجهة المستخدم

  3. تطبيقات Caliburn قابلة للاختبار بشكل كامل

  4. المرافق المختلفة مثل مدير المهام الخلفية

  5. يدعم أنماط واجهة المستخدم المختلفة (وليس MVVM فقط)

  6. حاوية حقن التبعية

الجزع

• مؤلف:وليام إي كيمبف

• دعم Silverlight:لا

• توثيق:المقدمة الأساسية متاحة على CodePlex

• الاستضافة:كودبلكس

• رخصة:غير محدد

• سمات:

  1. نمط محدد الخدمة

  2. إنشاء ViewModel باستخدام ملحق العلامات المخصص

  3. الخدمات ذات الصلة بواجهة المستخدم مثل IDisplayMessage

الكالسيوم

• مؤلف:دانيال فوجان

• دعم Silverlight:لا

• توثيق:مقالتان مفصلتان للغاية عن CodeProject (الجزء الأول والجزء الثاني)

• الاستضافة:كودبلكس

• رخصة:استخدام ونسخ وتعديل و/أو توزيع حقوق الطبع والنشر والاحتفاظ بها!

• سمات:

  1. مدير الوحدة لتمكين أو تعطيل الوحدات في وقت التشغيل

  2. خدمات المراسلة للتفاعل مع المستخدم من العميل أو الخادم باستخدام نفس واجهة برمجة التطبيقات

  3. خدمة الأوامر لربط WPF ICommands بواجهات المحتوى التي تصبح نشطة فقط عندما يقوم عرض نشط أو نموذج عرض بتنفيذ الواجهة

  4. محولات المنطقة لأشرطة الأدوات والقوائم

  5. تسجيل خادم العميل جاهز للعمل خارج الصندوق

  6. يتضمن وحدات، مثل متصفح الويب، ومحرر النصوص، ونافذة الإخراج، وغيرها الكثير

  7. واجهة مبوبة مع إشارة إلى الملفات القذرة (قابلة لإعادة الاستخدام عبر الوحدات)

nRoute

• مؤلف:ريشي

• دعم Silverlight:نعم

• توثيق:تتوفر العديد من المقالات على مدونة المؤلف (انظر الصفحة الرئيسية لمشروع CodePlex للحصول على الروابط)

• الاستضافة:كودبلكس

• رخصة:MS-PL

• سمات:

  1. دعم سلوكيات Blend3 ونماذج المشغلات

  2. إطار محدد موقع الموارد

  3. عرض الخدمات:OpenFileDialog، ShowMessage...

  4. يستخدم السمات لتعيين View وViewModel معًا

نيتو MVVM

• مؤلف:شمة

• دعم Silverlight:لا

• توثيق:لا

• الاستضافة:كودبلكس

• رخصة:غير محدد

• سمات:

  1. العديد من تطبيقات MVVM الصديقة لواجهة ICommand

محيط

• مؤلف:كارل شيفليت

• دعم Silverlight:لا

• توثيق:المقالات متاحة على مدونة كارل

• الاستضافة:موقع شخصي

• رخصة:غير محدد

• سمات:

  1. مكتوبة بلغة VB.Net

  2. التحقق من الصحة على أساس السمة

  3. عرض الفئات الأساسية:أمر التتابع، نموذج عرض قريب...

  4. طبقة الوصول إلى بيانات خادم SQL

إطار عمل MVVM الأساسي

• مؤلف:ليستر لوبو

• دعم Silverlight:لا

• توثيق:نموذج التطبيق متاح مع المكتبة

• الاستضافة:كودبلكس

• رخصة:MS-PL

• سمات:

  1. تفويض الأوامر\Keybinding

  2. المراسلة بين الأجهزة الافتراضية

  3. التعامل مع الأحداث كأوامر مع السلوكيات المرفقة

  4. التعامل مع مربعات الحوار (والمزيد) كخدمات

  5. مقتطفات كود VS

ضوء جيد

• مؤلف:بيتر أوهانلون • دعم Silverlight:نعم

• توثيق:نموذج التطبيق متاح مع المكتبة

• الاستضافة:كودبلكس

• رخصة:MS-PL

• سمات:

  1. إدارة "مساحة العمل" (مجموعة المستندات التي يمكن إغلاقها)

  2. دعم الجلد

  3. المراسلة بين الأجهزة الافتراضية

أحاول وصف الأطر المفقودة في إجابة بيت الرائعة:

مجموعة أدوات MVVM (مايكروسوفت) هي مكتبة خفيفة الوزن للغاية تحتوي على قوالب مشاريع Visual Studio والتي يجب أن تدعم المبتدئين بهذا النمط.إذا حصلت Microsoft على تعليقات جيدة بشأن مجموعة الأدوات الخاصة بها، فقد تقوم بتنفيذ ذلك كقالب مشروع Visual Studio (ربما 2010) جديد.

بريزم (مايكروسوفت بي آند بي) هو إطار عمل يوفر أكثر من مجرد دعم لنمط MVVM.الهدف الرئيسي من هذا المشروع هو مساعدتك في البناء وحدات تطبيقات WPF و/أو Silverlight.عندما تحتاج فقط إلى تنفيذ نمط MVVM أو إذا كنت مبتدئًا في .NET/WPF، فلن أوصي بهذا المشروع.أنظر أيضا: وصلة.

إطار تطبيق WPF (WAF) هو إطار عمل خفيف الوزن يساعدك على إنشاء تطبيقات WPF باستخدام MVVM.إنه مخصص لـ WPF فقط وبالتالي فهو لا يدعم Silverlight.إنه يختلف قليلاً عن معظم أطر عمل MVVM الأخرى مع تقديم وحدات التحكم.إنهم مسؤولون عن سير عمل التطبيق ويتوسطون بين ViewModels المختلفة.

مه.لا يتطلب Mvvm حقًا إطارًا كاملاً لدعم IMO.إذا فهمت هذا المفهوم، فمن السهل جدًا أن تبدأ باستخدام فئة أساسية نظيفة من VM تقوم بتنفيذ INotify، ثم ابدأ من هناك.

أنظر أيضاً:

كاليبورن & الجزع!

مزيج بنفسك!

لقد استخدمت EventAggregator من PRISM، مع ViewModelBase من مؤسسة MVVM وما إلى ذلك.لقد قمت أيضًا بتعديل RelayCommand (يتم استدعاء DelegateCommand في بعض الأماكن) لقبول البيانات الأخرى أيضًا، وهكذا.

لا أوصي بإطار عمل واحد فقط في حد ذاته.

رهاني سيكون على Caliburn وMVVMlight، ويبدو أن الكثير من أطر عمل mvvm هذه لا تدعم Silverlight.أستطيع أن أتوقع أنه سيكون هناك المزيد من أطر عمل MVVM للاختيار من بينها أكثر من أطر عمل IoC، لأنه من الصعب إعداد حدود الميزات لإطار عمل mvvm.أعتقد أن أفضل طريقة لمعرفة أي منها يناسب مشروعك بشكل أفضل هي من خلال سرد/مقارنة ميزاتها.

تحقق أيضًا من Mix10.أتعلم من الحديث الكثير:بناء إطار عمل mvvm الخاص بك.

أيضًا إطار عمل الكوكتيل و DevForce بواسطة ايديا بليد

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

بشكل عام، لقد أكملت تطبيقي بنسبة 90% وكل ما استخدمته من مجموعة أدوات MVVM هو وظيفة المصنع التي تنشئ أمرًا لي مع إعطاء وظيفة تفويض لبدء التشغيل في التنفيذ.أعتقد أنه يمكنني التبديل إلى أي إطار عمل آخر أو عدم وجود إطار عمل في غضون ساعتين.

واحد آخر للنظر فيه هو MEFedMVVM.لقد استخدمته في مشروعين وهو خفيف الوزن وغير تدخلي ويدعم Silverlight وWPF.كما أنه قادر على دعم بيانات وقت التصميم في Blend، لأولئك الذين يستخدمون هذا المنتج.

إذا كنت تبحث عن القابلية للتوسعة (القدرة على كتابة الوظائف الإضافية) أعلى إطار عمل تطبيق WPF/MVVM، فقد تكون مهتمًا بـ سوب بوكس ​​كور تنصل:لقد كتبت ذلك.إنه مفتوح المصدر، لذلك حتى إذا لم تستخدمه، فقد يكون هناك بعض الأفكار الجيدة التي تناسبك.ويستخدم MEF لكل من القابلية للتوسعة وIoC.

هناك ايضا nRoute

إطار تطبيق رائع حقًا لـ WPF/Silverlight يدعم MVVM

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