gRPC এর সাথে ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন তৈরি করুন

gRPC হল একটি আধুনিক, ওপেন সোর্স, উচ্চ-পারফরম্যান্স RPC ফ্রেমওয়ার্ক যা যেকোনো পরিবেশে চলতে পারে। এটি লোড ব্যালেন্সিং, ট্রেসিং, স্বাস্থ্য-পরীক্ষা এবং প্রমাণীকরণের জন্য প্লাগযোগ্য সমর্থন সহ ডেটা সেন্টারে এবং জুড়ে পরিষেবাগুলিকে দক্ষতার সাথে সংযুক্ত করতে পারে। ডিভাইস, মোবাইল অ্যাপ্লিকেশন, এবং ব্রাউজারগুলিকে ব্যাকএন্ড পরিষেবার সাথে সংযুক্ত করার জন্য বিতরণকৃত কম্পিউটিং এর শেষ মাইলেও এটি প্রযোজ্য। আপনি gRPC-এর অফিসিয়াল ওয়েবসাইটে ডকুমেন্টেশন খুঁজে পেতে পারেন এবং ওপেন সোর্স সম্প্রদায় থেকে সমর্থন পেতে পারেন। এই নির্দেশিকা আপনাকে জিআরপিসি ব্যবহার করে অ্যান্ড্রয়েড অ্যাপ তৈরির সমাধানের দিকে নির্দেশ করে।

grpc.io হল gRPC প্রকল্পের অফিসিয়াল ওয়েবসাইট। কিভাবে gRPC কাজ করে সে সম্পর্কে আরও জানতে, দেখুন gRPC কি? এবং gRPC ধারণা । একটি অ্যান্ড্রয়েড অ্যাপে কীভাবে জিআরপিসি ব্যবহার করবেন তা শিখতে, জিআরপিসি অ্যান্ড্রয়েড জাভা কুইকস্টার্টে হ্যালো ওয়ার্ল্ড উদাহরণটি দেখুন। আপনি GitHub-এ আরও কয়েকটি জিআরপিসি অ্যান্ড্রয়েড উদাহরণ খুঁজে পেতে পারেন।

বৈশিষ্ট্য

