XML-RPC
XML-RPC هو بروتوكول استدعاء الإجراءات عن بعد (RPC) يستخدم XML لترميز استدعاءاته و HTTP كآلية نقل. [ 1 ]
تاريخ
تم إنشاء بروتوكول XML-RPC في عام 1998 بواسطة ديف وينر من شركة UserLand Software ومايكروسوفت ، [ 2 ] حيث رأت مايكروسوفت في البروتوكول جزءًا أساسيًا من توسيع نطاق جهودها في التجارة الإلكترونية بين الشركات. [ 3 ] ومع إدخال وظائف جديدة، تطور المعيار إلى ما يُعرف الآن باسم SOAP . [ 4 ]
دعمت شركة UserLand بروتوكول XML-RPC بدءًا من الإصدار 5.1 من نظام إدارة محتوى الويب Frontier الخاص بها، [ 4 ] الذي تم إصداره في يونيو 1998. [ 5 ]
تم تطبيق فكرة XML-RPC، التي تقوم على معيار قابل للقراءة والكتابة والتحليل بواسطة البرامج النصية لطلبات واستجابات HTTP، في مواصفات منافسة مثل WDDX ( تبادل البيانات الموزعة عبر الويب ) من Allaire وWIDL ( لغة تعريف واجهة الويب ) من webMethod. [ 6 ] كما وُجدت تقنيات سابقة لتغليف كائنات COM و CORBA و Java RMI في بنية XML ونقلها عبر HTTP، وذلك في تقنية WebBroker من DataChannel. [ 7 ] [ 8 ]
حصل فيليب ميريك وستيوارت ألين وجوزيف لاب على براءة اختراع للاستخدام العام للغة XML في استدعاء الإجراءات عن بُعد (RPC) في أبريل 2006، مستندين إلى طلب مؤقت قُدِّم في مارس 1998. وتم التنازل عن براءة الاختراع لشركة webMethods ، ومقرها فيرفاكس، فيرجينيا . وانتهت صلاحية براءة الاختراع في 23 مارس 2019. [ 9 ]
الاستخدام
في بروتوكول XML-RPC، يُجري العميل استدعاءً عن بُعد (RPC) عن طريق إرسال طلب HTTP إلى خادم يُطبّق بروتوكول XML-RPC، ويتلقى استجابة HTTP. يمكن أن يحتوي الاستدعاء على عدة مُعاملات ونتيجة واحدة. يُحدد البروتوكول أنواع بيانات مُعينة للمُعاملات والنتيجة. بعض هذه الأنواع مُعقدة، أي مُتداخلة. على سبيل المثال، يُمكن أن يكون لديك مُعامل عبارة عن مصفوفة من خمسة أعداد صحيحة.
تهدف بنية المعلمات/النتائج ومجموعة أنواع البيانات إلى محاكاة تلك المستخدمة في لغات البرمجة الشائعة.
يمكن تحديد هوية العملاء لأغراض التخويل باستخدام أساليب أمان HTTP الشائعة. ويمكن استخدام مصادقة الوصول الأساسية لتحديد الهوية والتحقق من الهوية.
بالمقارنة مع بروتوكولات RESTful، حيث يتم نقل تمثيلات الموارد (المستندات)، صُمم XML-RPC لاستدعاء الدوال . ويكمن الفرق العملي في أن XML-RPC أكثر تنظيمًا، مما يسمح باستخدام مكتبات برمجية مشتركة لتنفيذ العملاء والخوادم، ويقلل من أعمال التصميم والتوثيق اللازمة لبروتوكول تطبيق محدد. ومن أبرز الفروق التقنية بين بروتوكولات RESTful التقليدية وXML-RPC أن العديد من بروتوكولات RESTful تستخدم معرّف الموارد الموحد (URI) لبروتوكول HTTP لمعلومات المعلمات، بينما في XML-RPC، يُستخدم معرّف الموارد الموحد (URI) لتحديد الخادم فقط.
JSON-RPC مشابه لـ XML-RPC.
أنواع البيانات
يتم تحويل أنواع البيانات الشائعة إلى ما يعادلها في لغة XML مع عرض القيم النموذجية أدناه:
| اسم | مثال على الوسم | وصف | |
|---|---|---|---|
| مصفوفة | <array> <data> <value><i4> 1404 </i4></value> <value><string> شيء ما هنا </string></value> <value><i4> 1 </i4></value> </data> </array> | مصفوفة من القيم، لا تخزن أي مفاتيح | |
| base64 | <base64> eW91IGNhbid0IHJlYWQgdGhpcyE= </base64> | البيانات الثنائية المشفرة بنظام Base64 | |
| منطقي | <boolean> 1 </boolean> | قيمة منطقية (0 أو 1) | |
| التاريخ/الوقت | <dateTime.iso8601> 19980717T14:08:55Z </dateTime.iso8601> | التاريخ والوقت بتنسيق ISO 8601 | |
| مزدوج | -12.53 | عدد عشري مزدوج الدقة | |
| عدد صحيح | <int> 42 </int>أو 42 | عدد صحيح مُوَقَّع مُشفَّر على 4 بايتات | |
| خيط | <string> مرحباً بالعالم! </string>أو مرحبا بالعالم! | سلسلة من الأحرف. يجب أن تتبع ترميز XML . | |
| هيكل | <struct> <member> <name> foo </name> <value><i4> 1 </i4></value> </member> <member> <name> bar </name> <value><i4> 2 </i4></value> </member> </struct> | المصفوفة الترابطية | |
| لا شيء | <nil/> | قيمة فارغة مميزة ؛ امتداد XML-RPC | |
| طويل | <i8> 1312 </i8> | عدد صحيح مُوقّع مُشفّر على 8 بايتات. هذا ليس جزءًا من المواصفات، ولكنه مدعوم من قِبل العديد من تطبيقات XML-RPC [ 10 ] · [ 11 ] |
أمثلة
مثال على طلب XML-RPC نموذجي هو:
<?xml version="1.0"?> <methodCall> <methodName> examples.getStateName </methodName> <params> <param> <value><i4> 40 </i4></value> </param> </params> </methodCall>مثال على استجابة نموذجية لـ XML-RPC هو:
<?xml version="1.0"?> <methodResponse> <params> <param> <value><string> ساوث داكوتا </string></value> </param> </params> </methodResponse>من الأمثلة الشائعة على أخطاء XML-RPC ما يلي:
<?xml version="1.0"?> <methodResponse> <fault> <value> <struct> <member> <name> faultCode </name> <value><int> 4 </int></value> </member> <member> <name> faultString </name> <value><string> عدد كبير جدًا من المعاملات. </string></value> </member> </struct> </value> </fault> </methodResponse>نقد
يرى بعض النقاد المعاصرين (منذ عام ٢٠١٠ فصاعدًا) لبروتوكول XML-RPC أن استدعاءات RPC يمكن إجراؤها باستخدام XML العادي، وأن XML-RPC لا يُضيف أي قيمة تُذكر مقارنةً بـ XML. يتطلب كل من XML-RPC وXML نموذج بيانات على مستوى التطبيق، مثل تحديد أسماء الحقول في مخطط XML أو أسماء المعاملات في XML-RPC. علاوة على ذلك، يستخدم XML-RPC ما يقارب أربعة أضعاف عدد البايتات التي يستخدمها XML العادي لترميز نفس الكائنات، وهو ما يُعدّ مُطوّلاً مقارنةً بـ JSON . [ ١٢ ] [ ١٣ ] [ ١٤ ]
انظر أيضاً
مراجع
- ↑ سيمون سانت لوران، جو جونستون، إد دمبيل. (يونيو 2001) برمجة خدمات الويب باستخدام XML-RPC. أورايلي. الطبعة الأولى.
- ↑ بوكس، دون (1 أبريل 2001). "تاريخ موجز للصابون" . أورايلي . تم الاسترجاع في 27 أكتوبر 2010 .
- ↑ روبلي، سيباستيان (30 يونيو 1999). "الخطوة التالية لـ XML" . مجلة PC . مؤرشف من الأصل في 4 مارس 2000. تم الاطلاع عليه في 17 نوفمبر 2015 .
- 1 2 والش، جيف (10 يوليو 1999). "مايكروسوفت تقود حملة الترويج للبروتوكول" . إنفوورلد . مؤرشف من الأصل في 14 سبتمبر 1999. تم الاطلاع عليه في 17 نوفمبر 2015 .
- ↑ والش، جيف (29 يونيو 1998). "يوزرلاند تُصدر فرونتير 5.1، وتتخلى عن نموذج البرمجيات المجانية" . إنفوورلد . مؤرشف من الأصل في 15 سبتمبر 1999. تم الاطلاع عليه في 17 نوفمبر 2015 .
- ↑ أوديل، جون (7 يونيو 1999). "استكشاف XML-RPC: DCOM؟ CORBA؟ RMI؟ لماذا لا نستخدم XML-RPC فقط؟" . بايت . مؤرشف من الأصل في 4 مارس 2000. تم الاطلاع عليه في 17 نوفمبر 2015 .
- ↑ والش، جيف (25 مايو 1998). "اتحاد شبكة الويب العالمية يُشيد بـ WebBroker من DataChannel" . إنفوورلد . المجلد 20، العدد 21. مؤرشف من الأصل في 10 سبتمبر 1999. تم الاطلاع عليه في 17 نوفمبر 2015 .
- ↑ فيزارد، مايكل؛ والش، جيف (29 يونيو 1998). "ديف بول من داتا تشانل يتحدث عن صياغة دور لغة XML لتناسب الاحتياجات المختلفة" . إنفوورلد . مؤرشف من الأصل في 16 سبتمبر 1999. تم الاطلاع عليه في 8 ديسمبر 2015 .
- ↑ ميريك وآخرون (11 أبريل 2006). "براءة الاختراع الأمريكية رقم 7,028,312" . مؤرشفة من الأصل في 3 ديسمبر 2011. تم الاطلاع عليها في 18 سبتمبر 2008 .
- ↑ "RPC::XML - مجموعة من الفئات لمعالجة البيانات الأساسية والرسائل وملفات XML - metacpan.org" . MetaCPAN . تم الاطلاع عليه بتاريخ 13 أبريل 2025 .
- ↑ "دليل المستخدم لـ XML-RPC للغة C/C++" . تم الاطلاع عليه بتاريخ 13 أبريل 2025 .
- ↑ "ما هي ميزة XML-RPC مقارنةً بـ XML العادي؟" . Stack Overflow . 9 سبتمبر 2009. تم الاطلاع عليه في 7 أبريل 2011 .
- ↑ "استطلاع رأي مفتوح حول مزايا XmlRpc مقابل البدائل" . intertwingly.net. 22 نوفمبر 2006. تم الاطلاع عليه في 7 أبريل 2011 .
- ↑ جون كانادي (14 يناير 2010). "إذا كنت تستخدم REST، فلماذا XML-RPC؟" . joncanady.com. مؤرشف من الأصل في 11 مايو 2013. تم الاطلاع عليه في 7 أبريل 2011 .
روابط خارجية
- المعايير القائمة على لغة XML
- خدمات الويب
- بروتوكولات الإنترنت
- إجراء مكالمة عن بعد
