gRPC لجافا: المكتبات، الإعداد وأمثلة الكود

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

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

ابدأ الدورة

gRPC لجافا: المكتبات، الإعداد وأمثلة الاستخدام

\n\n

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

\n\n

المكتبات الرئيسية لـ gRPC في جافا

\n\n

للعمل مع gRPC في جافا، تُستخدم ثلاث تبعيات رئيسية:

\n
    \n
  • io.grpc:grpc-netty-shaded — طبقة النقل المعتمدة على Netty. توفر دعم HTTP/2 والأمان (TLS). يُوصى بها لمعظم المشاريع.
  • \n
  • io.grpc:grpc-protobuf — التكامل مع Protocol Buffers. تسمح بتوليد فئات جافا من ملفات .proto.
  • \n
  • io.grpc:grpc-stub — مكتبة لإنشاء الكعب (stubs) من جانب العميل والخادم. تُبسط استدعاء الطرق عن بُعد.
  • \n
\n\n

بالإضافة إلى ذلك، قد تحتاج إلى protobuf-java (للعمل مع الرسائل) والمكون الإضافي protobuf-gradle-plugin (أو ما يعادله لـ Maven) لتوليد الكود أثناء مرحلة البناء.

\n\n

إعداد المشروع (Maven)

\n\n

أضف التبعيات التالية إلى ملف pom.xml:

\n\n
<dependencies>\n    <dependency>\n        <groupId>io.grpc</groupId>\n        <artifactId>grpc-netty-shaded</artifactId>\n        <version>1.62.0</version>\n    </dependency>\n    <dependency>\n        <groupId>io.grpc</groupId>\n        <artifactId>grpc-protobuf</artifactId>\n        <version>1.62.0</version>\n    </dependency>\n    <dependency>\n        <groupId>io.grpc</groupId>\n        <artifactId>grpc-stub</artifactId>\n        <version>1.62.0</version>\n    </dependency>\n    <dependency>\n        <groupId>javax.annotation</groupId>\n        <artifactId>javax.annotation-api</artifactId>\n        <version>1.3.2</version>\n    </dependency>\n</dependencies>
\n\n

قم أيضًا بتوصيل المكون الإضافي لتوليد الكود من ملفات .proto:

\n\n
<build>\n    <extensions>\n        <extension>\n            <groupId>kr.motd.maven</groupId>\n            <artifactId>os-maven-plugin</artifactId>\n            <version>1.7.1</version>\n        </extension>\n    </extensions>\n    <plugins>\n        <plugin>\n            <groupId>org.xolstice.maven.plugins</groupId>\n            <artifactId>protobuf-maven-plugin</artifactId>\n            <version>0.6.1</version>\n            <configuration>\n                <protocArtifact>com.google.protobuf:protoc:3.24.0:exe:${os.detected.classifier}</protocArtifact>\n                <pluginId>grpc-java</pluginId>\n                <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.0:exe:${os.detected.classifier}</pluginArtifact>\n            </configuration>\n            <executions>\n                <execution>\n                    <goals>\n                        <goal>compile</goal>\n                        <goal>compile-custom</goal>\n                    </goals>\n                </execution>\n            </executions>\n        </plugin>\n    </plugins>\n</build>
\n\n

إنشاء ملف .proto

\n\n

حدد الخدمة والرسائل في ملف src/main/proto/hello.proto:

\n\n
syntax = "proto3";\n\npackage hello;\n\nservice Greet                    

توصيات