gRPC لجافا: المكتبات، الإعداد وأمثلة الاستخدام
\n\ngRPC هو إطار عمل حديث عالي الأداء للاستدعاء عن بُعد للإجراءات (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
بالإضافة إلى ذلك، قد تحتاج إلى protobuf-java (للعمل مع الرسائل) والمكون الإضافي protobuf-gradle-plugin (أو ما يعادله لـ Maven) لتوليد الكود أثناء مرحلة البناء.
\n\nإعداد المشروع (Maven)
\n\nأضف التبعيات التالية إلى ملف pom.xml:
<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:
<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:
syntax = "proto3";\n\npackage hello;\n\nservice Greet