دليل شامل لـ gRPC C++ مع أمثلة عملية

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

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

ابدأ الدورة

gRPC C++: دليل شامل مع أمثلة عملية

مرحبًا بكم في PythonLib! في هذا المقال، سنشرح بالتفصيل مكتبة gRPC C++، الإطار القوي لبناء الأنظمة الموزعة عالية الأداء. إذا كنت تطور خدمات مصغرة، تطبيقات خادم-عميل، أو أنظمة زمن حقيقي، فإن gRPC سيكون أداتك التي لا غنى عنها. سنغطي التثبيت، الفئات والطرق الأساسية، كتابة أمثلة عملية، ونقدم نصائح لتحسين الأداء.

1. ما هو gRPC C++ ولماذا تحتاجه؟

gRPC (gRPC Remote Procedure Calls) هو إطار حديث وعالي الأداء لاستدعاء الإجراءات عن بُعد، طورته شركة Google. يستخدم HTTP/2 للنقل و Protocol Buffers (protobuf) لتسلسل البيانات. توفر مكتبة gRPC C++ واجهة برمجة تطبيقات أصلية للغة C++، مما يسمح بإنشاء خدمات فعالة وقابلة للتوسع.

لماذا تحتاجه؟ على عكس REST APIs التقليدية القائمة على JSON/HTTP/1.1، يقدم gRPC:
- أداء عالي: بروتوكول protobuf الثنائي أسرع وأصغر حجمًا من JSON.
- كتابة صارمة: يتم وصف عقود الخدمات في ملفات .proto، مما يمنع الأخطاء في وقت التشغيل.
- دعم البث: يمكن نقل البيانات في الوقت الفعلي (بث من الخادم، من العميل، أو ثنائي الاتجاه).
- توليد تلقائي للكود: يتم إنشاء فئات الخادم والعميل تلقائيًا من ملفات .proto.

gRPC C++ مثالي لـ: بنية الخدمات المصغرة، الخلفيات المحمولة، أنظمة إنترنت الأشياء، التطبيقات المالية، وأي مكان تكون فيه السرعة والموثوقية مهمة.

2. تثبيت gRPC C++

يتطلب تثبيت gRPC C++ البناء من المصدر أو استخدام مدير الحزم vcpkg. نوصي باستخدام vcpkg للسهولة.

الطريقة 1: التثبيت عبر vcpkg (موصى به)

# استنساخ vcpkg
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg

# تثبيت vcpkg (في Windows: bootstrap-vcpkg.bat)
./bootstrap-vcpkg.sh

# تثبيت gRPC (يشمل protobuf)
./vcpkg install grpc

# التكامل مع CMake
./vcpkg integrate install

الطريقة 2: البناء من المصدر (Linux/macOS)

# تثبيت التبعيات
sudo apt-get install build-essential autoconf libtool pkg-config cmake git

# استنساخ المستودع
git clone --recurse-submodules -b v1.62.0 https://github.com/grpc/grpc
cd grpc

# البناء
mkdir -p cmake/build
cd cmake/build
cmake ../.. -DgRPC_INSTALL=ON -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

هام: بعد التثبيت، تأكد من أن أداة protoc (مترجم protobuf) متاحة في PATH.

3. بداية سريعة: مثال بسيط

لننشئ خدمة بسيطة "Greeter" (تحية).

الخطوة 1: تعريف ملف .proto

أنشئ ملفًا باسم hello.proto:

syntax = "proto3";

package helloworld;

// تعريف الخدمة
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

// رسالة الطلب
message HelloRequest {
  string name = 1;
}

// رسالة الرد
message HelloReply {
  string message = 1;
}

الخطوة 2: توليد كود C++

protoc --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` hello.proto
protoc --cpp_out=. hello.proto

سيتم إنشاء الملفات: hello.pb.h، hello.pb.cc، hello.grpc.pb.h، hello.grpc.pb.cc.

الخطوة 3: كتابة الخادم (server.cpp)

#include <iostream>
#include <memory>
#include <string>

#include <grpcpp/grpcpp.h>
#include "hello.grpc.pb.h"

using grpc::Server;
using grpc::ServerB                    

توصيات