شهد عالم بروتوكولات واجهات برمجة التطبيقات (APIs) نموًا متواصلًا في الآونة الأخيرة، ومن بينها، يبرز بروتوكول JSON-RPC كخيار شائع. فقد أصبح أداة مفضلة لدى المطورين الذين يسعون إلى إنشاء مواقع ويب غنية بالميزات وعالية السرعة. ولكن ما هو JSON تحديدًا، وما الذي يميز بروتوكول RPC (استدعاء الإجراءات عن بُعد) عند دمجه مع بروتوكولات أخرى؟
JSON، اختصارًا لـ JavaScript Object Notation، يوفر طريقة منظمة لتمثيل البيانات، مما يسهل معالجتها. يستند JSON إلى لغة JavaScript، ويتضمن عناصر مثل السلاسل النصية، والمتغيرات المنطقية، والكائنات، وقيم null لتنظيم البيانات بكفاءة.
من أبرز مزايا JSON قدرته على تحليل البيانات المعقدة إلى هياكل يسهل التعامل معها، مما يجعله مناسبًا للمعالجة في لغات برمجة متنوعة، متجاوزًا بذلك حواجز اللغة. يلعب JSON، الذي قدمه دوغلاس كروكفورد عام 2000، دورًا محوريًا في تسهيل التواصل بين الخوادم وتطوير تطبيقات الويب.
فهم JSON-RPC
بروتوكول JSON-RPC، اختصارًا لـ JSON Remote Procedure Call، هو بروتوكول متعدد الاستخدامات يُسهّل تبادل البيانات بين العملاء والخوادم. يعتمد هذا البروتوكول على صيغة JSON (تدوين كائنات جافا سكريبت) المعروفة على نطاق واسع لترميز المعلومات، مما يضمن وضوحها لكل من البشر والحواسيب. المفهوم الأساسي لبروتوكول JSON-RPC بسيط: يرسل العميل طلبًا إلى الخادم، فيستجيب الخادم وفقًا لذلك.
في عالم العملات الرقمية، يلعب بروتوكول JSON-RPC دورًا محوريًا. فهو يمكّن تطبيقات المحافظ من التفاعل مع العُقد الكاملة، مما يتيح القيام بإجراءات مثل التحقق من الأرصدة وبدء المعاملات. على سبيل المثال، يمكن لتطبيق محفظة استخدام JSON-RPC للاستعلام عن رصيد عنوان معين أو بث معاملة عبر الشبكة.
يُعدّ بروتوكول JSON-RPC بروتوكولاً بسيطاً وفعّالاً، ويحظى بشعبية واسعة في مجال العملات الرقمية. فهو متوافق مع العملات الرقمية الرئيسية مثل Bitcoin Ethereum، ويُستخدم على نطاق واسع في تطبيقات وخدمات المحافظ الرقمية المختلفة.
تُنسق JSON-RPC بين JSON وبروتوكول عالمي معترف به لاستدعاء الإجراءات عن بُعد. وهي تتفوق في الحالات التي تتطلب تطويرًا سريعًا وبسيطًا. وبفضل خفتها وسرعة معالجتها، تُعد الخيار الأمثل للتفاعل مع عُقد Ethereum .
يُعدّ JSON-RPC بروتوكولاً مستقلاً عن نوع النقل، إذ يدعم كلاً من المقابس وبروتوكول HTTP للاتصال. ويبرز دوره في تطوير حلول قائمة على Ethereumتستفيد من تقنية سلسلة الكتل (البلوك تشين).
يوجد حاليًا إصداران من المواصفات: JSON-RPC 1.0 وJSON-RPC 2.0. وتشمل قيود JSON-RPC 1.0 غياب المعاملات المُسماة ورسائل الخطأ التفصيلية. وكانت تُشبه طريقة اتصال نظير إلى نظير.
عالج الإصدار المُحدَّث من JSON-RPC، وهو JSON-RPC 2.0، هذه النواقص، وقدّم بنية العميل والخادم. كما حقق استقلالية النقل، وأضاف معلمات مُسمّاة، وحسّن الحقول. لم تعد الإشعارات تتطلب مُعرّفًا؛ إذ يقتصر الرد على النتائج أو الأخطاء فقط. بالإضافة إلى ذلك، يُقدّم JSON-RPC 2.0 امتدادات ومعالجة مُحسّنة للأخطاء.
كيفية استخدام JSON-RPC: دليل عملي
بروتوكول JSON-RPC هو بروتوكول متعدد الاستخدامات يُسهّل التواصل بين العملاء والخوادم. إليك دليلًا تفصيليًا حول كيفية استخدام JSON-RPC بفعالية:
طلبات العميل إلى الخادم
1. في البداية، يقوم العملاء بإرسال الطلبات إلى خادم يدعم JSON-RPC. في هذا السياق، يشير العميل إلى برنامج مصمم لاستقبال طلبات لأساليب محددة من نظام بعيد.
٢. تتضمن هذه الطلبات عادةً معلمات مُهيكلة على شكل مصفوفات أو كائنات. ويعتمد تنسيق هذه المعلمات على إصدار JSON-RPC المُستخدم.
3. بناءً على إصدار JSON-RPC المستخدم، يقوم النظام البعيد بمعالجة الطلب وإرسال مخرجات البيانات المختلفة إلى المصدر الطالب.
العناصر الأساسية لطلب JSON-RPC
الطريقة: هذه هي السلسلة النصية التي تمثل الطريقة المراد استدعاؤها. من المهم ملاحظة أن هناك أسماء طرق محجوزة تبدأ بالبادئة 'rpc' مخصصة لاستدعاءات RPC الداخلية، ويجب عدم استخدامها بشكل عشوائي.
المعاملات: يمكن أن يكون العنصر الثاني في طلب JSON-RPC كائنًا أو مصفوفة تحتوي على قيم المعاملات المراد تمريرها. قد لا يتم استدعاء المعاملات في كل استدعاء.
المعرّف: هو رقم أو سلسلة نصية فريدة تُخصص للحفاظ على التطابق بين الطلبات والاستجابات. يُحذف المعرّف matic في حال عدم تلقي استجابة لطلب ما.
استجابة JSON-RPC
عند استلام طلب JSON-RPC، يقوم الخادم المُستقبِل بمعالجته وإرسال رد مُؤكَّد. يتكون هذا الرد من ثلاثة مكونات رئيسية:
النتيجة: يحتوي الجزء الأول من الاستجابة على البيانات التي تم إرجاعها بواسطة الدالة المستدعاة. يُطلق على هذا الجزء غالبًا اسم JSON-stat، وقد يكون غائبًا في حالة حدوث خطأ.
الخطأ: يدخل العنصر الثاني، وهو الخطأ، حيز التنفيذ في حال وجود مشكلة أثناء استدعاء الدالة. ويتضمن رمزًا ورسالة لوصف الخطأ.
معرّف الاستجابة: dent هذا المعرّف الطلب الذي تتوافق معه الاستجابة. في الحالات التي لا تتطلب استجابة، يستخدم JSON-RPC الإشعارات، وهي نوع من الطلبات بدون معرّف. في JSON-RPC 1.0، يكون معرّف الإشعار فارغًا، بينما في الإصدار 2.0، يُحذف تمامًا.
لماذا يختار المطورون JSON-RPC؟
على الرغم من محدودياته، لا يزال JSON-RPC خيارًا مفضلًا لدى المطورين، لا سيما في مجال تقنية البلوك تشين، حيث تُثبت قيوده فائدتها في السيناريوهات البسيطة. وهناك أسباب وجيهة تجعل المطورين يفضلون JSON-RPC على واجهات برمجة تطبيقات REST:
Defi قيود معالجة البيانات: يُعدّ JSON-RPC أداةً لتحديد قيود معالجة البيانات داخل الشبكة. وتُضفي هذه القدرة على defi القيود مزيدًا من الوضوح على إدارة البيانات.
تصميم خفيف الوزن لمعالجة سريعة: إن بنية JSON-RPC الخفيفة ومعالجتها السريعة تجعلها خيارًا فعالًا لبدء عمليات نقل البيانات عبر عقد Ethereum
مستقل عن وسيلة النقل: لا يرتبط بروتوكول JSON-RPC بنمط أو طريقة نقل محددة. فهو يدعم بسلاسة التفاعلات مع سلسلة الكتل عبر بروتوكول HTTP والمآخذ، مما يوفر مرونة في أساليب الاتصال.
مثالي Ethereum : يُعدّ JSON-RPC مناسبًا بشكل خاص لتطوير Ethereum تستفيد من تقنية البلوك تشين. تُضفي مرونته وتوافقه مع Ethereum عليه ميزةً تجعله الخيار الأمثل.
تطبيق JSON-RPC في تقنية البلوك تشين: دليل خطوة بخطوة
لنفترض أنك ترغب في دمج JSON-RPC في سلسلة الكتل (البلوكشين). في هذه الحالة، تتضمن العملية إعداد خادم JSON-RPC على عقدة سلسلة الكتل الخاصة بك، وجعل واجهة برمجة تطبيقات JSON-RPC متاحة للعملاء عبر موفر Web3. إليك شرح مفصل لكيفية تطبيق JSON-RPC في سلسلة الكتل:
إعداد خادم JSON-RPC
تتمثل الخطوة الأولى في تطبيق JSON-RPC في إنشاء خادم JSON-RPC على عقدة البلوك تشين الخاصة بك. تتضمن هذه العملية تهيئة عقدتك لاستقبال طلبات JSON-RPC الواردة، والتي يمكن إرسالها عبر HTTP أو WebSocket، وذلك حسب بروتوكول النقل الذي تختاره.
Defiطرق JSON-R PC
بعد إعداد الخادم، تتمثل المهمة التالية في defiطرق JSON-RPC التي ستدعمها عقدتك. يتضمن ذلك دمج الوظائف المطلوبة في كود عقدة البلوك تشين الخاصة بك وجعلها متاحة عبر واجهة برمجة تطبيقات JSON-RPC. على سبيل المثال، قد تشمل هذه الطرق ما يلي:
eth_sendTransaction: تسهيل إرسال المعاملات.
eth_getTransactionByHash: تمكين استرجاع المعاملات عبر التجزئة الفريدة الخاصة بها.
eth_getBlockByNumber: تسهيل استرجاع كتل محددة باستخدام أرقامها الخاصة.
يؤدي تكوين خادم JSON-RPC الخاص بك defiهذه الطرق إلى وضع الأساس للتواصل والتفاعل السلس مع عقدة Blockchain الخاصة بك، مما يمكّن المستخدمين من تنفيذ عمليات أساسية مختلفة على شبكة blockchain.
ربط العملاء بواجهة برمجة تطبيقات JSON-RPC عبر موفر Web3
لجعل واجهة برمجة تطبيقات JSON-RPC متاحة للعملاء، نستخدم موفر Web3، وهو مكتبة جافا سكريبت تربط تطبيق العميل بعقدة البلوك تشين. يعمل موفر Web3 هذا على تبسيط عملية إرسال واستقبال طلبات JSON-RPC بطريقة موحدة.
تُقدّم العديد من منصات Web3 خدماتها لمنصات البلوك تشين، بما في ذلك Web3.js لمنصة Ethereum، وWeb3.py للغة بايثون، وWeb3j للغة جافا. ويمكن استخدام هذه المنصات في بيئات تطبيقات متنوعة، بدءًا من تطبيقات جانب العميل مثل تطبيقات الويب أو تطبيقات الجوال، وصولًا إلى تطبيقات جانب الخادم مثل التطبيقات اللامركزية (dApps) أو مستكشفات البلوك تشين.
لإنشاء اتصال، يتطلب موفر خدمة Web3 عادةً المعلمات التالية:
عنوان URL لخادم JSON-RPC: هذه هي نقطة نهاية خادم JSON-RPC على عقدة Blockchain.
معرف الشبكة أو اسمها: يحدد dent الشبكة شبكة البلوك تشين المحددة التي يتم الوصول إليها.
حساب توقيع المعاملات (إن وجد): إذا كانت هناك معاملات، يتم تخصيص حساب لتوقيعها.
الحد الافتراضي للغاز وسعر الغاز (إن وجد): تحدد هذه المعلمات حدود تكلفة المعاملات.
بمجرد تهيئة موفر Web3 بهذه التفاصيل، يصبح بإمكان تطبيق العميل استخدام وظائفه. تُمكّن هذه الوظائف العميل من إرسال طلبات JSON-RPC إلى عقدة البلوك تشين واستلام الردود التي تحتوي على البيانات المطلوبة. يُسهّل هذا التفاعل السلس نطاقًا واسعًا من العمليات داخل شبكة البلوك تشين.
معالجة طلبات JSON-RPC في كود Node
بعد إعداد خادم JSON-RPC وتشغيله بنجاح، تتمثل الخطوة الحاسمة التالية في تهيئة كود Node لإدارة طلبات JSON-RPC الواردة بكفاءة. ويتضمن ذلك إنشاء آلية للاستماع إلى الطلبات الواردة وتنفيذ الطرق المرتبطة بها بفعالية.
تُرسل طلبات JSON-RPC عادةً عبر HTTP أو WebSocket، وتتضمن حقولاً أساسية متنوعة:
"id": dent فريد للطلب.
"jsonrpc": يشير إلى إصدار بروتوكول JSON-RPC المستخدم.
"method": يحدد الطريقة المراد تنفيذها.
"params": يتضمن أي معلمات ذات صلة يتم تمريرها إلى الطريقة.
يُعدّ التحقق الدقيق من الطلبات الواردة في كود Node أمرًا بالغ الأهمية. تضمن عملية التحقق هذه احتواء الطلب على اسم دالة صحيح ومعاملات صالحة (إن لزم الأمر)، وأن العميل مُصرّح له بإرسال الطلب.
بعد التحقق الناجح، يقوم رمز العقدة بتنفيذ الطريقة المناسبة بدقة. ثم يقوم بصياغة استجابة تتضمن المعلومات المطلوبة أو توضح نتيجة الإجراء المنفذ، والتي يتم إرسالها بعد ذلك إلى العميل.
إن هذه المعالجة الدقيقة لطلبات JSON-RPC داخل كود العقدة تسهل التفاعلات الفعالة والآمنة داخل النظام البيئي لسلسلة الكتل.
فهم استدعاءات الإجراءات عن بُعد (RPCs) في الحوسبة الموزعة
لفهم جوهر مثال JSON RPC، من الضروري التعمق في مفهوم استدعاءات الإجراءات عن بُعد (RPCs) في الحوسبة الموزعة وفهم كيفية عملها. تشير RPCs إلى منهجية برنامج حاسوبي لتنفيذ روتين فرعي أو إجراء موجود في مساحة عنوان مختلفة، غالبًا على جهاز حاسوب آخر داخل الشبكة.
يتعامل المبرمجون مع كتابة التعليمات البرمجية لاستدعاءات الإجراءات عن بُعد بنفس طريقة تعاملهم مع استدعاءات الإجراءات المحلية، مما يضمن مرونة تنفيذ الروتينات الفرعية بغض النظر عن مكان نشرها، سواءً محليًا أو عن بُعد. والجدير بالذكر أن المبرمج ليس بحاجة إلى تحديد ما إذا كان ينبغي تنفيذ استدعاءات الإجراءات عن بُعد محليًا أو عن بُعد بشكل صريح.
تُشكّل استدعاءات الإجراءات عن بُعد (RPCs) شكلاً من أشكال التواصل بين العمليات، وتُلقي الضوء على سؤال "كيف يعمل JSON-RPC؟" من خلال دراسة آليات عمل هذه الاستدعاءات. وتعتمد هذه الاستدعاءات على آليات توفرها أنظمة التشغيل لتسهيل الإدارةdent للبيانات المشتركة بين العمليات المختلفة.
تعمل كل عملية ضمن نطاق عناوينها الخاص، المصنف إلى نطاق عناوين افتراضي ونطاق عناوين فعلي. تمتلك العمليات الموجودة على نفس الجهاز أو في نفس النطاق الفعلي نطاقات عناوين افتراضية فريدة، حتى عندما تتطابق عناوينها الفعلية. في المقابل، تشغل العمليات الموجودة في مواقع مضيفة منفصلة نطاقات عناوين فعلية متميزة.
فهم كيفية عمل RPC (استدعاء الإجراء عن بُعد)
يتطلب فهم جوهر "ما هو تنسيق JSON-RPC؟" فهمًا أعمق لعملية الطلب والرد. وتجري هذه العملية ضمن عناوين مختلفة، تشغلها عمليات مصنفة على أنها "خوادم" و"عملاء"
لفهم كيفية عمل بروتوكول RPC، يجب فهم العلاقة بين العميل والخادم. في سيناريو RPC، يعمل العميل كمبادر لاستدعاء الإجراء عن بُعد.
يبدأ العميل هذه العملية بإرسال رسالة طلب إلى الخادم. وبدورها، تتولى الخوادم مهمة تنفيذ الإجراء باستخدام معلمات محددة وإرسال رد إلى العميل.
من المثير للاهتمام أن الإجابات على سؤال "كيف يعمل JSON-RPC؟" تتمحور حول نموذج العميل والخادم. يشكل هذا التفاعل المتبادل بين العملاء والخوادم أساس فهم آلية عمل بروتوكول JSON-RPC. دعونا نتعمق أكثر في تفاعل العميل والخادم الذي يقوم عليه JSON-RPC.
يمكن أن يتخذ هذا التفاعل شكلين: غير متزامن أو متزامن. وتُعدّ العمليات المتزامنة وغير المتزامنة أساسًا لتقنية JSON-RPC، حيث تجد تطبيقات في مجالات متنوعة، بما في ذلك JSON RPC Ethereum للمهام المتعلقةtracالذكية، وآلة Ethereum الافتراضية، ولغة Solidity.
في تفاعلات العميل والخادم، يتولى العملاء دور المُستدعي، بينما يعمل الخادم كمنفذ. تستخدم بروتوكولات RPC نموذج تفاعل العميل والخادم هذا، معتمدةً على نظام الطلب والاستجابة لتسهيل تبادل الرسائل.
فوائد استخدام JSON-RPC
يُعدّ JSON-RPC بروتوكولاً مبتكراً يوفر العديد من المزايا لمستخدميه، بما في ذلك:
بساطة
يُعدّ JSON-RPC بسيطًا للغاية مقارنةً بـ REST، فهو سهل الفهم لكلٍّ من البشر والآلات. لا يتضمن أوامر معقدة أو مجموعات بيانات مُربكة، مما يجعله خيارًا ممتازًا للمطورين، وخاصةً المبتدئين. يُساهم استخدامه لـ Unicode، وبنيته المختصرة، وقدرته على معالجة البيانات باستخدام عبارات مُسمّاة أو كلمات مفتاحية مُحددة، في بساطته.
تطوير أسرع
يُبسّط JSON-RPC عملية التطوير، إذ يُقدّم موارده بطريقة سهلة وبسيطة، مما يُقلّل الوقت والجهد اللازمين لتطوير التطبيقات. تُساهم دورة التطوير السريعة هذه في تقليص مدة طرح المشاريع في السوق بشكل ملحوظ، مما يجعلها خيارًا مثاليًا لتلبية احتياجات التطوير العاجلة.
تبادل المعلومات بكفاءة
يضمن بروتوكول JSON-RPC تبادل المعلومات بكفاءة وفي الوقت المناسب. فهو يدعم الإشعارات والمكالمات المتعددة دون انتظار ردود من الخادم أو العميل. عند إرسال طلب رسالة، يقوم JSON-RPC بتسليمها إلى وجهتها بشكل موثوق، مما يسهل التواصل الفعال بين مكونات البرنامج.
أداء محسّن لواجهة برمجة التطبيقات
تتيح تقنية JSON-RPC إنشاء واجهات برمجة تطبيقاتdent عن البروتوكول الأساسي. ويمكن لهذه الاستقلالية تحسين أداء واجهة برمجة التطبيقات، لا سيما عند استبدال بروتوكول HTTP ببروتوكولات أكثر كفاءة مثل TCP، مما يقلل من الحمل الزائد.
مسح نتائج الطلب
توفر تقنية JSON-RPC نتائج طلبات واضحة وسهلة الفهم والمعالجة. وتُبسط مهامًا مثل إرسال الطلبات المجمعة، وشرح محتويات HTTP، وتمرير المعلمات باستخدام هذه التقنية.
دعم البث العريض
يُعدّ JSON-RPC بروتوكولًا مُلائمًا لنقل البيانات، إذ يدعم منصات مثل XMPP وWebSockets وSFTP وSSH وSCP. تُسهم هذه المرونة في تطوير واجهات برمجة تطبيقات (APIs) سريعة وسهلة الاستخدام وقابلة للتصحيح بسهولة. إضافةً إلى ذلك، يفصل JSON-RPC المحتوى المطلوب عن عملية الإرسال، ما يضمن نقل أخطاء الطلب والبيانات والتحذيرات عبر حمولة الطلب.
خاتمة
يُعدّ بروتوكول JSON-RPC، أو استدعاء الإجراءات عن بُعد باستخدام JSON، بروتوكولًا متعدد الاستخدامات لتبادل البيانات بين العملاء والخوادم. وهو يستفيد من بساطة ووضوح JSON (تدوين كائنات جافا سكريبت) لتسهيل التواصل الفعال في تطبيقات متنوعة، بما في ذلك تقنية البلوك تشين وتطوير مواقع الويب وغيرها.
يوفر JSON-RPC العديد من المزايا: البساطة، وسرعة التطوير، وكفاءة تبادل المعلومات، وتحسين أداء واجهة برمجة التطبيقات (API)، ودقة نتائج الطلبات، ودعم واسع النطاق لعمليات الإرسال. وقد أصبح خيارًا مفضلًا للمطورين نظرًا لسهولة استخدامه وتوافقه مع مختلف لغات البرمجة والمنصات.

