معالجة البيانات في تطبيق الويب باستخدام GWT وStruts وHibernate

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

سؤال

أنا أكتب تطبيق ويب باستخدام Struts وHbernate.مؤخرا اكتشفت جي دبليو تي و ال واجهة برمجة تطبيقات التصور.بدا كل هذا مثيرًا للاهتمام ويوفر وظائف AJAX التي يحتاجها تطبيقي.أنا مبتدئ في حيرة من أمري....

أين تضع اختبارات مستوى الوصول إلى البيانات؟

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

أفضل الممارسات لتمرير المعلومات

هناك حاجة كبيرة للاتصال بين النموذج/العرض/وحدة التحكم، وإجراء استدعاء RPC لـ GWT وتمرير البيانات إلى كود التصور لعرض المخططات والأشياء.أعتقد أنها بالتأكيد تحتاج إلى نوع ما مترجم الذي يحول كائنات Java إلى كائنات JSON لإجراء مكالمات gwt-rpc ورسم المخططات باستخدام Visualization API.هل انا صائب؟أيضًا، فيما يتعلق بتمرير المعلومات في Struts وHiberante - هي الكتابة كائنات نقل البيانات فكرة جيدة؟ثم تمر فقط فول في كل وقت؟أو (لقد صادفت هذا اليوم للتو.. لست متأكدًا حتى مما إذا كنت قد فهمته بشكل صحيح) ربما أقوم بربط الأشياء بها JNDI, والوصول إليها من أجزاء أخرى من البرنامج؟

سيكون موضع تقدير أي مساهمة / توضيح.شكراً جزيلاً!

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

المحلول

فحص مستوى الوصول:

أود أن أفصل عمليات التحقق من مستوى الوصول إلى فئتها الخاصة، وأطلب من "وحدات التحكم" الخاصة بك الاتصال بمديري الوصول أولاً قبل الاتصال بـ DAO.أي أن كل إجراء يقوم بإجراء فحص قبل إجراء مكالمات DAO للحصول على/إدراج البيانات.

لكن الطريقة الأفضل، إذا كنت تستخدم gwt، هي إجراء مكالمات RPC بدلاً من استخدام إجراءات الدعامات.تصبح مكالمات RPC هي "وحدات التحكم" التي ذكرتها أعلاه، ويمكنها إجراء عمليات فحص الوصول باستخدام المديرين الذين ذكرتهم أعلاه - أي الإجراءات المحدوده.

أما بالنسبة لمديري الوصول، فإنني أوصي بتعداد جميع امتيازات الوصول التفصيلية، ودمج هذه الامتيازات في مجموعة يمكن ربطها بكل مستخدم/ملف شخصي/أيًا كان.

تمرير المعلومات حولهايعد العمل مع السبات أمرًا صعبًا - يمكنك تجربة استخدامه جلعاد لكني لم أحقق نجاحًا كبيرًا في ذلك، فهو مرهق جدًا بالنسبة لي.فكرتك مع تحويل json هي الطريقة الصحيحة للذهاب إلى gwt imho.يدعم gwt 1.5 ما يسمى بتراكب كائن javascript، والذي يتيح لك إرجاع json و"تركيبه" في كائن gwt java مباشرة مع القليل من التعليمات البرمجية من جانبك. تحقق من هذا المنصب لمزيد من المعلومات.

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

نصائح أخرى

لا أستطيع التحدث كثيرًا عن سؤالك الأول لأنني حقًا لا أحب استخدام Struts لأي شيء متعلق بـ GWT.

بالنسبة لسؤالك الثاني، لا يجب عليك استخدام أي JSON.يبدو أن الواجهة الخلفية لديك هي Java، مما يعني أن آلية GWT RPC ستعمل فقط مع POJOs.لذلك كل ما عليك فعله هو إنشاء الكائنات التي تحتاجها للرسم وتمريرها ذهابًا وإيابًا بين العميل والخادم.سوف يقوم GWT بتنفيذ جميع عناصر RPC نيابةً عنك خارج الصندوق.

قد تكون كتابة كائنات نقل البيانات ضرورية، ولكن فقط إذا كانت ملفات نموذج السبات تحتوي على أشياء لا يستطيع مترجم GWT فهمها.عادةً ما أستخدم EJB3 وStripes (بدلاً من Hibernate وStruts) وفي حالتي، لا أضطر مطلقًا إلى كتابة أي كائنات لنقل البيانات، كل ما أستخدمه هو EJB3 POJOs وتمريرها بين العميل والخادم.

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

تمرير المعلومات حول:أنا أستخدم سلاسل محددة في المتجهات.و تسير الأمور على ما يرام...

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