5. الخلاصة
لقد قمنا بإنشاء تطبيق العميل/الخادم التالي:

للوصول إلى النسخة النهائية من الكود، كان علينا شرح العديد من النقاط المتعلقة بإطاري العمل AngularJS و Spring 4. لذا يمكن استخدام هذا المستند للتدريب على استخدام هذين الإطارين. يشرح الفقرة 1.3 أين يمكن العثور على الأكواد وكيفية استخدامها.
وقد أظهرنا أن تطبيق العميل/الخادم قابل للاستخدام في بيئات متنوعة:
- كتطبيق ويب تقليدي؛
- كملف ثنائي قابل للتنفيذ على محاكيات Android؛
مرة أخرى، هذا الدليل التعليمي ليس شاملاً فيما يتعلق بدراسة هذين الإطارين. بالنسبة لـ Angular، من الضروري بالتأكيد عرض أدوات الاختبار المصاحبة له. الاختبارات هي خطوات لا غنى عنها عند كتابة أي تطبيق. تسمح الأدوات المرتبطة بـ Angular بأتمتة هذه الاختبارات وإدراجها في عملية التكامل المستمر.
سأستخلص نقطتين من هذا العمل:
- كان كتابة خدمة الويب Spring معقدًا إلى حد ما. منذ البداية، كنت على دراية جيدة بمفاهيم Spring. لم أواجه صعوبات إلا في تأمين خدمة الويب، ثم لاحقًا في إدارة الرؤوس HTTP وCORS، وهما مجالان لم أكن على دراية بهما؛
- كان كتابة عميل Angular أكثر تعقيدًا بكثير لأسباب مختلفة:
- لم تكن معرفتي بلغة جافا سكريبت وإمكانياتها كافية؛
- واجهت صعوبة في فهم كيفية عمل البرمجة غير المتزامنة داخل المتصفح. كنت أفكر كما لو كنت أعمل على خادم حيث يتم تحقيق عدم التزامن هذا من خلال الاستخدام المتزامن لعدة خيوط. أما في المتصفح، فلا يوجد سوى خيط واحد، ويتم معالجة المهام غير المتزامنة بالتتابع وليس بالتوازي. وبشكل أكثر دقة، يمكن أن تُنفَّذ المهام غير المتزامنة بشكل متوازٍ (مثل الطلبات المتعددة HTTP على سبيل المثال)، لكن الأحداث التي تنتجها عند انتهائها تُعالج بشكل متسلسل. وبالتالي، لا يوجد تنفيذ متزامن يتعين إدارته مع المشاكل العديدة التي تصاحبه؛
- Angular هو إطار عمل غني بالعديد من المفاهيم (MVC، التوجيهات، الخدمات، نطاق النماذج، ...). يتطلب تعلمه وقتًا طويلاً؛
- لا يفرض Angular أسلوبًا معينًا للتطوير. وبالتالي، يمكن استخدام بنى مختلفة للوصول إلى نفس النتيجة. وهذا أمر مربك. أشعر براحة أكبر مع أطر العمل المغلقة حيث يستخدم الجميع أنماط التصميم (design pattern) نفسها. لذا، سعيت باستمرار إلى تكرار أنماط التصميم التي أستخدمها على جانب الخادم. أنا راضٍ عن النتيجة لأنني أعتقد أنها قابلة للتكرار. هذا ما كنت أبحث عنه. لكنني لا أعرف على الإطلاق ما إذا كنت قد ابتعدت أم لا عن «الممارسات الجيدة» في Angular؛
Serge Tahé، يوليو 2014.