পদ্ধতি কল এটা সহজ করে তোলে
যেহেতু এটি আরপিসি, প্রোগ্রামিং মডেলটি হল পদ্ধতি কল: প্রযুক্তির নেটওয়ার্কিং দিকটি অ্যাপ্লিকেশন কোড থেকে দূরে সরানো হয়েছে, এটিকে প্রায় এমন দেখায় যেন এটি একটি সাধারণ ইন-প্রসেস ফাংশন কল। আপনার ক্লায়েন্ট-সার্ভার ইন্টারঅ্যাকশন HTTP রিসোর্স পদ্ধতির (যেমন GET, PUT, POST, এবং DELETE) শব্দার্থবিদ্যা দ্বারা সীমাবদ্ধ হবে না। REST API-এর তুলনায়, HTTP প্রোটোকল মেটাডেটা পরিচালনার প্রয়োজন ছাড়াই আপনার বাস্তবায়ন আরও স্বাভাবিক দেখায়।
HTTP/2 সহ দক্ষ নেটওয়ার্ক ট্রান্সমিশন
মোবাইল ডিভাইস থেকে একটি ব্যাকএন্ড সার্ভারে ডেটা প্রেরণ করা একটি খুব সম্পদ-নিবিড় প্রক্রিয়া হতে পারে। স্ট্যান্ডার্ড HTTP/1.1 প্রোটোকল ব্যবহার করে, একটি মোবাইল ডিভাইস থেকে একটি ক্লাউড পরিষেবাতে ঘন ঘন সংযোগ ব্যাটারি নিষ্কাশন করতে পারে, লেটেন্সি বাড়াতে পারে এবং অন্যান্য অ্যাপগুলিকে সংযোগ করা থেকে ব্লক করতে পারে। ডিফল্টরূপে, gRPC HTTP/2 এর উপরে চলে, যা দ্বি-দিকনির্দেশক স্ট্রিমিং, প্রবাহ নিয়ন্ত্রণ, হেডার কম্প্রেশন এবং একটি একক TCP/IP সংযোগের মাধ্যমে মাল্টিপ্লেক্স অনুরোধ করার ক্ষমতা প্রবর্তন করে। ফলাফল হল যে জিআরপিসি রিসোর্স ব্যবহার কমাতে পারে, যার ফলে ক্লাউডে চলমান আপনার অ্যাপ এবং পরিষেবাগুলির মধ্যে প্রতিক্রিয়ার সময় কম হয়, নেটওয়ার্ক ব্যবহার কমে যায় এবং মোবাইল ডিভাইসে চলমান ক্লায়েন্টের ব্যাটারি লাইফ দীর্ঘ হয়।
অন্তর্নির্মিত স্ট্রিমিং ডেটা বিনিময় সমর্থন
gRPC শুরু থেকেই সম্পূর্ণ-ডুপ্লেক্স দ্বিমুখী স্ট্রিমিংয়ের জন্য HTTP/2 এর সমর্থনের সাথে ডিজাইন করা হয়েছিল। স্ট্রিমিং একটি অনুরোধ এবং প্রতিক্রিয়াকে ইচ্ছামত বড় আকারের অনুমতি দেয়, যেমন অপারেশনগুলির জন্য প্রচুর পরিমাণে তথ্য আপলোড করা বা ডাউনলোড করা প্রয়োজন। স্ট্রিমিংয়ের মাধ্যমে, ক্লায়েন্ট এবং সার্ভার একই সাথে বার্তা পড়তে এবং লিখতে পারে এবং রিসোর্স আইডি ট্র্যাক না করে একে অপরের সদস্যতা নিতে পারে। এটি আপনার অ্যাপ বাস্তবায়নকে আরও নমনীয় করে তোলে।
প্রোটোকল বাফারের সাথে বিরামবিহীন ইন্টিগ্রেশন
জিআরপিসি প্রোটোকল বাফারস (প্রোটোবুফ) ব্যবহার করে তার সিরিয়ালাইজেশন/ডিসারিয়ালাইজেশন পদ্ধতি হিসাবে অপ্টিমাইজড-ফর-অ্যান্ড্রয়েড কোডজেন প্লাগইন ( প্রোটোবুফ জাভা লাইট ) সহ। টেক্সট-ভিত্তিক বিন্যাসের (যেমন JSON) তুলনায়, Protobuf মার্শালিং গতি এবং কোড আকারের পরিপ্রেক্ষিতে আরও দক্ষ ডেটা আদান-প্রদান করে, যা মোবাইল পরিবেশে ব্যবহার করার জন্য আরও উপযুক্ত করে তোলে। এছাড়াও Protobuf এর সংক্ষিপ্ত বার্তা/পরিষেবা সংজ্ঞা সিনট্যাক্স আপনার অ্যাপের জন্য ডেটা মডেল এবং অ্যাপ্লিকেশন প্রোটোকল সংজ্ঞায়িত করা অনেক সহজ করে তোলে।

ব্যবহার ওভারভিউ

জিআরপিসি বেসিক অনুসরণ করে - অ্যান্ড্রয়েড জাভা টিউটোরিয়াল, অ্যান্ড্রয়েড অ্যাপের জন্য জিআরপিসি ব্যবহার করার জন্য চারটি ধাপ রয়েছে:

  • প্রোটোকল বাফার সহ RPC পরিষেবাগুলি সংজ্ঞায়িত করুন এবং gRPC ক্লায়েন্ট ইন্টারফেস তৈরি করুন।
  • একটি চ্যানেল তৈরি করুন যা ক্লায়েন্ট এবং সার্ভারের মধ্যে RPC কলের মাধ্যম হিসেবে কাজ করে।
  • ক্লায়েন্টের পক্ষ থেকে RPC কল শুরু করার জন্য এন্ট্রি পয়েন্ট হিসাবে একটি ক্লায়েন্ট স্টাব তৈরি করুন।
  • দূরবর্তী সার্ভারে RPC কল করুন যেমন আপনি স্থানীয় পদ্ধতি কল করার সময় করতেন।

