application - php mvc framework




أكتيفريكورد كنموذج، هل هذه فكرة جيدة؟ (2)

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

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

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

لذلك، ما هو عظيم جدا حول إساءة استخدام (إمهو) أكتيفريكورد كنموذج في نمط معماري مفك؟


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

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


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

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

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

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

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





activerecord