json - and - restful web services شرح



JSON و REST و SOAP و WSDL و SOA: كيف يربطون جميعًا معًا (2)

تخيل أنك تقوم بتطوير تطبيق على شبكة الإنترنت وقررت فصل الوظائف عن طريقة تقديم الطلب ، لأنها توفر قدرًا أكبر من الحرية.

يمكنك إنشاء واجهة برمجة تطبيقات والسماح للآخرين بتنفيذ واجهاتها الأمامية الخاصة بها أيضًا. ما قمت به للتو هو تنفيذ منهجية SOA ، أي باستخدام خدمات الويب.

تتيح خدمات الويب إمكانية الوصول إلى مجموعات البناء الوظيفية عبر بروتوكولات الإنترنت القياسية المستقلة عن الأنظمة الأساسية ولغات البرمجة.

لذا ، تقوم بتصميم آلية تبادل بين النهاية الخلفية (خدمة ويب) تقوم بمعالجة وتوليد شيء مفيد ، والواجهة الأمامية (التي تستهلك البيانات) ، والتي يمكن أن تكون أي شيء. (تطبيق على الويب أو الجوال أو سطح المكتب أو أي خدمة ويب أخرى). القيد الوحيد هنا هو أن الواجهة الأمامية والخلفية يجب أن "تتحدث" نفس "اللغة".

وهنا يأتي دور SOAP و REST. وهما من الطرق القياسية التي يمكنك من خلالها التواصل مع خدمة الويب.

صابون:

يستخدم SOAP داخليًا XML لإرسال البيانات ذهابًا وإيابًا. تحتوي رسائل SOAP على بنية جامدة ويجب أن يتم تحليل XML بعد ذلك. WSDL عبارة عن مواصفات لما يمكن إجراؤه من طلبات وما هي المعلمات وما ستعود إليه. بل هو مواصفات كاملة من API الخاص بك.

راحة:

REST هو مفهوم التصميم.

تمثل شبكة الويب العالمية أكبر تنفيذ لنظام يتطابق مع النمط المعماري REST.

انها ليست جامدة مثل SOAP. تستخدم خدمات الويب RESTful عناوين URI القياسية والطرق لإجراء مكالمات إلى خدمة الويب. عندما تطلب عنوان URI ، فإنه يعيد تمثيل كائن ، بحيث يمكنك إجراء العمليات عليه (مثل GET و PUT و POST و DELETE). أنت لا تقتصر على اختيار XML لتمثيل البيانات ، يمكنك اختيار أي شيء حقا (شمل JSON)

تذهب واجهة برمجة تطبيقات Rlick من Flickr إلى أبعد من ذلك وتتيح لك إمكانية إرجاع الصور أيضًا.

JSON و XML ، مكافئتان وظيفيا ، ويمكن إما اختيارهما. يُنظر إلى XML على أنه مطوّل للغاية ، وأصعب تحليله ، لذا يتم تمثيل البيانات بشكل أكثر ملاءمة باستخدام JSON. (على سبيل المثال التسلسل)

إنه اختيار مع ذلك.

في الوقت الحالي ، أقوم ببعض الامتحانات وأنا أعاني من بعض المفاهيم. لقد تم "ذكر" كل ذلك في ملاحظاتي في الحقيقة ، لكنني لم أفهم حقاً كيفية ارتباطهم ببعضهم البعض. بقدر ما أفهمه هو:

الخدمية - حل لجعل المستهلكين / مقدمي الخدمات التواصل. (بقدر ما أفهم هذا هو مصطلح شامل لكل شيء آخر)

WSDL - لغة تصف خدمة الموفر.

SOAP - بروتوكول XML "المجمع" الذي تستخدمه الخدمات لإرسال الرسائل. يعمل جنبا إلى جنب مع WSDL لتوفير المعلمات؟

REST - نمط تصميم مشابه لـ SOAP في الوظيفة ولكنه يتجنب XML؟ (حقا لست متأكدا من هذا واحد)

JSON - بديل XML الذي يستخدم javascript؟ (غير متأكد من هذا واحد سواء)

بالنظر إلى الإنترنت لا يبدو أن هناك تعريفا واضحا لماهية كل هذه الأشياء وكيفية ارتباطها.


Answer #1

WSDL : لتقف على لغة وصف خدمة الويب

في SOAP (بروتوكول الوصول إلى كائن بسيط) ، عند استخدام خدمة ويب وإضافة خدمة ويب إلى مشروعك ، لا يعرف تطبيق (تطبيقات) العميل الخاص بك عن وظائف خدمة الويب. في الوقت الحاضر انها بطريقة قديمة بطريقة قديمة ولكل نوع من مختلف العملاء لديك لتنفيذ مختلف ملفات WSDL . على سبيل المثال ، لا يمكنك استخدام نفس الملف لعميل .Net و php . يحتوي ملف WSDL على بعض الأوصاف حول وظائف خدمة الويب. نوع هذا الملف هو XML . SOAP هو بديل ل REST .

REST : يقف لنقل الحالة التمثيلي

إنه نوع آخر من خدمات واجهة برمجة التطبيقات ، إنه حقًا سهل الاستخدام للعملاء. لا تحتاج إلى امتدادات خاصة للملفات مثل ملفات WSDL . يمكن تنفيذ عملية CRUD بواسطة HTTP Verbs مختلفة (GET للقراءة ، POST for Creation ، PUT أو PATCH للتحديث وحذف لحذف المستند المطلوب) ، وهي تستند إلى بروتوكول HTML وأحيانًا تكون الاستجابة في JSON أو XML شكل. من ناحية أخرى ، يجب أن يقوم تطبيق العميل باستدعاء HTTP Verb ذي الصلة عن طريق أسماء وأنواع المعلمات بدقة. نظرًا لعدم وجود ملف خاص لتعريفه ، مثل WSDL ، فهي مهمة يدوية باستخدام نقطة النهاية. ولكنها ليست مشكلة كبيرة لأن لدينا الآن الكثير من المكونات الإضافية لمختلف IDEs لتوليد تنفيذ العميل.

الخدمية : لتقف على الهندسة المعمارية الموجهة نحو الخدمة

يشمل جميع البرمجة مع مفاهيم خدمات الويب والهندسة المعمارية. تخيل أنك تريد تطبيق تطبيق واسع النطاق. يمكن أن تكون إحدى الممارسات ممارسة بعض الخدمات المختلفة ، وتسمى الخدمات الدقيقة ، وستقوم آلية التطبيق بأكملها بالاتصال بخدمة الويب المطلوبة في الوقت المناسب. كل من خدمات الويب REST و SOAP هي نوع من SOA .

JSON : لتدوير javascript Object Notation

عندما تقوم بتسلسل كائن لـ javascript ، يكون نوع تنسيق الكائن هو JSON. تخيل أن لديك الطبقة البشرية:

class Human{
 string Name;
 string Family;
 int Age;
}

ولديك بعض الحالات من هذا الصنف:

Human h1 = new Human(){
  Name='Saman',
  Family='Gholami',
  Age=26
}

عند تسلسل كائن h1 إلى JSON ، تكون النتيجة:

  [h1:{Name:'saman',Family:'Gholami',Age:'26'}, ...]

يمكن أن يقوم javascript بتقييم هذا التنسيق بواسطة الدالة eval() وإنشاء صفيف JSON سلسلة JSON هذه. هذا واحد هو مفهوم مختلف بالمقارنة مع المفاهيم الأخرى التي وصفتها سابقا.





soa