5. نتیجهگیری
ما برنامهٔ کلاینت/سرور زیر را ساختهایم:

برای رسیدن به نسخه نهایی کد، ما مجبور بودیم جنبههای متعددی از فریمورکهای AngularJS و Spring 4 را توضیح دهیم. بنابراین، این سند میتواند برای یادگیری نحوه استفاده از این دو فریمورک مورد استفاده قرار گیرد. بخش 1.3 توضیح میدهد که کد را از کجا میتوان یافت و چگونه از آن استفاده کرد.
ما نشان دادهایم که این برنامهٔ کلاینت/سرور را میتوان در محیطهای مختلفی استفاده کرد:
- بهعنوان یک برنامه وب سنتی؛
- بهعنوان یک باینری قابل اجرا روی شبیهسازهای اندروید؛
بار دیگر، این آموزش در پوشش این دو فریمورک جامع نیست. برای Angular، قطعاً پوشش ابزارهای تست همراه آن ضروری است. تستکردن بخش ضروری فرآیند توسعه اپلیکیشن است. ابزارهای مرتبط با Angular امکان خودکارسازی این تستها و ادغام آنها در یک فرآیند یکپارچهسازی مستمر را فراهم میکنند.
از این کار، دو نکته کلیدی برداشت میکنم:
- نوشتن سرویس وب Spring تا حدودی پیچیده بود. من از همان ابتدا با مفاهیم Spring آشنا بودم. تنها در زمینه امنسازی سرویس وب و بعداً در مدیریت هدرهای HTTP و CORS – دو حوزهای که با آنها آشنایی نداشتم – با مشکل مواجه شدم؛
- نوشتن کلاینت Angular به دلایل مختلف بسیار پیچیدهتر بود:
- من به اندازه کافی در مورد جاوااسکریپت و قابلیتهای آن نمیدانستم؛
- برایم دشوار بود بفهمم برنامهنویسی ناهمزمان در مرورگر چگونه کار میکند. من در ذهنم به سرور فکر میکردم، جایی که این رفتار ناهمزمان از طریق استفاده همزمان از چندین نخ (thread) محقق میشود. در مرورگر تنها یک نخ وجود دارد و وظایف ناهمزمان بهصورت متوالی پردازش میشوند نه بهصورت موازی. به طور مشخصتر، وظایف غیرهمزمان میتوانند به صورت موازی اجرا شوند (برای مثال، چندین درخواست HTTP)، اما رویدادهایی که با تکمیل آنها ایجاد میشوند، به صورت ترتیبی پردازش میشوند. بنابراین، هیچ اجرای همزمان برای مدیریت وجود ندارد، به همراه تمام مشکلات مرتبطی که به همراه دارد؛
- Angular یک فریمورک غنی از امکانات با مفاهیم متعددی (MVC، دستورالعملها، سرویسها، مدل اسکوپ و غیره) است. یادگیری آن زمان زیادی میبرد؛
- Angular روش توسعه خاصی را تحمیل نمیکند. در نتیجه، برای رسیدن به همان نتیجه، میتوان از معماریهای متفاوتی استفاده کرد. این موضوع گیجکننده است. من با فریمورکهای بسته که در آنها همه از الگوهای طراحی یکسان استفاده میکنند، راحتتر هستم. بنابراین من همواره سعی کردهام الگوهای طراحیای را که در سمت سرور استفاده میکنم، بازتولید کنم. من از نتیجه راضی هستم زیرا معتقدم قابل تکرار است. این همان چیزی است که به دنبالش بودم. اما من اصلاً نمیدانم که آیا از «بهترین شیوههای» Angular منحرف شدهام یا نه؛
Serge Tahé، ژوئیه ۲۰۱۴.