سؤال

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

وعرض (ويب)

وطبقة رجال أعمال (القديمة الطبقات كيان الطراز وطبقة BL)

وطبقة البيانات (الطبقات DA إلى SQL Server عن طريق إجراء مخزن)

وسؤالي يتعلق في المقام الأول لطبقة الأعمال. الآن لدي مساحة الكيان ومساحة BusinessLogic.

ووBL ديه إشارة إلى DA والكيان. الكيان لديه إشارة إلى DA (وDA هو "يجهل" من BL أو كيان)

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

وهكذا ...

هل هو "خاطئة" لديك الكائنات BL والكيان ضمن نفس مساحة الاسم حتى يتمكنوا من العمل معا؟

وأساسا، أحاول أن يكون كائن كيان مثل الموظف (مثال كلاسيكي، إيه؟) ولها الموظف لديها

public Hashtable[] SubordinateEmployees

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

هل السؤال معنى؟

وإذا كان الأمر كذلك، هل لي الحل؟

وشكرا جزيلا مقدما!

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

المحلول

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

hashtable = BL.GetSubordinateEmployees(supervisor);

وبهذه الطريقة يكون لديك نقطة واحدة من الوصول إلى المرؤوسين، وهناك شيء واحد فقط (وBL) الوصول إلى طبقة البيانات، وخلق كيانات.

نصائح أخرى

واسمحوا لي أن نرى ما اذا كان يمكن أن تظهر لك طريقة أفضل للتفكير في هذا

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

والكيانات بياناتك يمكن وضعها في مساحة اسم DAL أو منحهم هناك تملك، منحهم فصل القوات الخاصة هناك. الكيانات البيانات هي كائنات غبية ويجب أن تحتوي على القليل جدا من دون منطق وتدرك إلا أنفسهم والبيانات لديهم، أنها لا تحتوي على LOGIC BUSINESS !، البيانات ACCESS LOCIC، OR LOGIC UI. إذا كانت لديكم انتهاك طبقة. الوظيفة الوحيدة للكيان البيانات هو اجراء البيانات وتمريرها من طبقة واحدة إلى أخرى.

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

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

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

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

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