gRPC Java: دليل شامل مع أمثلة عملية للمطورين

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

gRPC Java: دليل شامل مع أمثلة عملية للمطورين

مرحبًا بك في الدليل الشامل لمكتبة gRPC Java، وهي إطار عمل عالي الأداء للاستدعاء عن بُعد للإجراءات (RPC) من تطوير Google. هذه المقالة موجهة لمطوري Java الذين يرغبون في إتقان الطريقة الحديثة لبناء تطبيقات الميكروسيرفيس وتطبيقات العميل-خادم باستخدام Protocol Buffers (protobuf) كلغة لوصف الواجهات وتسلسل البيانات.

1. ما هي gRPC Java ولماذا تحتاجها؟

gRPC هو إطار عمل حديث وعالي الأداء للاستدعاء عن بُعد للإجراءات (RPC)، طورته Google. يستخدم HTTP/2 للنقل، و Protocol Buffers (protobuf) لتسلسل البيانات، ويوفر العديد من الميزات مثل البث ثنائي الاتجاه، والمصادقة، وتوزيع الأحمال. مكتبة gRPC Java هي التطبيق الرسمي لـ gRPC للغة Java.

لماذا تستخدم gRPC Java؟ على عكس REST APIs التقليدية التي تستخدم JSON و HTTP/1.1، تقدم gRPC مجموعة من المزايا:

  • أداء عالٍ: استخدام HTTP/2 يتيح تعدد الإرسال للطلبات، بينما يوفر protobuf تسلسلًا مضغوطًا وسريعًا للبيانات (أسرع من JSON بمقدار 3-10 مرات).
  • كتابة صارمة للأنواع: يتم تعريف عقود API في ملفات .proto، مما يسمح بتوليد كود مقيد الأنواع (strictly-typed) لكل من الخادم والعميل.
  • دعم البث: يدعم gRPC أربعة أنواع من RPC: أحادي (طلب واحد - رد واحد)، بث من الخادم، بث من العميل، وبث ثنائي الاتجاه.
  • دعم مدمج للمصادقة و TLS: يتكامل gRPC بسهولة مع SSL/TLS وآليات المصادقة المختلفة.

هذه المكتبة مثالية لبناء بنى الميكروسيرفيس، وأنظمة الوقت الفعلي (الدردشة، الألعاب)، والخلفيات الخاصة بالتطبيقات المحمولة، وأي تطبيقات أخرى تكون فيها السرعة والموثوقية أمرًا بالغ الأهمية.

2. التثبيت

لتثبيت gRPC Java في مشروعك باستخدام Maven أو Gradle، يجب إضافة التبعيات المناسبة. فيما يلي الأوامر الدقيقة لـ Maven (في ملف pom.xml) و Gradle (في ملف build.gradle).

Maven (pom.xml)

<!-- في قسم <dependencies> -->
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-netty-shaded</artifactId>
    <version>1.62.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-protobuf</artifactId>
    <version>1.62.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-stub</artifactId>
    <version>1.62.2</version>
</dependency>
<dependency>
    <groupId>io.grpc</groupId>
    <artifactId>grpc-api</artifactId>
    <version>1.62.2</version>
</dependency>
<dependency>
    <groupId>javax.annotation</groupId>
    <artifactId>javax.annotation-api</artifactId>
    <version>1.3.2</version>
</dependency>

<!-- إضافة إضافة لتجميع ملفات .proto -->
<build>
    <extensions>
        <extension>
            <groupId>kr.motd.maven</groupId>
            <artifactId>os-maven-plugin</artifactId>
            <version>1.7.1</version>
        </extension>
    </extensions>
    <plugins>
        <plugin>
            <groupId>org.xolstice.maven.plugins</groupId>
            <artifactId>protobuf-maven-plugin</artifactId>
            <version>0.6.1</version>
            <configuration>
                <protocArtifact>com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}</protocArt                    

توصيات