gRPC یک چارچوب مدرن، منبع باز و با کارایی بالا RPC است که می تواند در هر محیطی اجرا شود. این می تواند خدمات را در داخل و بین مراکز داده با پشتیبانی قابل اتصال برای تعادل بار، ردیابی، بررسی سلامت و احراز هویت به طور موثر متصل کند. همچنین در آخرین مایل محاسبات توزیعشده برای اتصال دستگاهها، برنامههای کاربردی تلفن همراه و مرورگرها به سرویسهای پشتیبان قابل استفاده است. می توانید اسناد را در وب سایت رسمی gRPC بیابید و از جوامع منبع باز پشتیبانی دریافت کنید. این راهنما شما را به راه حل هایی برای ساخت برنامه های اندروید با استفاده از gRPC راهنمایی می کند.
grpc.io وب سایت رسمی پروژه gRPC است. برای کسب اطلاعات بیشتر در مورد نحوه عملکرد gRPC، نگاه کنید به gRPC چیست؟ و مفاهیم gRPC . برای یادگیری نحوه استفاده از gRPC در یک برنامه اندروید، به مثال Hello World در gRPC Android Java Quickstart مراجعه کنید. همچنین می توانید چندین نمونه دیگر gRPC اندروید را در GitHub پیدا کنید.
ویژگی ها
- فراخوان رویه آن را ساده می کند
- از آنجایی که RPC است، مدل برنامهنویسی فراخوانی رویهای است: جنبه شبکهای فناوری به دور از کد برنامه انتزاعی میشود، و تقریباً به نظر میرسد که یک فراخوانی تابع معمولی در جریان است. تعامل مشتری و سرور شما توسط معنای روش های منابع HTTP (مانند GET، PUT، POST و DELETE) محدود نخواهد شد. در مقایسه با API های REST، پیاده سازی شما طبیعی تر به نظر می رسد، بدون نیاز به مدیریت فراداده پروتکل HTTP.
- انتقال کارآمد شبکه با HTTP/2
- انتقال دادهها از دستگاههای تلفن همراه به یک سرور باطن میتواند یک فرآیند بسیار فشرده منابع باشد. با استفاده از پروتکل استاندارد HTTP/1.1، اتصالات مکرر از یک دستگاه تلفن همراه به یک سرویس ابری می تواند باتری را تخلیه کند، تأخیر را افزایش دهد و دیگر برنامه ها را از اتصال مسدود کند. بهطور پیشفرض، gRPC در بالای HTTP/2 اجرا میشود، که جریان دوطرفه، کنترل جریان، فشردهسازی هدر و توانایی مالتیپلکس کردن درخواستها از طریق یک اتصال TCP/IP را معرفی میکند. نتیجه این است که gRPC میتواند مصرف منابع را کاهش دهد، در نتیجه زمان پاسخدهی کمتری بین برنامه و سرویسهای شما که در فضای ابری اجرا میشوند، کاهش مصرف شبکه و عمر باتری طولانیتر برای کلاینتهایی که در دستگاههای تلفن همراه اجرا میشوند، میشود.
- پشتیبانی از تبادل داده های جریانی داخلی
- gRPC از همان ابتدا با پشتیبانی HTTP/2 برای جریان دوطرفه تمام دو طرفه طراحی شده است. پخش جریانی اجازه می دهد تا یک درخواست و پاسخ به طور دلخواه اندازه بزرگی داشته باشد، مانند عملیاتی که نیاز به آپلود یا دانلود حجم زیادی از اطلاعات دارد. با پخش جریانی، مشتری و سرور می توانند پیام ها را به طور همزمان بخوانند و بنویسند و بدون ردیابی شناسه منابع، مشترک یکدیگر شوند. این امر اجرای برنامه شما را انعطاف پذیرتر می کند.
- ادغام بدون درز با پروتکل بافر
- gRPC از بافرهای پروتکل (Protobuf) بهعنوان روش سریالسازی/جداییسازی با افزونه کدژن بهینهشده برای اندروید ( Protobuf Java Lite ) استفاده میکند. در مقایسه با فرمت مبتنی بر متن (مانند JSON)، Protobuf تبادل داده های کارآمدتری را از نظر سرعت مارشال و اندازه کد ارائه می دهد که استفاده از آن را در محیط های تلفن همراه مناسب تر می کند. همچنین دستور مختصر تعریف پیام/سرویس Protobuf، تعریف مدل داده و پروتکل های برنامه کاربردی را برای برنامه شما بسیار آسان تر می کند.
نمای کلی استفاده
با پیروی از اصول gRPC - آموزش جاوا اندروید ، استفاده از gRPC برای برنامه های اندروید شامل چهار مرحله است:
- خدمات RPC را با بافرهای پروتکل تعریف کنید و رابط های مشتری gRPC را ایجاد کنید.
- کانالی بسازید که به عنوان رسانه برای تماس های RPC بین مشتری و سرور عمل کند.
- یک Client Stub به عنوان نقطه ورودی برای شروع تماس های RPC از سمت مشتری ایجاد کنید.
- همانطور که در هنگام انجام تماس های رویه محلی انجام می دهید، با سرور راه دور تماس های RPC برقرار کنید.
برای اهداف نمایشی، بایت ها به صورت متن ساده در مثال ارائه شده منتقل می شوند. با این حال، برنامه شما همیشه باید داده های شبکه را در زمان تولید رمزگذاری کند. gRPC پشتیبانی از رمزگذاری SSL/TLS و همچنین تبادل توکن OAuth (OAuth2 با سرویسهای Google) را برای احراز هویت ارائه میکند. برای جزئیات بیشتر، TLS در Android و استفاده از OAuth2 را ببینید.
حمل و نقل
gRPC دو انتخاب از پیاده سازی های حمل و نقل را برای مشتریان اندروید ارائه می دهد: OkHttp و Cronet.
انتخاب یک حمل و نقل (پیشرفته)
- OkHttp
- OkHttp یک پشته شبکه سبک وزن است که برای استفاده در تلفن همراه طراحی شده است. این انتقال پیش فرض gRPC برای اجرا در محیط اندروید است. برای استفاده از OkHttp بهعنوان انتقال gRPC برای برنامهتان، کانال را با
AndroidChannelBuilder
بسازید، کهOkHttpChannelBuilder
را میپیچد و یک مانیتور شبکه را با سیستمعامل Android ثبت میکند تا به سرعت به تغییرات شبکه پاسخ دهد. یک نمونه استفاده را می توان در gRPC-Java AndroidChannelBuilder پیدا کرد.
- کرونت (تجربی)
- Cronet پشته Networking Chromium است که به عنوان یک کتابخانه برای موبایل بسته بندی شده است. پشتیبانی شبکه قوی با پیشرفته ترین پروتکل QUIC را ارائه می دهد که می تواند به ویژه در محیط های شبکه غیر قابل اعتماد موثر باشد. برای کسب اطلاعات بیشتر درباره Cronet، به انجام عملیات شبکه با استفاده از Cronet مراجعه کنید. برای استفاده از Cronet به عنوان انتقال gRPC برای برنامه خود، کانال را با
CronetChannelBuilder
بسازید. یک نمونه استفاده در gRPC-Java Cronet Transport ارائه شده است.
به طور کلی، ما به برنامه هایی که نسخه های اخیر SDK را هدف قرار می دهند، توصیه می کنیم از Cronet استفاده کنند زیرا پشته شبکه قدرتمندتری را ارائه می دهد. نقطه ضعف استفاده از Cronet افزایش اندازه APK است، زیرا افزودن وابستگی Cronet باینری بیش از 1 مگابایت به اندازه برنامه اضافه می کند، در مقابل ~ 100 کیلوبایت برای OkHttp. با شروع نسخه GMSCore نسخه 10، یک نسخه به روز از Cronet را می توان از خدمات Google Play بارگیری کرد. اندازه APK ممکن است دیگر نگران کننده نباشد، اگرچه دستگاه های بدون آخرین GMSCore نصب شده ممکن است همچنان استفاده از OkHttp را ترجیح دهند.