يمكنك تنزيل خادم gRPC الأساسي للمساعدة في البدء في تنفيذ خادم gRPC الكامل.
البدء
قم بإنشاء مشروع java grale (grpc-booking-service)، ضمن src/main، أنشئ دليل 'proto'.
عليك تنزيل تعريف خدمة الحجز وبروتوكول التحقّق من الصحة، ووضعهما ضمن src/main/proto. تحدد هذه الملفات طرق gRPC والرسائل الخاصة بواجهة برمجة تطبيقات مركز الإجراءات والتحقّق من الصحة.
حدِّث الملف build.gradle، وأضف التبعيات والمكوِّن الإضافي protobuf لـ Gradle. يمكنك العثور هنا على مقدمة ودليل ملف protobuf-gradele-Plugins.
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
قم بتشغيل الأمر التالي لإنشاء المكتبة وإنشاء التعليمات البرمجية تلقائيًا من المكوّن الإضافي إصدار proto:
./gradlew build
لتفعيل بروتوكول أمان طبقة النقل (TLS) على الخادم، ضمن src/main/certificates/، يجب إدراج الملفات التالية:
- server_cert_chain.pem سلسلة شهادات الخادم بتنسيق PEM
- يجب أن يكون server_private_key.pem مفتاحك الخاص لسلسلة شهادات الخادم هو المفتاح الخاص PKCS#8.
- trusted_client_roots.pem شهادات الجذر الموثوق بها عند مصادقة البرامج، يمكنك اختيار الحصول على هذه المجموعة من الجذور الموثوقة من مرجع مثل Mozilla، أو تثبيت مجموعة الجذور الموصى بها حاليًا من قِبل هيئة الإنترنت من Google 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. في كلا الملفين، اتّبِع قوائم المهام لإكمال عمليات التنفيذ.
حدِّث ملف grale.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