প্রদর্শনের উদ্দেশ্যে, প্রদত্ত উদাহরণে বাইটগুলি সরল পাঠ্যে প্রেরণ করা হয়। যাইহোক, আপনার অ্যাপ্লিকেশন সবসময় উত্পাদন নেটওয়ার্ক ডেটা এনক্রিপ্ট করা উচিত. gRPC প্রমাণীকরণের জন্য SSL/TLS এনক্রিপশন সমর্থনের পাশাপাশি OAuth টোকেন বিনিময় (Google পরিষেবাগুলির সাথে OAuth2) প্রদান করে। আরও বিশদ বিবরণের জন্য, Android এবং OAuth2 ব্যবহার করে TLS দেখুন।

পরিবহন

gRPC Android ক্লায়েন্টদের জন্য পরিবহন বাস্তবায়নের দুটি পছন্দ প্রদান করে: OkHttp এবং Cronet।

একটি পরিবহন চয়ন করুন (উন্নত)

  • OkHttp
    OkHttp হল একটি হালকা ওজনের নেটওয়ার্কিং স্ট্যাক যা মোবাইলে ব্যবহারের জন্য ডিজাইন করা হয়েছে। এটি অ্যান্ড্রয়েড পরিবেশে চালানোর জন্য gRPC-এর ডিফল্ট পরিবহন। আপনার অ্যাপের জন্য GRPC ট্রান্সপোর্ট হিসাবে OkHttp ব্যবহার করতে, AndroidChannelBuilder দিয়ে চ্যানেলটি তৈরি করুন, যা OkHttpChannelBuilder মোড়ানো এবং নেটওয়ার্ক পরিবর্তনগুলিতে দ্রুত প্রতিক্রিয়া জানাতে Android OS-এর সাথে একটি নেটওয়ার্ক মনিটর নিবন্ধন করবে। একটি উদাহরণ ব্যবহার gRPC-Java AndroidChannelBuilder এ পাওয়া যাবে।
  • ক্রোনেট (পরীক্ষামূলক)
    Cronet হল Chromium-এর নেটওয়ার্কিং স্ট্যাক যা মোবাইলের জন্য একটি লাইব্রেরি হিসাবে প্যাকেজ করা হয়েছে৷ এটি অত্যাধুনিক QUIC প্রোটোকল সহ শক্তিশালী নেটওয়ার্কিং সমর্থন অফার করে, যা অবিশ্বস্ত নেটওয়ার্ক পরিবেশে বিশেষভাবে কার্যকর হতে পারে। Cronet সম্পর্কে আরও বিশদ জানতে, Cronet ব্যবহার করে নেটওয়ার্ক অপারেশন সম্পাদন করুন দেখুন। আপনার অ্যাপের জন্য gRPC ট্রান্সপোর্ট হিসাবে Cronet ব্যবহার করতে, CronetChannelBuilder দিয়ে চ্যানেল তৈরি করুন। জিআরপিসি-জাভা ক্রনেট ট্রান্সপোর্টে একটি উদাহরণ ব্যবহার প্রদান করা হয়েছে।

সাধারণভাবে বলতে গেলে, আমরা সাম্প্রতিক SDK সংস্করণগুলিকে লক্ষ্য করে এমন অ্যাপগুলিকে Cronet ব্যবহার করার পরামর্শ দিই কারণ এটি আরও শক্তিশালী নেটওয়ার্ক স্ট্যাক অফার করে৷ Cronet ব্যবহার করার নেতিবাচক দিক হল APK আকার বৃদ্ধি, কারণ বাইনারি Cronet নির্ভরতা যোগ করলে অ্যাপের আকারে >1MB যোগ হবে, OkHttp-এর জন্য ~100KB। GMSCore v.10 দিয়ে শুরু করে, Cronet-এর একটি আপ-টু-ডেট কপি Google Play পরিষেবা থেকে লোড করা যেতে পারে। APK আকারটি আর উদ্বেগের বিষয় নাও হতে পারে, যদিও সর্বশেষ GMSCore ইনস্টল না থাকা ডিভাইসগুলি এখনও OkHttp ব্যবহার করতে পছন্দ করতে পারে।