كيف بدقة هل اتبع العمارة ن الطبقة وفصل الاهتمامات بين الطبقات في المشاريع الخاصة بك؟

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

سؤال

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

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

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

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

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

المحلول

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

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

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

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

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

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

نصائح أخرى

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

و- النظر في البساطة وسرعة التسليم كجزء من بنية "ناجحة"، وليس فقط "نقاء". محاولة لتحقيق التوازن بين التمسك بالمثل العليا المعمارية، ويجري عملية.

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

و- الحفاظ على الطبقات والتعقيد إلى الحد الأدنى للحد من الترميز الوقت وتحسين إمكانية القراءة والصيانة

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

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

لدينا التطبيق WinForms عناصر، والتطبيق ASP.NET. كلاهما استخدم نفس المشروع كائنات الأعمال (حوالي 140 الطبقات).

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

وهذا المشروع ASP.NET لديها نحو 100 صفحات .aspx.

لدينا طبقة الوصول إلى البيانات التي تتكون من 5 فصول، والتي تهتم بها ADO.NET، المواضيع والمعاملات. انهم تحويل الطلبات المقدمة من كائنات الأعمال إلى المكالمات SQL خادم.

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

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

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

وهكذا وباختصار، نقية 100٪. انها ببساطة عملت دائما من الأفضل أن تفعل ذلك الحق.

وكنا يكون لديك جحيم من سبب وجيه للابتعاد عن هذا الآن.

ورمز القرود والأصوليون هي الكثير مثل أي متطرف آخر في الحياة.

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

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

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

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

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

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