تحكم التعامل مع تدفق التطبيق، وذلك حيث لا منطق عملي تذهب؟

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

سؤال

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

ولقد تم العمل مع Oxite مؤخرا باعتبارها أداة تعليمية مكتوبة من قبل الناس في <ل أ href = "http://www.microsoft.com" يختلط = "نوفولو noreferrer"> شركة التي خلقت ASP.NET MVC وبالتالي، تطبيق إشارة المزعوم لASP.NET MVC.

ولكن اليوم رأيت بلوق وظيفة عن Oxite بواسطة روب Conery أن يقول:

<اقتباس فقرة>   

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

لقد طرح هذا لي لحلقة. هل هذا الفصل على مبدأ MVC، وبالتالي من الخطأ من قبل المطورين Oxite، أم هو الرأي روب؟ إذا كان منطق الأعمال ينتمي في النموذج، لماذا فريق Oxite وضعها في وحدة تحكم؟ كيف يمكنني تنفيذ عمل أن <م> هو منطق الأعمال إن لم يكن في وحدة تحكم؟

وعلاوة على ذلك، أنا يرتكب خطأ باستخدام Oxite كمعيار التعلم النظر في تعليقات مثل روب؟

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

المحلول

والمنطق عملك يسير في طبقة عملك. وحدات تحكم استخدام طبقة رجال الأعمال لخلق نموذج للجهات نظركم لتقديم. وخير مثال هو تطبيق MVC واجهة المخزن التي أنتجت روب Conery. Oxite هو الحصول حاليا الكثير من الصحافة السيئة لأنها على ما يبدو لا نستفيد من إطار MVC.

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

نصائح أخرى

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

ويمكن أن يتم تعيين هذا في واحد، ومشروع منفصلة الذي هو ليس أكثر من DLL.

وبعد ذلك، يكون لديك MVC التطبيق، والذي هو في الحقيقة طبقة العرض الخاص بك، ويكون ذلك الاستفادة من المشروع طبقة عملك. ستعمل وحدات التحكم مع الخدمات الخاصة بك، وضخ البيانات تلك الخدمات تولد في ViewData التي يتم بعد ذلك ضخ الخاص بك المشاهدات.

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

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

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