عنوان:

‫پشتیبانی همزمان از REST و gRPC در ASP.NET Core API


نویسنده: محسن افشین
تاریخ: ۱۳۹۹/۰۱/۰۴ ۱۵:۱۳
آدرس: www.dntips.ir
اکثر برنامه نویسان، به احتمال زیاد تاکنون API‌‌های خود را در قالب REST به مشتریان عرضه کرده اند و هم توسعه دهنده و هم خدمات گیرنده از سادگی استفاده از REST API راضی بوده اند. اما در نقطه ای از فرآیند توسعه خود، به جایی می‌رسیم که علاوه بر سادگی توسعه، Performance نقش پررنگی پیدا می‌کند بخصوص با افزایش تعداد Method‌های API و افزایش تعداد مشتریان، آنجاست که CPU سروری که API ما را هاست می‌کند، گاهی به سقف می‌چسبد، ترافیک شبکه به شدت افزایش می‌یابد و در پاسخ به اینکه آیا شما Go Client یا Python Client هم برای API خود دارید، پاسخی جز "خیر" نداریم. اینجاست که جستجو میکنیم و میبینیم راه‌های زیادی پیش روی ماست، یکی از این راه ها، که برای هر سه نیاز فوق پاسخ مناسبی می‌دهد، gRPC هست. نمونه ای عملیاتی از API ای که REST و gRPC را همزمان با هم پشتیبانی کند، در این مخزن گیت هاب  قرار داده ام که می‌توانید برای مقایسه Performance و حجم اطلاعات تبادل شده با هر دو روش از آن استفاده کنید. در این نمونه کد، با فراخوانی یک سرویس ساده، نتایج زیر به دست آمد:
  • سرعت اجرا (سرویس گیرنده): gRPC تقریبا 5 برابر سریعتر از REST پیام‌ها را دریافت کرد.
  • حجم دیتای انتقالی (سرویس گیرنده): حجم پیام‌های gRPC تقریبا نصف REST بود.


مشاهده مطلب اصلی

نظرات

  • علیرضا سیف در ۱۳۹۹/۰۱/۰۴ ۱۹:۵
    سلام .مرسی. سال نو مبارک
    سوالی برام پیش امده که ایا میشه کلاینت یک برنامه react باشه؟
    • محسن افشین در ۱۳۹۹/۰۱/۰۴ ۱۹:۲۷
      سلام
      پروژه grpc-web این هدف را دنبال می‌کند

      https://github.com/grpc/grpc-web