سؤال

لدينا الطبقات التطبيق أو على الأقل في عملية الانتقال إلى أحد ، موزعة على النحو التالي:

  • Interface (واجهة المستخدم أو التطبيق واجهة ، أي.خدمة ويب ، إلخ.)
  • منطق الأعمال
  • الوصول إلى البيانات

لجعل بقية هذا السؤال أكثر تحديدا أنا أصف حالة بعينها.

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

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

  • للقراءة الملكية تحتوي على قائمة الموظفين للاختيار من بينها
  • للقراءة/للكتابة الممتلكات التي تحتوي حاليا اختيار الموظف

واجهة المستخدم قد قرأت قائمة استخدامه لملء عنصر تحكم تحرير وسرد.

في الإصدار 1 من هذا التطبيق تحرير وسرد يحتوي على رقم تعريف الموظف + اسم الموظف.

كل شيء على ما يرام...

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

وبعبارة أخرى ، فإن تحرير وسرد تحتوي على:

  • 1 - جيمي أولسون/المبيعات
  • 2 - جيمي أولسون/التنمية
    • الآخرين

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

هذا الحل بصراحة رائحته.

إذا كان هناك عدة واجهات أن هذا تحكم ، مع متطلبات مختلفة ، لدينا ثلاثة حلول ممكنة:

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

أي من الحلول المذكورة أعلاه أشعر أنني بحالة جيدة.

أنا أتساءل هل نحن تماما عن مسارها ؟ كيف يمكنك أن تفعل هذا ؟ هل هناك الرابعة و الخامسة حل أقل من 3 أعلاه ؟

في هذا السؤال: فصل من المخاوف, قبل الإجابة على هذا الاقتباس:

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

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

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

المحلول

الطريقة التي أرى أنها ، لديك احتمالين:

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

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

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