كيف يمكن لتدفق gRPC أن يجعل واجهات برمجة التطبيقات الخاصة بك أسرع وأكثر موثوقية

تعلم ما هو بث gRPC، كيف يعمل، ولماذا هو مفيد لواجهات برمجة التطبيقات الخاصة بك. أيضًا، تعلم كيفية استخدام apidog لاختبار وتصحيح خدمات بث gRPC الخاصة بك.

Amir Hassan

Amir Hassan

31 مايو 2025

كيف يمكن لتدفق gRPC أن يجعل واجهات برمجة التطبيقات الخاصة بك أسرع وأكثر موثوقية

إذا كنت تبحث عن طريقة لتحسين أداء وموثوقية واجهات برمجة التطبيقات الخاصة بك، فقد ترغب في التفكير في استخدام دفق gRPC. gRPC هو إطار عمل حديث ومفتوح المصدر يسمح لك بإنشاء خدمات فعالة وقابلة للتوسع باستخدام بروتوكولات البند والتجارة HTTP/2. البث هو واحدة من الميزات الرئيسية في gRPC التي تمكّنك من إرسال واستقبال عدة رسائل في اتصال واحد، دون انتظار كل استجابة.

في هذه المقالة، سأشرح ما هو دفق gRPC، كيف يعمل، ولماذا هو مفيد لواجهات برمجة التطبيقات الخاصة بك. سأوضح لك أيضًا كيفية استخدام أداة تُدعى apidog لاختبار وتصحيح خدمات دفق gRPC الخاصة بك. بنهاية هذه المقالة، سيكون لديك فهم أفضل لدفق gRPC وكيفية استخدامه في مشاريعك.

زر

ما هو دفق gRPC؟

دفق gRPC هو وسيلة لإرسال واستقبال عدة رسائل في اتصال واحد، باستخدام HTTP/2 كبرتوكول النقل الأساسي. HTTP/2 هو إصدار أحدث من HTTP يدعم التعدد، مما يعني أن عدة طلبات واستجابات يمكن أن تُرسل عبر نفس اتصال TCP، دون حظر بعضها البعض. هذا يقلل من الفائض الناتج عن فتح وإغلاق الاتصالات، ويحسن زمن الاستجابة ومعدل نقل البيانات في واجهات برمجة التطبيقات الخاصة بك.

يسمح لك دفق gRPC باستخدام أربعة أنواع من أنماط الاتصال:

كيف يعمل دفق gRPC؟

يعمل دفق gRPC عن طريق استخدام بروتوكولات البند وHTTP/2 لترميز ونقل الرسائل. بروتوكولات البند هي تنسيق تسلسل ثنائي يسمح لك بتعريف بنية وأنواع رسائلك في ملف مخطط. بروتوكولات البند مضغوطة وسريعة وسهلة الاستخدام، وتدعم التوافق عبر اللغات والمنصات المختلفة.

HTTP/2 هو بروتوكول ثنائي يدعم التعدد، والضغط، والتشفير. يسمح لكHTTP/2 بإرسال عدة رسائل عبر نفس الاتصال، باستخدام إطارات كوحدة أساسية للتواصل. يحتوي كل إطار على رأس يشير إلى النوع والطول ومعرف الدفق للإطار. معرف الدفق هو معرف فريد يربط إطارًا مع طلب أو استجابة معينة. كما يدعم HTTP/2 التحكم في التدفق ومعالجة الأخطاء، مما يساعد على ضمان موثوقية وكفاءة واجهات برمجة التطبيقات الخاصة بك.

لاستخدام دفق gRPC، تحتاج إلى تعريف خدمتك ورسائلك في ملف بروتوكولات البند، باستخدام بناء جملة gRPC. على سبيل المثال، إليك خدمة بسيطة تدعم مكالمات أحادية ودفق الخادم:

syntax = "proto3";

package example;

// خدمة تُرجع الوقت الحالي
service TimeService {
  // مكالمة أحادية: تُرجع الوقت الحالي
  rpc GetTime (GetTimeRequest) returns (GetTimeResponse) {}

  // مكالمة دفق الخادم: تُرجع الوقت الحالي كل ثانية
  rpc StreamTime (StreamTimeRequest) returns (stream StreamTimeResponse) {}
}

// رسالة تمثل طلب الحصول على الوقت الحالي
message GetTimeRequest {
  // المنطقة الزمنية للوقت المطلوب
  string timezone = 1;
}

