سؤال

لدي حل VS، مع المشاريع التالية.

-واجهة المستخدم الرسومية
-الدخول الى البيانات
-منطق الأعمال
-الكائنات الأعمال

ولكن أين يجب أن تتواجد فئة النموذج الرئيسي؟عادةً ما تكون هذه ذاكرة تخزين مؤقت لمجموعة من الكائنات التي تكون نتائج طبقة الوصول إلى البيانات وواجهة المستخدم الرسومية التي تستخدم الشبكات الافتراضية لعرض البيانات داخل النموذج.سيكون السؤال هو نفسه باستخدام MVC أو MVP

أفكار؟

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

المحلول

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

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

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

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

ومع ذلك، في 99٪ من الوقت لدي هذه المشاريع:

  • واجهة المستخدم
  • جوهر
  • إصرار
  • الاختبارات

ولكن لا يزال يتعين عليك أن تأخذ احتياجات مشروعك بعين الاعتبار.

نصائح أخرى

أنا أميل إلى ذلك

  • Justice.Project.Core - نموذج مجال POCO - أي كائنات الأعمال)
  • Justice.Project.Data - تعيينات NHibernate وما إلى ذلك، حيث يوجد مخطط الثبات
  • Justice.Project.Services — المستودعات، بالإضافة إلى منطق الأعمال الذي لا يمكن ملاءمته بسهولة مع كائنات الأعمال
  • Justice.Project.(Web|UI)

الموديل يكون - أو يجب ان يكون – الكائنات التجارية.

تحتوي حلولي على 3 مشاريع (غير اختبارية).

  1. واجهة المستخدم - واضحة
  2. الأساسية - كافة كائنات المجال ومنطق الأعمال
  3. الوصول إلى البيانات - نمط المستودع لملء/حفظ كائنات النموذج
<اقتباس فقرة>   

وأوافق على أن الكائنات نموذج الخوض   POCO. لذلك دعونا نقول لدي أمر   موضوع. سؤالي هو أين ولدي   الفئة التي يخزن مجموعة من   أوامر ؟؟

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

في وجوه العملاء الخاص بك، يجب أن يكون كل عميل مجموعة من أوامر، لذلك سيكون لديك واحدة هناك.

إذا كان لديك الإدارات، ويجب أن يكون كل قسم عبارة عن مجموعة من الأوامر التي تم إنشاؤها.

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

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

IRespoistory<Client> repository = new Repository<Client>();
IList<Client> clients = repository.GetAllClients();

والشيء نفسه يمكن أن ينطبق على أوامرك.

وكنت توصي التحقق من هذا الكتاب DDD: HTTP: //www.amazon كوم / GP / المنتج / 0321268202 / المرجع = s9k2a_c1_at1-rfc_p-3237_p؟ pf_rd_m = ATVPDKIKX0DER وpf_rd_s = الوسط 1 & pf_rd_r = 1BWAPTN787CTZXJDV5BA وpf_rd_t = 101 & pf_rd_p = 463383351 & pf_rd_i = 507846

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