Skip to content

5. الخلاصة

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

Image

للوصول إلى النسخة النهائية من الكود، كان علينا شرح العديد من جوانب أطر عمل AngularJS و Spring 4. وبالتالي، يمكن استخدام هذا المستند لتعلم كيفية استخدام هذين الإطارين. يشرح القسم 1.3 مكان العثور على الكود وكيفية استخدامه.

لقد أثبتنا أن تطبيق العميل/الخادم قابل للاستخدام في بيئات متنوعة:

  • كتطبيق ويب تقليدي؛
  • كبرنامج ثنائي قابل للتنفيذ على محاكيات Android؛

مرة أخرى، لا يغطي هذا البرنامج التعليمي هذين الإطارين بشكل شامل. بالنسبة لـ Angular، سنحتاج بالتأكيد إلى تغطية أدوات الاختبار المصاحبة له. يعد الاختبار خطوة أساسية عند كتابة أي تطبيق. تسمح الأدوات المرتبطة بـ Angular بأتمتة هذه الاختبارات ودمجها في عملية تكامل مستمرة.

سأستخلص نقطتين رئيسيتين من هذا العمل:

  • كانت كتابة خدمة الويب Spring معقدة إلى حد ما. منذ البداية، كنت على دراية بمفاهيم Spring. لم أواجه صعوبات إلا في تأمين خدمة الويب، ثم لاحقًا في إدارة رؤوس HTTP CORS — وهما مجالان لم أكن على دراية بهما؛
  • كانت كتابة عميل Angular أكثر تعقيدًا لعدة أسباب:
    • كنت أفتقر إلى المعرفة الكافية بلغة JavaScript وقدراتها؛
    • واجهت صعوبة في فهم كيفية عمل البرمجة غير المتزامنة داخل المتصفح. كنت أفكر فيها كما لو كانت على الخادم، حيث يتم تحقيق هذا التباين من خلال الاستخدام المتزامن لخيوط متعددة. في المتصفح، يوجد خيط واحد فقط، ويتم معالجة المهام غير المتزامنة بالتسلسل بدلاً من المعالجة المتوازية. وبشكل أكثر تحديدًا، يمكن تشغيل المهام غير المتزامنة بالتوازي (طلبات HTTP متعددة، على سبيل المثال)، ولكن الأحداث التي تطلقها عند الانتهاء تتم معالجتها بالتسلسل. وبالتالي، لا يوجد تنفيذ متزامن لإدارته، إلى جانب العديد من المشكلات التي تصاحبه؛
    • Angular هو إطار عمل غني بالعديد من المفاهيم (MVC، التوجيهات، الخدمات، نطاق النموذج، إلخ). يستغرق تعلمه وقتًا طويلاً؛
    • لا يفرض Angular طريقة تطوير محددة. وبالتالي، لتحقيق نفس النتيجة، يمكن استخدام بنى مختلفة. وهذا أمر مربك. أنا أكثر ارتياحًا للأطر المغلقة حيث يستخدم الجميع أنماط التصميم نفسها. لذلك، سعيت باستمرار إلى تكرار أنماط التصميم التي أستخدمها على جانب الخادم. أنا راضٍ عن النتيجة لأنني أعتقد أنها قابلة للتكرار. هذا ما كنت أبحث عنه. لكن ليس لدي أي فكرة عما إذا كنت قد ابتعدت عن "أفضل الممارسات" في Angular أم لا؛

سيرج تاهي، يوليو 2014.