يمكنك تنزيل إطار عمل خادم gRPC للمساعدة في بدء تنفيذ خادم gRPC الكامل.
البدء
أنشئ مشروعًا باستخدام أداة Gradle لبرمجة Java (grpc-booking-service)، وتحت src/main، أنشئ دليلاً باسم proto.
نزِّل تعريف خدمة الحجز وبروتوكول التحقّق من الصحة، ثم ضَعهما ضمن src/main/proto. تحدِّد هذه الملفات طرق gRPC و الرسائل لواجهة برمجة التطبيقات Actions Center API وHealth Check.
عدِّل ملف build.gradle وأضِف الملحقات ومكوّن protobuf الإضافي لنظام Gradle. يمكن الاطّلاع على مقدمة ودليل protobuf-gradle-plugin هنا.
apply plugin: 'java' apply plugin: 'com.google.protobuf' repositories { mavenCentral() } // updating the version in our release process. def grpcVersion = '1.8.0' // CURRENT_GRPC_VERSION def nettyTcNativeVersion = '2.0.7.Final' dependencies { compile "com.google.api.grpc:proto-google-common-protos:0.1.9" compile "io.grpc:grpc-netty:${grpcVersion}" compile "io.grpc:grpc-protobuf:${grpcVersion}" compile "io.grpc:grpc-stub:${grpcVersion}" compile "io.netty:netty-tcnative-boringssl-static:${nettyTcNativeVersion}" compile "org.bouncycastle:bcmail-jdk15:1.46" testCompile "io.grpc:grpc-testing:${grpcVersion}" testCompile "junit:junit:4.12" testCompile "org.mockito:mockito-core:1.9.5" } buildscript { repositories { mavenCentral() } dependencies { // ASSUMES GRADLE 2.12 OR HIGHER. Use plugin version 0.7.5 with earlier // gradle versions classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.1' } } protobuf { protoc { artifact = 'com.google.protobuf:protoc:3.4.0' } plugins { grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" } } generateProtoTasks { all()*.plugins { grpc {} } } } // Inform IDEs like IntelliJ IDEA, Eclipse or NetBeans about the generated code. sourceSets { main { java { srcDirs 'build/generated/source/proto/main/grpc' srcDirs 'build/generated/source/proto/main/java' } } } // Generate IntelliJ IDEA's .idea & .iml project files apply plugin: 'idea' // Provide convenience executables for trying out the examples. apply plugin: 'application' startScripts.enabled = false
نفِّذ الأمر التالي لإنشاء المكتبة وإنشاء الرمز البرمجي تلقائيًا من المكوّن الإضافي لإنشاءprotoc:
./gradlew build
لتفعيل بروتوكول أمان طبقة النقل (TLS) على الخادم، يجب توفُّر الملفات التالية ضمن src/main/certificates/:
- server_cert_chain.pem سلسلة شهادة الخادم بتنسيق PEM
- server_private_key.pem مفتاحك الخاص لسلسلة شهادات الخادم، يجب أن يكون المفتاح الخاص بتنسيق PKCS#8
- trusted_client_roots.pem شهادات الجذر الموثوق بها عند مصادقة العملاء، يمكنك اختيار الحصول على هذه المجموعة من شهادات الجذر الموثوق بها من مرجع مصدق مثل Mozilla، أو تثبيت مجموعة شهادات الجذر التي تنصح بها حاليًا Google Internet Authority G2. في الحالة الأخيرة، قد تحتاج إلى تعديل الشهادة الجذر يدويًا في بعض الأحيان.
يمكنك استرداد نموذج التعليمات البرمجية من هذا المستودع:
git clone https://maps-booking.googlesource.com/java-maps-booking-grpc-server-skeleton
ضَع BookingService.java ضمن src/main/java/ext/maps/booking/partner/v2، وضَع Health.java ضمن src/main/java/grpc/health/v1. في كلا الملفَّين، اتّبِع المهام التي يجب إكمالها لإكمال عمليات التنفيذ.
عدِّل ملف gradle.build لتحديد إنشاء ملف تنفيذي للخادم من خلال إضافة الرمز البرمجي التالي:
task bookingService(type: CreateStartScripts) { mainClassName = 'ext.maps.booking.partner.v2.BookingService' applicationName = 'booking-service' outputDir = new File(project.buildDir, 'tmp') classpath = jar.outputs.files + project.configurations.runtime } applicationDistribution.into('bin') { from(bookingService) fileMode = 0755 }
ترجمة الخادم:
./gradlew installDist
تشغيل خادم الحجوزات:
./build/install/grpc-booking-service/bin/booking-service
بنية الدليل النهائية
src
|---main
|---certificates
|---server_cert_chain.pem
|---server_private_key.pem
|---trusted_client_roots.pem
|---java
|---ext.maps.booking.partner.v2.BookingService.java
|---grpc.health.v1.Health.java
|---proto
|---booking_service.proto
|---health.proto
|---test
مرجع آخر
للحصول على أدوات إنشاء أخرى، يُرجى الانتقال إلى gRPC-java وتنزيل المثال، اطّلِع على grpc-java/examples.
git clone -b v1.9.0 https://github.com/grpc/grpc-java