التصنيف |
---|
البروتوكول للوصول البسيط إلى الأجسام يعتبر الرمز (SOAP) (اختصارا لبروتوكول الوصول البسيط إلى الأجسام) هو عبارة عن مواصفات لبروتوكول الرسائل لتبادل المعلومات المنظمة في تنفيذ خدمات الشبكة في الشبكات الحاسوبية. والغرض منه هو توفير القدرة على التمديد، والحيا، واللطف، والاستقلالية. فهو يستخدم مجموعة معلومات لغة الترميز القابلة للامتداد في شكل رسائله، ويعتمد على بروتوكولات طبقة التطبيقات، وفي أغلب الأحيان بروتوكول نقل النص الفائق (HTTP)، رغم أن بعض الأنظمة التراثية تتواصل عبر بروتوكول نقل البريد البسيط (SMTP)، من أجل التفاوض على الرسائل ونقلها.[1]
يسمح نظام SOAP للمطورين بالاستناد إلى عمليات تعمل على نظم تشغيل متباينة (مثل ويندوز، وماكو أو إس، ولينكس) لتوثيق لغة الترميز (XML) والإذن بها والتواصل معها باستخدام لغة الترميز (Extential Markup Language). وبما أن بروتوكولات الويب مثل بروتوكول نقل النص الفائق يتم تركيبها وتشغيلها على جميع أنظمة التشغيل، فإن SOAP تسمح للعملاء بالاستناد إلى خدمات الويب وتلقي ردود مستقلة عن اللغة والمنصات.
يوفر برنامج SOAP طبقة بروتوكول الرسائل من كومة بروتوكول خدمات الويب لخدمات الويب. وهو بروتوكول قائم على XML يتكون من ثلاثة أجزاء:
ويتميز البرنامج بثلاث خصائص رئيسية:
وكمثال على ما يمكن أن تفعله إجراءات SOAP ، يمكن لأي تطبيق أن يرسل طلب SOAP إلى خادم لديه خدمات الإنترنت المتاحة - مثل قاعدة بيانات أسعار العقارات - مع بارامترات البحث. ثم يعيد الخادم استجابة SOAP (مستند مشكل XML مع البيانات الناتجة)، على سبيل المثال، الأسعار، الموقع، الخصائص. وبما أن البيانات المولدة تأتي في شكل موحد قابل للتعديل بواسطة الآلة، فإن التطبيق الطالب يمكن أن يدمجها بعد ذلك مباشرة.[2]
تتكون الهندسة المعمارية SOAP من عدة طبقات من المواصفات لـ:
تطورت SOAP خلفا لـ XML-RPC ، على الرغم من أنها تقترض حيادها في النقل والتفاعل من خدمة الويب عناوين والمظروف/الرأس/الجسم من مكان آخر (ربما من WDDX).
تم تصميم SOAP كبرتوكول للوصول إلى الأجسام وأصدر كبرتوكول XML-RPC في حزيران/يونيه 1998 كجزء من 5,1 الحدود من قبل ديف وينر، دون بوكس، بوب أتكينسون، ومحسن الغصين لمايكروسوفت، حيث يعمل أتكينسون والغصين. ولم تكن هذه المواصفات متاحة إلا بعد تقديمها إلى المعهد في 13 أيلول/سبتمبر 1999. وفقا لدون بوكس، كان هذا بسبب السياسة داخل مايكروسوفت. بسبب تردد مايكروسوفت، قام ديف وينر بشحن XML-RPC في عام 1998.[3]
ولم تصل مسودة الإنترنت المقدمة إلى مركز RFC وبالتالي لا تعتبر «معيارا» في حد ذاتها. ونشرت النسخة 1,1 من المواصفات كمذكرة W3C في 8 أيار/مايو 2000. وبما أن الصيغة 1,1 لم تصل إلى W3C التوصية، فلا يمكن اعتبارها أيضا «معيارا». غير أن الصيغة 1,2 من المواصفات أصبحت توصية W3C في 24 حزيران/يونيو 2003.
وقد حافظ الفريق العامل المعني ببروتوكول XML التابع لاتحاد الشبكة العالمية على المواصفات المحددة لهذا النظام إلى أن أُغلق الفريق في 10 تموز/يوليو 2009. لكن النسخة 1,2 من المعيار أسقطت هذا الاختصار.
وبعد تقديم برنامج SOAP لأول مرة، أصبحت الطبقة الأساسية لمجموعة أكثر تعقيداً من خدمات الويب، استناداً إلى لغة وصف خدمات الويب (WSDL)، ومخطط XML ، واكتشاف الوصف العالمي والتكامل (UDDI). وقد ثبت أن هذه الخدمات المختلفة، ولا سيما الخدمات المقدمة من أجل التنمية المستدامة، أقل أهمية بكثير، ولكن تقدير هذه الخدمات يعطي فهما كاملا للدور المتوقع من الخدمات المقدمة على الشبكة مقارنة بالكيفية التي تطورت بها بالفعل.[4]
ويمكن تعريف مواصفات البرنامج على نطاق واسع بأنها تتألف من المكونات المفاهيمية 3 التالية: مفاهيم البروتوكول ومفاهيم التجميل ومفاهيم الشبكة.
تحدد مواصفات SOAP إطار الرسائل، الذي يتألف من:
رسالة SOAP هي وثيقة عادية XML تحتوي على العناصر التالية:
جزء | وصف | مطلوب |
---|---|---|
ظرف | يحدد مستند XML كرسالة SOAP. | نعم |
رأس | يحتوي على معلومات الرأس. | لا |
الجسم | يحتوي على معلومات الاتصال والاستجابة. | نعم |
خطأ | يوفر معلومات حول الأخطاء التي حدثت أثناء معالجة الرسالة. | لا |
إن كل من SMTP وHTP عبارة عن بروتوكولات طبقة تطبيقات صالحة تستخدم كنقل، ولكن HTTP اكتسب قبولاً أوسع نطاقاً حيث يعمل بشكل جيد مع البنية الأساسية للإنترنت اليوم؛ وعلى وجه التحديد، يعمل HTTP بشكل جيد مع جدران الحماية الشبكية. كما يمكن استخدام SOAP عبر HTTP (وهو نفس بروتوكول HTTP على مستوى التطبيقات، ولكنه يستخدم بروتوكول نقل مشفر تحته) مع توثيق بسيط أو متبادل؛ وهذه هي الطريقة التي ينادي بها نظام WS-I لتوفير أمن خدمات الويب على النحو الوارد في الموجز الأساسي لنظام WS-I 1-1.[6]
هذه ميزة كبيرة على البروتوكولات الأخرى الموزعة مثل GIOP/IIOP أو DCOM ، والتي عادة ما يتم ترشيحها بواسطة الجدران النارية. ومن الاحتمالات الأخرى التي تؤيدها بعض عمليات التنفيذ ما يلي: وللوزارة أيضا ميزة على إدارة عمليات حفظ السلام أنها لا تتأثر بالحقوق الضمانية المهيأة على الآلات التي تتطلب معرفة بعقود النقل والاستقبال على حد سواء. وهذا يسمح باقتران SOAP بطريقة غير ممكنة مع DCOM. وهناك أيضا معيار OASIS الخاص بSOAP- فوق UDP.
واختيرت مجموعة معلومات XML كشكل موحد للرسائل بسبب استخدامها الواسع النطاق من قبل الشركات الكبرى وجهود تطوير المصادر المفتوحة. عادة، XML معلومات Set هو تسلسل XML. وتؤدي طائفة واسعة من الأدوات المتاحة مجانا إلى زيادة كبيرة في الانتقال إلى التنفيذ القائم على النظام. يمكن أن يكون الترادف الطويل بعض الشيء من XML فائدة وعيوبا في نفس الوقت. وفي حين يعمل على تعزيز قابلية القراءة للبشر، وتسهيل اكتشاف الأخطاء، وتجنب مشاكل التشغيل التبادلي مثل نظام بايت، إلا أنه قد يؤدي إلى إبطاء سرعة المعالجة، وقد يكون مرهقاً. على سبيل المثال، CORBA ، GIOP ، ICE ، وDCOM تستخدم أقصر بكثير، وأشكال الرسائل الثنائية. ومن ناحية أخرى، تتوفر الأجهزة لتسريع معالجة رسائل XML. كما يجري استكشاف XML الثنائي كوسيلة لتبسيط متطلبات إنتاج XML. عادة ما يكون لرسائل XML بطبيعتها الموثقة ذاتياً «النفقات العامة» (على سبيل المثال، الرؤوس، العلامات المقطوعة، والحدود) أكثر من البيانات الفعلية على النقيض من البروتوكولات السابقة حيث كانت النفقات العامة عادة نسبة مئوية صغيرة نسبياً من الرسالة الإجمالية.
وفي مجال الرسائل المالية، تبين أن رسالة SOAP أكبر 2-4 أضعاف من البروتوكولات السابقة FACK (تبادل المعلومات المالية) و CDR (التمثيل المشترك للبيانات).
XML معلومات مجموعة ليس إلى بوصة XML. فعلى سبيل المثال، توجد بيانات CSV و JSON XML-infoset. ولا حاجة أيضا إلى تحديد إطار عام للتحويل. ويتيح مفهوم ربط نظام SOAP ربط تطبيق محدد. والعيب هو أن على كل من البائعين والمتلقين أن يدعموا هذا الإلزام المحدد حديثا.[7]
إن الرسالة الواردة أدناه تطلب سعر أسهم شركة إيه تي آند تي (رمز الأسهم «ت»).
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 299
SOAPAction: "http://www.w3.org/2003/05/soap-envelope"
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:m="http://www.example.org">
<soap:Header>
</soap:Header>
<soap:Body>
<m:GetStockPrice>
<m:StockName>T</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>