سؤال

لذلك أنا إعادة تنظيم مجموعة winforms C# الحل للمساعدة في فصل وجعلها أكثر نظافة وأكثر تنظيما.الحل المسارات التجارية الصغيرة أوامر ، إلخ ..

أنا قد كسرت من المشاريع حتى الآن في

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

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

  1. فئة أن يسترد تفضيلات المستخدم من قاعدة البيانات
  2. فئة باسترداد بيانات ثابتة من البيانات الثابتة server بإرجاع مجموعات من البيانات النتائج.
  3. فئة يهبط المستخدم الاستحقاقات
  4. نموذج فئة المتاجر hashtable من أوامر
  5. فئة رسائل البريد الإلكتروني رسائل على المستخدم العمل
هل كانت مفيدة؟

المحلول

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

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

وبشكل أكثر تحديدا:

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

[تحرير] بلدي المعمم 3-الطبقة العمارة (بسيطة) تطبيقات الويب

داتاكسيسلايير

وسيشمل بلدي TableAdapters بقوة كتبته DataTables والمصانع التي تتحول الصفوف من DataTables إلى كائنات الأعمال في مرحلة ما قبل LINQ المشاريع.باستخدام LINQ وسيشمل بلدي DataContext و مصمم ولدت LINQ الكيانات.

لبناء خارجي التجصيص أو'

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

عرض

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

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

ملاحظة: ربما يكون الانتقال إلى MVC 3-الطبقة مرة واحدة ASP.NET MVC في الإنتاج.لقد فعلت بعض المشاريع الشخصية في روبي/القضبان و أنا حقا مثل MVC نموذج لتطبيقات الويب.

نصائح أخرى

لقد حددت أن App.Data يجب أن يحتوي فقط على هياكل البيانات والواجهات، ولا يوجد رمز تنفيذ، وهو أمر جيد إذا كنت تريد القيام بذلك، ولكن هذا لا يترك لك مكانًا لوضع رمز الوصول إلى قاعدة البيانات الخاصة بك إلا في تجميع App.BusinessLogic الخاص بك.

ربما تحتاج حقًا إلى إعادة تسمية App.Data إلى App.Model (أو شيء مشابه)، والحصول على تجميع App.DataAccess جديد يتحدث إلى قاعدة البيانات (ربما ينفذ نمط المستودع).بعد أن فعلت ذلك، سأقسم الأمور على النحو التالي:

  1. App.DataAccess
  2. App.DataAccess
  3. App.DataAccess
  4. نموذج التطبيق
  5. App.BusinessLogic

ربما سأذهب مع

  1. بيانات
  2. بيانات
  3. البيانات، على الرغم من أنني لست متأكدًا تمامًا مما يفعله الفصل
  4. بيانات
  5. منطق الأعمال
  1. -> بيانات التطبيق
  2. -> بيانات التطبيق
  3. -> App.BusinessLogic أو App.Data - لست متأكدًا بالضبط مما يعنيه هذا.
  4. -> تطبيق BusinessLogic
  5. -> تطبيق BusinessLogic
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top