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

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

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

ابدأ الدورة

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



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



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



لتطوير تطبيقات gRPC بلغة جافا، يتم استخدام النظام البيئي grpc-java. يتضمن ثلاثة مكونات رئيسية:



  • grpc-core - نواة الإطار، التي تنفذ طبقة النقل وإدارة القنوات.
  • grpc-stub - توليد الكعب (stubs) للعميل والخادم بناءً على ملفات proto.
  • grpc-protobuf - التكامل مع Protocol Buffers (protobuf) لتسلسل البيانات.


قد تحتاج أيضًا إلى protoc - مترجم لتوليد فئات جافا من ملفات .proto. في المشاريع الحديثة، من المناسب استخدام إضافات Maven أو Gradle التي تؤتمت هذه العملية.



إعداد المشروع باستخدام Maven



أضف التبعيات في pom.xml:



<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>javax.annotation</groupId>    <artifactId>javax.annotation-api</artifactId>    <version>1.3.2</version></dependency>


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



<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}</protocArtifact>        <pluginId>grpc-java</pluginId>        <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.2:exe:${os.detected.classifier}</pluginArtifact>    </configuration>    <executions>        <execution>            <goals>                <goal>compile</goal>                <goal>compile-custom</goal>            </goals>        </execution>    </executions></plugin>


تعريف الخدمة عبر Protocol Buffers



أنشئ ملف hello.proto في الدليل src/main/proto:



syntax = "proto3";

package example;

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {}}

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


بعد تنفيذ mvn compile، سيتم توليد الفئات HelloRequest و HelloReply و GreeterGrpc.



تنفيذ خادم gRPC بلغة جافا



أنشئ فئة الخادم التي تنفذ الواجهة المولدة:



import io.grpc.Server;import io.grpc.ServerBuilder;import io.grpc.stub.StreamObserver;

public class HelloServer { public static void main(String[] args) throws Exception { Server server = ServerBuilder.forPort(50051) .addService

توصيات