// رسالة تمثل استجابة تحتوي على الوقت الحالي
message GetTimeResponse {
  // الوقت الحالي بتنسيق ISO 8601
  string time = 1;
}

// رسالة تمثل طلب دفق الوقت الحالي
message StreamTimeRequest {
  // المنطقة الزمنية للوقت المطلوب
  string timezone = 1;
}

// رسالة تمثل استجابة تحتوي على الوقت الحالي
message StreamTimeResponse {
  // الوقت الحالي بتنسيق ISO 8601
  string time = 1;
}

لتنفيذ خدمتك، تحتاج إلى استخدام مكتبة gRPC للغة البرمجة التي تختارها. يدعم gRPC العديد من اللغات، مثل C# وC++ وGo وJava وNode.js وPython وRuby والمزيد. كل لغة لديها واجهتها الخاصة وتقنيات لإنشاء واستهلاك خدمات gRPC. على سبيل المثال، إليك تنفيذ بسيط لـ TimeService في Python:

import grpc
import time
from concurrent import futures
from example_pb2 import GetTimeRequest, GetTimeResponse, StreamTimeRequest, StreamTimeResponse
from example_pb2_grpc import TimeServiceServicer, add_TimeServiceServicer_to_server

# فئة تنفذ TimeService
class TimeService(TimeServiceServicer):
  # مكالمة أحادية: تُرجع الوقت الحالي
  def GetTime(self, request, context):
    # احصل على المنطقة الزمنية من الطلب
    timezone = request.timezone
    # احصل على الوقت الحالي في المنطقة الزمنية المطلوبة
    time = get_current_time(timezone)
    # أنشئ وأعد استجابة مع الوقت الحالي
    response = GetTimeResponse(time=time)
    return response

  # مكالمة دفق الخادم: تُرجع الوقت الحالي كل ثانية
  def StreamTime(self, request, context):
    # احصل على المنطقة الزمنية من الطلب
    timezone = request.timezone
    # جولة لا نهائية
    while True:
      # احصل على الوقت الحالي في المنطقة الزمنية المطلوبة
      time = get_current_time(timezone)
      # أنشئ وعُد استجابة مع الوقت الحالي
      response = StreamTimeResponse(time=time)
      yield response
      # انتظر ثانية واحدة
      time.sleep(1)

# دالة تُرجع الوقت الحالي في منطقة زمنية معينة
def get_current_time(timezone):
  # TODO: نفذ هذه الدالة
  pass

# أنشئ خادم gRPC
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
# أضف TimeService إلى الخادم
add_TimeServiceServicer_to_server(TimeService(), server)
# ابدأ الخادم على المنفذ 50051
server.add_insecure_port('[::]:50051')
server.start()
# انتظر الانتهاء
server.wait_for_termination()

لاستهلاك خدمتك، تحتاج إلى استخدام عميل gRPC للغة البرمجة التي تختارها. تستخدم عملاء gRPC "ستوب" للتواصل مع خوادم gRPC. يتم إنشاء "ستوب" من ملف بروتوكولات البند، وتقدم طرقًا تتوافق مع طرق الخدمة. على سبيل المثال، إليك عميل بسيط يستدعي TimeService في Python:

import grpc
from example_pb2 import GetTimeRequest, StreamTimeRequest
from example_pb2_grpc import TimeServiceStub

# أنشئ قناة gRPC للخادم
channel = grpc.insecure_channel('localhost:50051')
# أنشئ "ستوب" لـ TimeService
stub = TimeServiceStub(channel)

# مكالمة أحادية: احصل على الوقت الحالي بتوقيت UTC
request = GetTimeRequest(timezone='UTC')
response = stub.GetTime(request)
print(f' الوقت الحالي بتوقيت UTC هو {response.time} ')

# مكالمة دفق الخادم: دفق الوقت الحالي بتوقيت PST
request = StreamTimeRequest(timezone='PST')
responses = stub.StreamTime(request)
for response in responses:
  print(f' الوقت الحالي بتوقيت PST هو {response.time} ')

لماذا تستخدم دفق gRPC؟

يوفر دفق gRPC العديد من الفوائد لواجهات برمجة التطبيقات الخاصة بك، مثل:

كيف تختبر وتصحيح خدمات دفق gRPC؟

يمكن أن يكون اختبار وتصحيح خدمات دفق gRPC تحديًا، خاصة إذا كنت تستخدم لغات ومنصات مختلفة. لحسن الحظ، هناك أداة يمكن أن تساعدك في ذلك: Apidog.

زر

