.net معنى ما هي تجربتك مع التخلي عن مففم للعمارة القائمة على وسركونترول القائم؟




معنى كلمة عنوان بالانجليزي (6)

نموذج عرض جيد لأنه يجعل داتابيندينغ أسهل. داتابيندينغ لا تغطي كل ما عليك القيام به، لذلك بعض التعليمات البرمجية المرفقة زمل مريحة.

في تجربتي مزيج من نموذج عرض وربط الأحداث يبدو لإنجاز هذه المهمة حتى يمكن وضع نهج أكثر نقاء إذا لزم الأمر.

تصحيح:

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

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

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

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

BaseEditor.cs:

using System.Windows.Controls;

namespace App
{
    public class BaseEditor : UserControl
    {
        public string Title { get; set; }
        public BaseEditor()
        {
            Title = "This was defined in the Base Editor.";
            Loaded += new System.Windows.RoutedEventHandler(BaseEditor_Loaded);
        }

        void BaseEditor_Loaded(object sender, System.Windows.RoutedEventArgs e)
        {
            StackPanel sp = new StackPanel();
            TextBlock tb = new TextBlock();
            tb.Text = Title;
            sp.Children.Add(tb);
            this.Content = sp;
        }
    }
}

CustomerEditor.cs:

namespace App
{
    public class CustomerEditor : BaseEditor
    {
        public CustomerEditor()
        {
            Title = "This was overwritten by the CustomerEditor.";
        }
    }
}

Window1.cs.xaml:

<Window x:Class="App.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:App"
    Title="Window1" Height="300" Width="300">
    <Grid>
        <local:CustomerEditor/>
    </Grid>
</Window>

وبصرف النظر عن مسألة قابلية الاختبار وحقيقة أن هذا "يشعر القذرة" القيام وف مثل هذا، لقد شهدت فقط آثار إيجابية من هذا القرار، على سبيل المثال:

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

ھل کان لأي شخص آخر یقوم ب مففم في وف أن یشھد تجارب مماثلة؟ هل التقيت مع أي مشاكل حقيقية على المدى الطويل؟


يمكننا أن ترث لدينا غير زمل وسركونترولس من بعضها البعض

أنا لا أفهم. ماذا عن مففم يحول دون الميراث؟

ونحن نستخدم الكثير من التعليمات البرمجية وراء كما نريد الذي يسرع التنمية

رمز وراء ما يرام طالما أنها التعليمات البرمجية التي تعنى وجهة النظر. أي. لا منطق الأعمال التي تريد اختبار. فصل الشواغل وجميع.

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

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

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

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

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

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

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

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


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

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

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


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

فكر: TextBlock.Text = "HelloWorld" . لا فيوموديل لبناء، لا الإلتصاق V و فم أو الاجهزة الملزمة. ضرب F5 ونرى "هيلوورلد" في كل شيء المجد. مشكلتي مع هذا متعددة الأوجه. وهنا بضع من أكبر القضايا بلدي:

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

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

وذلك باستخدام ففا قد تحصل على V1 الخاص بك خارج الباب السريع، ولكن فبس سوف يتساءل لماذا v1.5 سوف يستغرق أربع مرات أطول من V1. كلنا كنا هناك :)

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

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

لقد رأيت بعض الناس لديهم مشاكل مثل هذه في مففم، ولكن أعتقد انها مجرد أخذ مففم حرفيا أيضا. ليس كل شيء يحصل الحدث من قبل رسول. بلدي ~ 40 رأي (وتنامي) التطبيق يحتوي على حوالي 5 الأحداث المركبة. أنا ترث الضوابط، وأنا استخدام الحقن عرض على الأشياء التي ليست حتى لوحات أو عناصر تحكم المحتوى. في بعض الأحيان لدي كودهينهيند التعامل مع عرض التعليمات البرمجية ذات الصلة / الأحداث ... و ... حقا، وأنا أدعو مففم وأنا لا تعطي @ $ &٪ حول اختبار :)


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

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

قول "لا تفهم مففم" ليس حقا حجة ضد نهجه. النمط الذي هو أسهل لفهم هو أفضل من واحد ليس كذلك.


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

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

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





prism