DAL/BLL والعميل/الخادم: هل يجب أن يستخدم العميل كائنات BLL أو DAL للعرض التقديمي؟ أو ربما طبقة أخرى (كائن نقل البيانات؟)

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

سؤال

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

في البداية اعتقدت أنني سأجعل فقط كائنات DAL كائن مزود بيانات عالمي حتى يمكن استخدامها من قبل العميل وكذلك الخادم. على سبيل المثال ، عند استخدام كائن البيانات من قبل الخادم ، تكون قاعدة البيانات هي مزود البيانات ؛ عند استخدام كائن البيانات من قبل العميل ، يكون الخادم هو مزود البيانات.

لذلك يتم تغيير كائن في طبقة العرض التقديمي ، على سبيل المثال "مستخدم": user-> setName ("Fred") ، ثم يرتكبها مثل هذا المستخدم> الالتزام () ، تستدعي طريقة الالتزام طريقة التزام مزود البيانات ، الذي يشفر الكائن ثم يرسله إلى الخادم. ثم "يزين" الخادم مع كائن طبقة العمل ويحمل من هناك.

لدي حاليًا هذا العمل كنموذج أولي ، مع تعريف كائنات DAL في مشروع مشترك يستخدمه كل من العميل والخادم. يقوم الخادم بعد ذلك بحقن مزود البيانات الخاص به (الذي يستخدم قاعدة البيانات) ، ويقوم العميل بحقن مزود بيانات يستخدم الخادم.

أتساءل عما إذا كان هذا يبدو وكأنه نهج معقول؟ ما زلت أتساءل عما إذا كنت بحاجة إلى طبقة أخرى بدلاً من تعرض كائنات DAL مباشرة للعميل. ربما طبقة كائن Tranfer للبيانات ، والتي من شأنها أن تعطيني 3 طبقات: كائنات الوصول إلى البيانات ، وكائنات منطق الأعمال ، وكائنات نقل البيانات.

شكرًا.

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

المحلول

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

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