الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استشارة متعلقة بموضوع الطبقات المتعددة

مغلق
بدأه صاحب همة في 2 يناير 2008 · 5 رد · 899 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

كنت أعمل سابقا على تطبيق ويندوز ، وانتقلت للويب مؤخرا.. هناك مفهوم او فكرة كنت استخدمها وهي اعداد النظام في طبقات متعددة :

الجزء المتعلق بالتاكد من القيم المدخلة : كان في Buisness Layer ، وكانت الامور تسير بشكل جيد ، لكن اظن ان الوضع مختلف هنا كثيرا..

اذا اردت تطبيق نفس الفكرة فهذا يعني احد حالين:

1- ان تتم عمل اعادة الكود اللازم( Script) في كل صفحة ، هذا يمنع تحديث الصفحة عند التأكد من كل شرط ولكن يجب اعادته في كل مرة احتاج ان اقوم بنفس العملية في اي مكان يقوم بنفس العملية.

2- ان اقوم بكتابة التاكد من الكود في مكان واحد ، سيقلل من كتابة الكود لكن سيؤدي الى تحديث الصفحة كل مرة يتم التاكد من احد الشروط

هل طريقة تفكيري صحيحة واذا كانت كذلك ماهو الحل الامثل في مثل هذه الحالة؟؟

من لمح فجر الأجر هان عليه ظلام التكليف

#2

لا يا أخي نفس المفهموم تماماً

انا كنت استخدم نفس الآلية للـdesktop و الـweb

ويمكن ان تستخدم dataset

وهذا رابط قد يفيدك

http://asp.net/learn/data-access/

واذا كان هناك لديك اي مشكلة بالكود ضعه عالموقع من اجل مساعدتك....

-----------------------------------------------------------------------------------------------------------------------------





 

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

Mohammad Sonaiea
 

#3

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

#4

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

ربما يكون المثال يوضح الصورة :

- عندي شاشة تتامل مع جدول العملاء والذي يتكون من رقم آلي واسم و رصيد افتتاحي.

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

الآن هناك حالتان للتأكد من القيم المدخلة :

الحالة الاولى : اني أستخدم Validation Controls على الشاشة ، هذا سيمنع تحديث الصفحة الا بعد التاكد من جميع الشروط الموجودة مع Validation Controls او بمعنى آخر (Execute Jave script Code)، لكن بالمقابل اذا كنت سأحتاج الاضافة الى نفس الجدول من شاشة أخرى ، يتوجب علي اعادة ما قمت به هنا.

الحالة الثانية : اني استخدم Buissness Class ، هذا سيمنع تكرار العمل ، لكن بالمقابل مالذي سيحدث ؟ يتم التأكد من كل شرط ثم يتم تحديث الصفحة (Execute Server Control Event) ثم عرض رسالة الخطأ للمستخدم.

الان لو كان لدي 10 حقول مع كل منها شرط أو أكثر سيتم تحديث الصفحة 10 مرات (Execute Server Control Event) وربما أكثر هذا مع الحالة الثانية. بينما يتم تنفيذ (Execute Server Control Event) مرة واحدة في المرة الأولى ، وقبل ذلك كله (Execute Jave script Code).

أرجو أن تكون قد اتضحت الصورة الآن. هل هناك طريقة تجمع بين محاسن الطريقتين.

من لمح فجر الأجر هان عليه ظلام التكليف

#5

الوضع هنا ينقسم إلى جزءين:

1- أين أضع كود الـ Validation في الـ Business Tier أو الـ Classes نفسها أم في الـ UI/Presentation Tier أو الصفحة ... خاصة الـ Markup أو HTML+ASP tags

الإجابة الصحيحة حسب قواعد الـ Security هو الاثنبن!! كود الصفحة مفهوم لماذا تحتاجه، ببساطة لأنه أفضل و أسرع رد فعل لأي إدخال خا\ئ من قِبَل المستخدم. كود الـ Classes مهم للسيناريوهات النادرة التي قد تحدث مثل أن تكون JavaScript غير مفعلة عند المستخدم (أو لا تعمل لخطأ في كود JavaScript أخر في نفس الصفحة أو .. أو ..) أو إذا كان المستخدم يحاول الإدخال الخاطئ عن عمد بعدم استخدام متصفح أصلا بل كتابة كود يحاكي هذا بنفسه، لن أدخل في تفاصيل هذا، أيضا لأي سيناريو خاطئ ليس في حسابك عامة أو لم تفكر فيه.

2- كيف أتجنب تكرار الكود بين الصفحات خاصة كود الـ Markup

هذا السؤال أسهل في الإجابة و هو ببساطة: استخدم User Controls .. يمكنك أن تجعل الـ Form كلها UserControl أو حتى الخانات التي تستخدمها في استمارات إدخال (Forms) كثيرة مثل اختيار البلد أو المحافظة و ما شابه.. أو اختيار المرتب لو كان له قواعد خاصة و كان يتكرر في أكثر من form. يمكنك أن تضع Properties لتعرف منها القيمة المدخلة أو تضع قيمة أنت بنفسك (من أجل حالات التعديل و ليس إدخال سجل جديد مثلا)... في حالة ما إذا كانت الـ UserControl ضكلها سيختلف بنسبة بسيطة من صفحة لأخرى يمكنك أن تضع Property تحدد بها اختيار الشكل و كل صفحة تضع هذه القيمة دائما بالقيمة التي تتناسب مع طريقة العرض فيها في توقيت مبكر من الصغحة مثل Constructor or Page_Init event أو في الـ Tag الخاص بالـ UserControl نفسها في الـ Page Markup ، و أنت في الـ UserControl مفسها تبحث قيمة هذه الـ Property لتحدد كيف ستعرض الجزء الذي يتغير في الشكل.

,Regards

Mohamed Ahmed Meligy

Senior Software Engineer

SilverKey Tech - Egypt Branch

Computer Engineering Student

High Institute of Engineering, Culture and Science City

E-mail: Eng.Meligy@Gmail.com

Weblog: http://GeeksWithBlogs.NET/Mohamed

Mobile: +20 10 603 3013

#6

جزاك الله خير ا أخي.. اتضحت الصورة ..

من لمح فجر الأجر هان عليه ظلام التكليف

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…