Apidog هي أداة قائمة على الويب تتيح لك اختبار وتصحيح خدمات دفق gRPC الخاصة بك، باستخدام واجهة بسيطة وبديهية. يدعم apidog العديد من اللغات، مثل C# وC++ وGo وJava وNode.js وPython وRuby والمزيد. كما يدعم Apidog أنماط الاتصال المختلفة، مثل الأحادي ودفق الخادم ودفق العميل ودفق ثنائي الاتجاه.

مع apidog، يمكنك:

دفق الخادم

Apidog هي أداة قوية وسهلة الاستخدام يمكن أن تساعدك في اختبار وتصحيح خدمات دفق gRPC الخاصة بك، والتأكد من أنها تعمل حسب المتوقع.

الخاتمة

يعد دفق gRPC ميزة يمكن أن تجعل واجهات برمجة التطبيقات الخاصة بك أسرع وأكثر موثوقية، من خلال السماح لك بإرسال واستقبال عدة رسائل في اتصال واحد، باستخدام HTTP/2 وبروتوكولات البند. كما يقدم لك دفق gRPC المرونة والبساطة، من خلال السماح لك باستخدام أنماط اتصال ولغات مختلفة، ومن خلال تزويدك بواجهة برمجة تطبيقات متسقة وبديهية. يعد دفق gRPC اختيارًا رائعًا لواجهات برمجة تطبيقاتك، خاصة إذا كنت بحاجة إلى التعامل مع كميات كبيرة من البيانات، أو تحديثات في الوقت الحقيقي، أو تفاعلات معقدة.

إذا كنت ترغب في معرفة المزيد عن دفق gRPC، يمكنك مراجعة الوثائق الرسمية على https://grpc.io/docs. إذا كنت ترغب في اختبار وتصحيح خدمات دفق gRPC الخاصة بك، يمكنك استخدام Apidog، وهي أداة قائمة على الويب تتيح لك الاتصال، وإرسال، واستقبال، ومراقبة، وتصحيح خدمات دفق gRPC الخاصة بك، باستخدام واجهة بسيطة وبديهية. يمكنك تجربة apidog مجانًا.

زر

Explore more

كيفية الوصول إلى واجهة برمجة تطبيقات كلود 3.7 سونيت واختبارها باستخدام أبادوغ

كيفية الوصول إلى واجهة برمجة تطبيقات كلود 3.7 سونيت واختبارها باستخدام أبادوغ

إذا كنت متحمسًا لإصدار Anthropic الأخير، Claude 3.7 Sonnet، وترغب في استكشاف قدراته من خلال واجهة برمجة التطبيقات (API) أثناء اختباره باستخدام Apidog، فأنت في المكان الصحيح. 💡قبل أن نبدأ، دعني أعطيك لمحة سريعة: قم بتنزيل Apidog مجانًا اليوم لتسهيل عملية اختبار واجهة برمجة التطبيقات الخاصة بك، خاصة لاستكشاف ميزات Claude 3.7 Sonnet القوية - مثالي للمطورين الذين يرغبون في اختبار نماذج الذكاء الاصطناعي المتطورة مثل هذا!زر لنبدأ بشرح لماذا يعد Claude 3.7 Sonnet مهمًا. كشفت Anthropic مؤخرًا عن هذا

25 فبراير 2025

كيفية بناء واختبار واجهة برمجة تطبيقات Spring Boot باستخدام Apidog

كيفية بناء واختبار واجهة برمجة تطبيقات Spring Boot باستخدام Apidog

تعلم كيفية إنشاء واجهة برمجة تطبيقات RESTful بسيطة باستخدام Spring Boot واختبارها بأداة تسمى APIdog. Spring Boot هو إطار عمل يسهل تطوير الويب باستخدام Java. Apidog هي أداة تساعدك في اختبار وتصحيح واجهات برمجة التطبيقات الخاصة بك.

29 فبراير 2024

[دليل] تحويل واجهات برمجة التطبيقات SOAP إلى واجهات برمجة التطبيقات REST

[دليل] تحويل واجهات برمجة التطبيقات SOAP إلى واجهات برمجة التطبيقات REST

تحويل واجهات برمجة التطبيقات SOAP إلى REST أصبح أكثر وضوحًا. تقدم واجهات REST مرونة وقابلية للتوسع وبساطة في تعزيز الاتصال بين نظامين أو برنامجين. في هذه المقالة، اكتشف ما تحتاجه لتحويل واجهات SOAP إلى REST!

29 فبراير 2024

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات