سؤال

لقد كنت أتعلم مؤخرًا عن طبقات الوصول إلى البيانات وطبقات منطق الأعمال وطبقات العرض التقديمي ، لكن لا يزال لدي بعض الأشياء غير الواضحة تمامًا.

يمكنني استخدام DAL و BLL مع طبقة العرض التقديمي للحصول على المعلومات أو تعيينها في قاعدة بيانات.

لكنني فكرت أيضًا في أحداث التحكم في ASP ، وكيف يجب أن أقوم بتنفيذها.

هل يجب أن أحاول ، على سبيل المثال ، وضع زر انقر فوق BLL أو هل يجب أن أتركه في رمز ASPX خلف الملف؟

وإذا كان ينبغي علي وضعهم في Bll ، فكيف سأقوم بذلك؟

لست متأكدًا من كيفية جعل حدث استدعاء طريقة موجودة في BLL ، وبالتالي فإن أي نصيحة ستكون موضع تقدير كبير.

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

المحلول

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

نصائح أخرى

بالنظر إلى هذه الهندسة المعمارية:

العرض التقديمي -> الأعمال -> البيانات

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

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

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

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

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