وداع با API های وب

تعداد بازدید: 718 تاریخ انتشار : 01 - بهمن- 1399 نویسنده : رامین بیات فرد دسته بندی: برنامه نویسی

هنگام ساخت یک برنامه وب تک صفحه‌ای (SPA) یا یک برنامه تلفن همراه، معمولا برای اتصال فرانت-اند و بک-اند باید یک Web API (REST ، GraphQL و موارد دیگر) را پیاده سازی کنیم. از نظر فنی این کار چندان دشوار نیست، اما عواقب ناخوشایندی دارد.

دو سیاره را تصور کنید. سیاره "فرانت-اند" با جاوااسکریپت صحبت می‌کند و سیاره "بک-اند" نیز با جاوااسکریپت یا هر زبان پیشرفته دیگری صحبت می‌کند.

حال بیایید بگوییم که این سیارات برای تشکیل یک کلمه به نام "اپلیکیشن" نیاز به همکاری گسترده دارند.

متأسفانه، سیارات قادر به برقراری ارتباط مستقیم با یکدیگر با استفاده از زبان مادری خود نیستند و باید به شخص ثالثی به نام " web API " اعتماد کنند که به زبانی بسیار پیچیده صحبت می‌کند.

در واقع زبان اکثر API های وب به ترکیبی از URL ها، چند فعل HTTP (GET ، POST و ...) و گاهی JSON محدود شده است.

API های وب که با GraphQL در ارتباطند پیشرفته ترند اما از امکانات یک زبان برنامه نویسی مانند جاوااسکریپت بسیار عقب هستند:

  • پارادایم برنامه نویسی رویه‌ای یا فانکشنال است (بدون برنامه نویسی شی گرا).
  • فقط اساسی‌ترین تایپ‌ها پشتیبانی می‌شوند (Date، Map، Set و ... را فراموش کنید).
  • مفهوم مرجع وجود ندارد (فقط می‌توانید شی‌ها را از نظر مقدار انتقال دهید).

قرار دادن یک زبان ابتدایی بین فرانت و بک، باعث می‌شود منابع زیادی مصرف شوند و تجربه توسعه را خراب می‌کند.

مشکل دیگر این است که API وب یک لایه به مشکلات اضافه می‌کند که شامل طراحی، اجرا، تست، مستندات و موارد دیگر می‌شود و همه اینها برای توسعه دهنده اذیت کننده است.

اما بدترین چیز این است که ساختن API وب شما را مجبور می‌کند کیفیت پایگاه کد خود را پایین بیاورید. در حقیقت خشک و منسجم نگه داشتن کد هنگامی که فرانت وب و بک آن توسط یک API وب از هم جدا می‌شوند، کاملا چالش برانگیز است.

حال تصور کنید که می‌توانیم از شر API وب خلاص شویم. فرض کنید فرانت-اند می‌تواند با استفاده از زبان مادری خود مستقیما با بک-اند ارتباط برقرار کند. به نظر شما این عالی نیست؟

 

خبر خوب این است که امروزه به لطف مجموعه‌ای از کتابخانه‌ها به نام Layr این امر امکان‌پذیر است.

با بهره گیری از Layr، فرانت و بک از نظر جسمی از هم جدا شده‌اند (در محیط‌های مختلفی اجرا می‌شوند) اما از نظر منطقی متحد می‌شوند (مانند اینکه در یک محیط هستند).

Layr چگونه کار می‌کند؟

  1. قسمت بک وب متشکل از یک یا چند کلاس است که برخی از ویژگی‌ها و متدهای آن به وضوح در معرض دید قرار گرفته است.
  2. فرانت-اند هم برخی از پروکسی‌ها را برای کلاس‌های بک-اند تولید می‌کند و می‌تواند از این پروکسی‌ها مانند کلاس‌های جاوااسکریپت منظم استفاده کند.

در پشت پرده، Layr به مکانیزم RPC متکی است. بنابراین به صورت سطحی می‌توان چیزی مانندCORBA ، Java RMI یا NET CWF. را مشاهده کرد.

اما Layr کاملا متفاوت است:

  • این یک سیستم شی توزیع شده نیست. بک-اند Layr به نوعی stateless است، بنابراین هیچ شی مشترکی در طول پشته وجود ندارد.
  • شامل هیچ کد boilerplate، کد تولید شده، فایل‌های پیکربندی یا مصنوعات نیست.
  • از یک پروتکل سریال سازی ساده اما قدرتمند به نام Deepr استفاده می‌کند که ویژگی‌های منحصر به فردی مانند فراخوانی زنجیره‌ای، دسته بندی خودکار یا اجرای جزئی را امکان‌پذیر می‌سازد.

Layr سفر خود را با JavaScript / TypeScript آغاز می‌کند، اما مسئله‌ای که با آن روبه‌رو است جهانی است و می‌تواند به هر زبان شی گرا منتقل شود.

مثال

بیایید مثال کلاسیک شمارنده را پیاده سازی کنیم تا ببینیم ساخت یک برنامه کامل با Layer چگونه به نظر می‌رسد.

ابتدا مدل داده و منطق تجاری را در قسمت بک-اند پیاده سازی می‌کنیم:


برچسب ها:
دیدگاه یا پرسش ارزشمند خود را برای ما ارسال کنید

ارسال دیدگاه :

دیدگاه های شما

raminbayatfard | 3 سال پیش
پاسخ به دیدگاه

ممنونم


جستجو در مقالات
پربازدیدترین مقالات
برچسب ها