جافا تدعو WebService. عند الاتصال أولاً ، ستعتقد أنه كابوس ، خاصة بدون تطبيق قياسي موحد. بالمقارنة مع تطبيق خدمات الويب التي يمكن إكمالها في خطوات قليلة من .NET ، من المحزن حقًا رؤية تنفيذ Java. ولكن حتى لو كنا حزينًا ، فلا يزال يتعين علينا إكماله. لدى Java أيضًا العديد من التطبيقات الجيدة ، مثل Xfire و Jersey و CXF. هنا سوف نلقي نظرة على تنفيذ Xfire معًا.
1) أولاً وقبل كل شيء ، بالطبع لا بد لي من النزول من الحقيبة ، وهذا الشخص العادي يعرف ذلك. http://xfire.codehaus.org/download يمكنك الذهاب هنا ، يمكنك الذهاب أو التوزيع. لكن من الأفضل أن تمنحها الكثير من المشاكل الغريبة لفقدان الثقة.
ماذا علي أن أفعل إذا أخرجت الحقيبة؟ ضعه في المشروع. يبدو هذا هراء ، لكن الكثير من الناس لا يعرفون ماذا يفعلون.
لبناء مشروع جديد ، أقارنه بـ XfireWebservice ، وهو بالطبع مشروع ويب هنا.
لقد وضعت جميع حزمها هنا. بعد كل شيء ، عندما نكتب أمثلة ، ليست هناك حاجة إلى الإرضاء. انقر فوقه بشكل عرضي. إذا كنت ترغب في رؤية معلومات الاستثناء ، فيمكنك إضافتها ببطء. من السهل التخلص من الأخطاء في المستقبل ، لكننا لن نفعل ذلك هنا. بعد كل شيء ، لا يوجد شيء قبيح حول عدم وجود أي نوع من الاستثناءات ، ويمكنك القضاء عليها بنفسك.
2) دعونا أولاً نفهم الفرق بين XFire وأطر WebService الأخرى. الفرق الأكبر هو أنه يتطلب واجهة ، وإذا كنت بحاجة إلى استخدام XFIRE للاتصال بخدمة الويب المقابلة ، فيجب أن تعرف تعريف الواجهة. أشعر أن هناك بعض القيود هنا. ولكن بصرف النظر عن هذا ، من المريح تمامًا استدعاء WebService ، تمامًا مثل استدعاء الأساليب المحلية. لنلقي نظرة على المثال مباشرة:
بادئ ذي بدء ، الواجهة الأكثر أهمية:
الواجهة العامة ireaderservice {public reader getReader (اسم السلسلة ، كلمة مرور السلسلة) ؛ القائمة العامة <reader> getReaders () ؛ } هناك واجهة ، بالطبع يجب أن يكون هناك فئة تنفيذ ، وإلا فلن يكون للواجهة أي معنى. تنفذ readerservice من الفئة العامة ireaderservice {public reader getReader (اسم السلسلة ، كلمة مرور السلسلة) {إرجاع قارئ جديد (اسم ، كلمة المرور) ؛ } القائمة العامة <reader> getReaders () {list <Derer> readerList = new ArrayList <reader> () ؛ ReaderList.add (قارئ جديد ("Shun1" ، "123")) ؛ ReaderList.add (قارئ جديد ("Shun2" ، "123")) ؛ Return ReaderList ؛ }} ألق نظرة أيضًا على فصول Javabean والقارئ:
قارئ الطبقة العامة {Private Static Final Long SerialVersionuid = 1L ؛ اسم السلسلة الخاصة ؛ كلمة مرور السلسلة الخاصة ؛ Public Reader () {} قارئ عام (اسم السلسلة ، كلمة مرور السلسلة) {this.name = name ؛ this.password = كلمة المرور ؛ }. }}لاحظ أن فئة القراء لدينا هنا تنفذ الواجهة التسلسلية ، لماذا؟ هنا ، أولاً وقبل كل شيء ، نحتاج إلى فهم مبدأ خدمة الويب. بالنسبة إلى Java ، إذا كنا بحاجة إلى تحميل الكائنات على الإنترنت ، فإن الكثير من الناس سوف يفكرون بالطبع في التسلسل. بالمناسبة ، هذا هو التسلسل ، لأننا بحاجة إلى تمرير القارئ كمعلمة. يجب تنفيذ هذا بالقوة في الإصدار السابق ، وإلا سيتم الإبلاغ عن خطأ. ومع ذلك ، فإن أحدث إصدار (في الواقع ، أحدث إصدار هو أيضًا من عام 2007 ، لأن Xfire توقف عن التطور وتم دمجه في مشروع CXF بواسطة Apache. سنتحدث عن هذا لاحقًا). أما بالنسبة لكيفية تنفيذها ، فلن نتحقق منه بتعمق هنا في الوقت الحالي ، لأنه تم دمجه في CXF. إذا أردنا أن نتعلم بعمق ، فيجب أن يكون من الأفضل تعلم CXF.
3) بعد أن نكمل الواجهة أعلاه وكتابة جافابان ، سيسأل الكثير من الناس ، أرى أن العديد من خدمات الويب ستحتوي على ملفات WSDL ، فكيف حصلت عليها؟ قبل الحديث عن هذا ، دعونا نناقش ماهية WSDL. ربما توفر العديد من الشركات واجهات هي مجرد عناوين HTTP ، وإعادة تنسيقات XML ، وكذلك لدينا. هذا له ميزة واحدة وعيب واحد. الميزة هي أن تطورنا أقل صعوبة ، في حين أن العيب هو أننا نحتاج إلى تزويد المستخدمين بمجموعة من ملفات التفسير. ماذا تعني كل علامة XML التي تم إرجاعها؟ هذا لا شيء ، لكنه مزعج. بالنسبة لخدمة الويب ، فإن العيب هو أننا قمنا بتطوير المزيد من الأشياء ، والميزة هي أنه لا يتعين علينا كتابة العديد من ملفات التفسير ، لأن هناك تفسيرًا موحدًا يسمى WSDL. هذه هي وثيقة التفسير الخاصة بـ WebService ، والتي تكون موحدة ونفس الشيء بغض النظر عن اللغة ، لذلك لا توجد مشكلة لا يمكن لأحد أن يفهمها.
وهنا ، عندما ننشر XFIRE ، يمكن أن يساعدنا في إنشاء ملفات WSDL.
المشكلة هي كيفية نشرها ، وهذا أمر بسيط بالفعل. نقوم بإنشاء مجلد جديد meta-Inf في دليل SRC ، ثم إنشاء مجلد XFire فيه ، وإنشاء File Services.xml. الهيكل اللاحق على النحو التالي:
قد يسأل بعض الناس عن سبب حاجة إلى بنائه في دليل SRC. في الواقع ، إنه ليس بنية محددة هنا ، ولكن لأننا بحاجة إلى أن نطلب من أدوات التطوير مساعدتنا في نشر هذه الملفات بأنفسنا ، لذلك إذا وضعناها هنا ، يمكن أن تساعدنا Eclipse في نشرها على Tomcat أو غيرها من الحاويات. لاحظ أن مستوى المجلد حيث يوجد هذا الملف ثابت ولا يمكن تعديله.
لنلقي نظرة على الخدمات. xml مباشرة:
<؟ -> <samepace> http: // test/helloService </samepace> <!-فئة الواجهة-> <SeviceClass> com.xfire.servlet.ireaderservice </serviceClass> <!-فئة التنفيذ-> تطبيق com.xfire.servlet.readerservice </ender>
لا بأس عمومًا أن ننظر إلى التعليقات.
4) يعتقد الكثير من الناس أن هذا يكفي. لا ، لم ينجح بعد. إذا حددت هذا ، كيف يمكن للآخرين زيارته؟ كيفية إعادة توجيه الطلب المقابل إلى XFire والسماح له بمعالجته. نحن بحاجة إلى تعديل web.xml مرة أخرى.
بعد التعديل ، ما يلي هو:
<؟ xmlns: web = "http://java.sun.com/xml/ns/javaee" XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "webapp_id" version = "3.0" <Srevlet-class> org.codehaus.xfire.transport.http.xfireconfigurableservlet </revlet-class> </servlet> <sterlet mapping> <vislet-name> xfireservlet </servlet-name>
في الواقع ، هو مجرد إضافة servlet والتعيين المقابل. بعد ذلك ، ندخله مباشرة في المتصفح:
http: // localhost: 8080/xfirewebebservice/services/readerservice؟ wsdl
يمكننا أن نرى:
ما يتم عرضه هنا هو WSDL ، والذي سيعرض الطريقة التي نحددها والنوع الذي تم إرجاعه. هناك شرح لـ WSDL لاحقًا.
5) بعد الانتهاء من الخطوات الأربع المذكورة أعلاه ، أكملنا نشر خدمة الويب. يمكن للآخرين استدعاء خدمة الويب المقابلة للوصول إلى أساليبنا. دعنا نستخدم العميل الذي توفره XFire للوصول إلى خدمة موقع الويب الذي نشرناه للتو:
الفئة العامة readerClient {public static void main (string [] args) {// هنا هو إنشاء خدمة ، ويجب تمرير فئة الواجهة ، لأنه يجب علينا أن نسمي خدمة الواجهة المقابلة srcmodel = new ObjectServiceFactory (). إنشاء (ireaderservice.class) ؛ // Agent Factory ، هنا لإنشاء فئة الواجهة المقابلة في وقت لاحق Xfireproxyfactory Factory = New Xfireproxyfactory (xfirefactory.newinstance (). getxfire ()) ؛ // عنوان WebService ، لا يلزم إضافة WSDL readerserviceurl = "http: // localhost: 8080/xfirewebservice/services/readerservice" ؛ حاول {// استخدام المصنع لإرجاع فئة الواجهة المقابلة readerservice readerservice = (ireaderservice) factory.create (srcmodel ، readerserviceurl) ؛ reader reader = readerservice.getReader ("shun" ، "123") ؛ system.out.println (reader) ؛ } catch (malformedurlexception e) {e.printStackTrace () ؛ }}} بهذه الطريقة ، نرى أن الإخراج هو:
تحليل بنية ملف WSDL
WSDL (خدمات الويب الوصف ، لغة الوصف خدمة الويب) هي تطبيق XML يحدد وصف خدمة الويب كمجموعة من نقاط الوصول إلى الخدمة يمكن للعملاء من خلالها الوصول إلى الخدمات التي تحتوي على معلومات المستند أو مكالمات الإجراءات (على غرار مكالمات الإجراءات عن بُعد). تقوم WSDL أولاً بتجريد عملية الوصول ورسالة الطلب/الاستجابة المستخدمة أثناء الوصول ، ثم تربطها ببروتوكول نقل محدد وتنسيق الرسائل لتحديد نقطة الوصول المحددة للخدمة المنتشرة. تصبح نقاط الوصول إلى الخدمة للنشر المحددة ذات الصلة خدمات ويب مجردة من خلال مجموعة. ستشرح هذه المقالة بنية وثيقة WSDL بالتفصيل وتحليل دور كل عنصر.
1: تعريف WSDL
WSDL هو مستند يستخدم لوصف خدمات الويب بدقة ، ووثائق WSDL هي مستند XML يتبع نمط WSDL XML. يعرّف مستند WSDL خدمة ويب على أنها مجموعة من نقاط الوصول أو المنافذ. في WSDL ، نظرًا لأن التعريف التجريدي لنقاط وصول الخدمة والرسائل قد تم فصله عن نشر الخدمة المحددة أو ربط تنسيق البيانات ، يمكن استخدام التعريف التجريدي مرة أخرى: تشير الرسالة إلى وصف تجريدي للبيانات المتبادلة ؛ ويشير نوع المنفذ إلى مجموعة مجردة من العمليات. تشكل بروتوكولات محددة ومواصفات تنسيق البيانات لأنواع المنافذ المحددة ملزمة يمكن إعادة استخدامها. ربط عنوان وصول ويب بربط قابل لإعادة الاستخدام ، يمكن تحديد منفذ ، ويتم تعريف مجموعة من المنافذ كخدمة.
يحتوي وثيقة WSDL عادة على 7 عناصر مهمة ، وهي الأنواع والاستيراد والرسالة والوراء والتشغيل والربط والخدمة. تتداخل هذه العناصر في عنصر التعريفات ، وهو عنصر الجذر لمستند WSDL. سيقدم الجزء التالي من المقالة الهيكل الأساسي لـ WSDL بالتفصيل.
2: الهيكل الأساسي لـ WSDL-Overview
كما هو موضح في نهاية الجزء الأول ، يحتوي مستند WSDL الأساسي على 7 عناصر مهمة. ما يلي سوف يقدم هذه العناصر ووظائفها.
يستخدم مستند WSDL العناصر التالية في تعريف خدمة الويب:
・ الأنواع - حاوية محددة بواسطة نوع البيانات ، والتي تستخدم نظام نوع معين (عادة ما يكون نظام النوع في مخطط XML).
・ الرسالة - النوع التجريدي تعريف هياكل البيانات لرسائل الاتصال. استخدم الأنواع المحددة بواسطة الأنواع لتحديد بنية البيانات للرسالة بأكملها.
・ التشغيل - وصف تجريدي للعمليات المدعومة في الخدمة. بشكل عام ، تصف عملية واحدة زوج رسالة طلب/استجابة تصل إلى الإدخال.
・ porttype - مجموعة مجردة من العمليات التي تدعمها نوع نقطة إدخال وصول معينة ، والتي يمكن دعمها بنقطة وصول خدمة واحدة أو أكثر.
・ الربط - ربط بروتوكولات محددة ومواصفات تنسيق البيانات لأنواع المنافذ المحددة.
・ المنفذ - تم تعريفه كنقطة وصول واحدة للخدمة التي تجمع بين تنسيق البروتوكول/تنسيق البيانات مع عناوين ويب ويب محددة.
・ الخدمة- مجموعة من نقاط الوصول إلى الخدمة ذات الصلة.
يمكن الإشارة إلى مخطط XML لـ WSDL باسم عنوان URL التالي: http://schemas.xmlsoap.org/wsdl/
ثلاثة: الهيكل الأساسي لـ WSDL-الوصف المنفصل
سيصف هذا القسم بالتفصيل دور كل عنصر من عناصر مستند WSDL من خلال مثال. المثال التالي هو محتوى مستند WSDL بسيط. لتوليد هذا المستند ، يرجى الرجوع إلى مقالتي الأخرى: مثال تطوير XFIRE-Helloworld.
وثيقة WSDL خدمة ويب بسيطة تدعم عملية فريدة تسمى Sayhello ، والتي يتم تنفيذها عن طريق تشغيل بروتوكول الصابون على HTTP. يقبل الطلب اسم سلسلة ويعيد سلسلة بسيطة بعد المعالجة. الوثائق كما يلي:
<؟ xmlns: wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns: xsd = "http://www.w3.org/2001/xmlschema" Xmlns: soapenc12 = "http://www.w3 xmlns: wsdl = "http://schemas.xmlsoap.org/wsdl/"> <wsdl: types> <xsd: schema xmlns: xsd = "http://www.w3.org/2001/xmlschema" TargetNamesPace = "http: //com.liuxiang.xfiredemo/helloservice"> <xsd: element name = "sayhello"> <xsd: complextype> <xsd: sequence> <xsd: element maxoccurs = "1" minoccurs = "1" name = "nill" </xsd: sequence> </ssd: complextype> </xsd: element> <xsd: element name = "sayhelloresponse"> <xsd: complextype> <xsd: sequence> <xsd: element maxoccurs = "1" minoccurs = "1" name = </xsd: complextype> </ssd: element> </xsd: schema> </sdl: types> <wsdl: message name = "sayhelloresponse"> <wsdl: part name = "parameters" element = "tns: sayhelloresponse"/>/wsdl: <wsdl: اسم الجزء = "المعلمات" element = "tns: sayhello" /> < /wsdl: message> <wsdl: porttype name = "helloserviceporttype"> <wsdl: operation name = "sayhello"> <wsdl: input name = "sayhellorequest" name = "sayhelloresponse" message = "tns: sayhelloresponse"/> </wsdl: العملية> </wsdl: porttype> <wsdl: name name = "helloservicehttpbinding" type = "tns: helloserviceporttype" transport = "http://schemas.xmlsoap.org/soap/http"/> <wsdlsoap: التشغيل name = "sayhello"> <wsdlsoap: التشغيل soapaction = ""/> <WSDLSOAP: الجسم استخدام = "حرفي"/> </wsdl: الإخراج> </wsdl: العملية> </wsdl: binding> <wsdl: service name = "helloservice"> <wsdl: port name = "helloservicehtport الموقع = "http: // localhost: 8080/xfire/services/helloService"/> </wsdl: port> </wsdl: service> </wsdl: تعريفات>
يستخدم عنصر الأنواع لغة مخطط XML لإعلان أنواع البيانات المعقدة والعناصر المستخدمة في مكان آخر في مستند WSDL ؛
يشبه عنصر الاستيراد عنصر الاستيراد في مستند مخطط XML ويستخدم لاستيراد تعريفات WSDL من مستندات WSDL الأخرى ؛
يصف عنصر الرسالة حمولة الرسالة باستخدام النوع المدمج أو النوع المعقد أو عنصر مخطط XML المحدد في عنصر نوع مستند WSDL أو محدد في مستند WSDL الخارجي المشار إليه بواسطة عنصر الاستيراد ؛
يصف عنصر porttype وعنصر التشغيل واجهة خدمة الويب وتحديد أساليبها. يشبه عنصر PortType وعنصر التشغيل إعلان الطريقة المحددة في واجهة Java. يستخدم عنصر التشغيل نوعًا أو أكثر من أنواع الرسائل لتحديد الحمولة النافعة لإدخالها ومخرجاتها ؛
يعين عنصر الربط عنصر porttype وعنصر التشغيل لبروتوكول خاص وأسلوب الترميز ؛
عنصر الخدمة مسؤول عن تعيين عنوان الإنترنت لربط معين ؛
1. عناصر التعريفات
عنصر الجذر لجميع مستندات WSDL هو عنصر تعريفات. يلف هذا العنصر المستند بأكمله مع توفير مستند WSDL من خلال اسمه. لا يحتوي هذا العنصر على وظيفة أخرى باستثناء توفير مساحة اسم ، لذلك لن يتم وصفه بالتفصيل.
الرمز التالي هو بنية عنصر التعريفات:
<WSDL: التعريفات TargetNamesPace = "http: //com.liuxiang.xfiredemo/helloservice" xmlns: tns = "http: //com.liuxiang.xfiredemo/helloservice" xmlns: wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns: xsd = "http://www.w3.org/2001/xmlschema" Xmlns: soapenc12 = "http://www.w3 Xmlns: wsdl = "http://schemas.xmlsoap.org/wsdl/"> </wsdl: التعريفات>
2. الأنواع عناصر
تعتمد WSDL أنواع مخطط W3C XML المدمجة كنظام من النوع الأساسي. يتم استخدام عنصر الأنواع كحاوية لتحديد أنواع البيانات المختلفة غير الموصوفة في أنواع مخطط XML المدمجة. عند إعلان الحمولة النافعة لجزء الرسالة ، يستخدم تعريف الرسالة أنواع البيانات والعناصر المحددة في عنصر النوع. تعريفات الأنواع في وثيقة WSDL هذه:
<WSD: أنواع> <xsd: schema xmlns: xsd = "http://www.w3.org/2001/xmlschema" AttributeFormDefault = "element" elementfift = "expanify" targetnamespace = "http: //com.liuxiang name = "sayhello"> <xsd: complextype> <xsd: sequence> <xsd: element maxoccurs = "1" minoccurs = "1" name = "name" nillable = "true" type = "xsd: element"/> </xsd: sequence> </xsd: complextype> <xsd: complextype> <xsd: sequence> <xsd: element maxoccurs = "1" minoccurs = "1" name = "out" nillable = "true" type = "XSD:
ما سبق هو جزء تعريف البيانات ، الذي يحدد عنصرين ، أحدهما هو Sayhello والآخر هو sayhelloresponse:
Sealhello: يحدد نوعًا معقدًا يحتوي فقط على سلسلة بسيطة ، يتم استخدامها لوصف الجزء الوارد من العملية في المستقبل ؛
sealhelloresponse: يحدد نوعًا معقدًا يحتوي فقط على سلسلة بسيطة ، وقيمة الإرجاع المستخدمة لوصف العملية في المستقبل ؛
3. عناصر الاستيراد
يتيح عنصر الاستيراد استخدام عناصر التعريف في مساحة الاسم المحددة في مستندات WSDL الأخرى في مستند WSDL الحالي. لا يتم استخدام عنصر الاستيراد في هذا المثال. عادة ما تكون هذه الوظيفة فعالة للغاية عندما يرغب المستخدمون في تحديد مستندات WSDL.
شكل الاستيراد كما يلي:
<WSDL: استيراد المساحة = "http://xxx.xxx.xxx/xxx/xxx" location = "http://xxx.xxx.xxx/xxx/xxx.wsdl"/>
يجب أن يكون هناك سمة مساحة اسم وسمة موقع:
سمة مساحة الاسم: يجب أن تتطابق القيمة مع مساحة الأسماء الهدف المعلنة في مستند WSDL الذي يتم استيراده ؛
سمة الموقع: يجب أن تشير إلى مستند WSDL الفعلي ، ولا يمكن أن يكون المستند فارغًا.
4. عناصر الرسائل
يصف عنصر الرسالة حمولة خدمة الويب باستخدام الرسائل. يمكن لعنصر الرسالة أن يصف حمولة الإخراج أو قبول الرسالة ؛ يمكن أن يصف أيضًا محتويات رأس ملف SOAP وعنصر تفاصيل الخطأ. تعتمد طريقة تعريف عنصر الرسالة على استخدام نمط RPC أو رسائل نمط المستند. في تعريف عنصر الرسالة في هذه المقالة ، يستخدم هذا المستند رسائل على غرار المستند:
<WSDL: اسم الرسالة = "sayhelloresponse"> <wsdl: part name = "parameters" element = "tns: sayhelloresponse" /> </sdl: message> <wsdl: message name = "sayhellorequest"> <wsdl: part name = "parameters" element = "tns:
هذا الجزء هو تعريف مجردة لتنسيق الرسالة: يتم تعريف رسالتين sayhelloresponse و sayhellorequest:
Sealhellorequest: تنسيق رسالة الطلب لعملية Sayhello ، التي تتكون من جزء رسالة ، معلمات مسماة ، والعنصر هو العنصر في النوع الذي حددناه سابقًا ؛
sealhelloresponse: يتكون تنسيق رسالة الاستجابة لعملية Sayhello من جزء من رسالة ، معلمات مسماة ، والعنصر هو العنصر في الأنواع التي حددناها سابقًا ؛
إذا كنت تستخدم الرسائل على غرار RPC ، فأنت بحاجة فقط إلى تعديل عنصر العنصر في المستند للكتابة.
5. عنصر porttype
يحدد عنصر porttype الواجهة التجريدية لخدمة الويب. تشبه هذه الواجهة إلى حد ما واجهات Java ، وكلاهما يحدد نوعًا وطريقة مجردة ، ولا يتم تعريف أي تنفيذ. في WSDL ، يتم تنفيذ عنصر porttype من خلال عناصر الربط والخدمة ، والتي يتم استخدامها لتوضيح بروتوكول الإنترنت ومخطط الترميز وعنوان الإنترنت الذي يستخدمه تطبيق خدمة الويب.
يمكن تعريف عمليات متعددة في porttype ، ويمكن اعتبار عملية واحدة طريقة. تعريف وثيقة WSDL في هذه المقالة:
<wsdl: porttype name = "helloServicePortType"> <wsdl: عملية التشغيل = "sayhello"> <wsdl: input name = "sayhellorequest" message = "tns: sayhellorequest" /> <wsd: output name = "sayhelloresponse" </wsdl: porttype>
يحدد PortType نوع وضع اتصال الخدمة. أنه يحتوي على طريقة sealhello ، والتي تحتوي على كل من الإدخال والإخراج للإشارة إلى أن العملية هي وضع طلب/استجابة. رسالة الطلب هي Sayhellorequest المحددة مسبقًا ، ورسالة الاستجابة هي SayhellorEsponse المحددة مسبقًا. يمثل الإدخال الحمولة التي يتم تسليمها إلى خدمة الويب ، وتمثل رسالة الإخراج الحمولة التي يتم تسليمها إلى العميل.
6. الربط
يقوم عنصر الربط بتعيين porttype مجردة لمجموعة من البروتوكولات المحددة (SOAO و HTTP) ، وأنماط المراسلة ، وأنماط الترميز. عادة ما يتم استخدام عناصر الربط مع العناصر الملكية للبروتوكول. أمثلة في هذه المقالة:
<wsdl: name binding = "helloservicehttpbinding" type = "tns: helloserviceporttype"> <wsdlsoap: style style = "document" transfer soapaction = "" /> <wsdl: input name = "sayhellorequest"> <wsdlsoap: body use = "LIRALL" /> </SDL: input> <wsdl: name outputing = "sayhelloresponse"> <wsdlsoap: body use = "miteral" /> < /wsdl: