نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • ویندوز 8
  • توضیحات wsdl. این چیزی است که درخواست وب سرویس به نظر می رسد

توضیحات wsdl. این چیزی است که درخواست وب سرویس به نظر می رسد

در این مقاله درباره چیستی فایل WSDL، چرایی نیاز و نحوه کار با آن صحبت خواهم کرد.

نقشه مقاله

WSDL چیست؟

WSDL یک زبان توصیف سرویس وب است که ساختار XML دارد. هدف اصلی یک فایل WSDL به عنوان رابطی برای دسترسی به توابع سرویس و بازگرداندن انواع داده است. مسیر پردازش درخواست های سرور و غیره

مسیر فایل wsdl معمولاً شبیه http://host/services/wsdl/gbdar-v2-2.wsdl است.

ابزارها، کتابخانه های زیادی برای خواندن یک فایل WSDL طراحی شده اند.

SoapUi

یکی از این ابزارها () soapUi است. با نصب توزیعی که برای پلتفرم شما طراحی شده است، می توانید ایجاد کنید پروژه جدیدتوسط تیم پروژه File/New SoapUi. در گفتگوی ایجاد یک پروژه جدید، کادر بررسی ایجاد درخواست‌های نمونه را فعال بگذارید

اجرای کوئری ها

در پروژه جدید قالب های درخواستی به صورت خودکار برای سرویس ایجاد می شود که توضیحات آن در فایل wsdl موجود است. در سمت چپ درخت، لیستی از توابع موجود در فایل WSDL را مشاهده خواهید کرد. من تابع Replication را در معرض نمایش خواهم گذاشت. در داخل آن یک درخواست Request1 وجود دارد که با دوبار کلیک کردن روی آن یک دیالوگ با یک الگوی درخواست مشاهده می کنیم، به جای پارامترهای پیش فرض علامت سوال وجود دارد. برای اینکه تابع به درستی اجرا شود، باید تمام پارامترهایی که با تگ Optional مشخص نشده اند را پر کنید و سپس روی مثلث سبز رنگ در گوشه سمت چپ بالای کادر گفتگو کلیک کنید.

اگر تمام پارامترها به درستی مشخص شده باشند، پاسخ سرویس به درخواست در سمت راست ظاهر می شود.

SoapUi امکان مشاهده پارامترهای یک فایل WSDL را فراهم می کند؛ برای انجام این کار، باید روی نام رابط دوبار کلیک کنید (که با یک نماد سبز در درخت فایل WSDL مشخص شده است، برای من - gdbar-v2-2SOAP). در گفتگو می توانید پیدا کنید:

  • برگه نمای کلی - شرح پارامترهای عمومی WSDL، فهرستی از توابع و اقدامات سرور مرتبط
  • برگه نقاط پایانی خدمات - مسیر سرور و سایر پارامترها
  • محتوای WSDL - درخت ناوبری فایل
  • انطباق WS-I - در اینجا می توانید یک گزارش WS-I در رابط ایجاد کنید

تولید مستندات

SoapUi به ما اجازه می دهد تا مستندات عملکرد WSDL را تولید کنیم. برای این کار روی رابط راست کلیک کرده و دستور را فراخوانی کنید ایجاد مستنداتدر نتیجه بدست می آوریم راهنمای دقیقدر فرمت html

این همه است، در پست های جدید مشترک شوید، نظرات خود را بگذارید، پیشنهاداتی برای بهبود مقاله ارائه دهید.

عناصر پسوند Binding برای تعیین یک دستور زبان خاص برای پیام های خطای ورودی (3) و خروجی (4) استفاده می شود (5). اطلاعات سطح عملیات (2) و سطح الزام آور (1) نیز ممکن است مشخص شوند.

عنصر binding عملیات حاوی داده هایی برای عملیاتی به همین نام است نوع مرتبطبندر. با این حال، نام عملیات در مورد کلیمنحصر به فرد نیست (به عنوان مثال: روش ها / توابع اضافه بار - استفاده از نام های مشابه با امضاهای مختلف)، بنابراین ممکن است تعیین منحصر به فرد عملیات هدف نوع پورت کافی نباشد. در چنین مواردی، عملیات هدف با مشخص کردن نام‌های عناصر مناسب wsdl:input و wsdl:output با استفاده از ویژگی name مورد بررسی قرار می‌گیرد.

الزام آور بایدفقط یک پروتکل نصب کنید

الزام آور نبایدحاوی اطلاعات آدرس

بندر

پورت جداگانه تعریف می کند نقطه پایانبا تنظیم آدرس پیوند.

  1. <wsdl:تعاریف .... >
  2. <wsdl:سرویس .... > *
  3. <wsdl:بندر name = "nmtoken" binding = "qname" > *
  4. <-- extensibility element (1) -->
  5. wsdl:بندر>
  6. wsdl:سرویس>
  7. wsdl:تعاریف>

ویژگی name یک نام منحصر به فرد را در بین تمام پورت های سند WSDL مشخص می کند. ویژگی binding از نوع QName حاوی ارجاعی به binding است (نگاه کنید به).

عناصر پسوند (1) برای تعیین آدرس استفاده می شود.

بندر نبایدبیش از یک آدرس را مشخص کنید.

بندر نبایدحاوی هر گونه اطلاعات الزام آور غیر از آدرس باشد.

سرویس

یک سرویس مجموعه ای از پورت های مرتبط را با هم ترکیب می کند.

  1. <wsdl:تعاریف .... >
  2. <wsdl:سرویس name = "nmtoken" > *
  3. <wsdl:بندر .... /> *
  4. wsdl:سرویس>
  5. wsdl:تعاریف>

ویژگی name یک نام منحصر به فرد را در بین تمام سرویس های تعریف شده در سند WSDL مشخص می کند.

پورت های داخل یک سرویس به صورت زیر متصل می شوند:

  • پورت ها با یکدیگر ارتباط برقرار نمی کنند (یعنی خروجی یک پورت ورودی دیگری نیست).
  • اگر سرویسی دارای چندین پورت باشد که از یک نوع پورت مشترک استفاده می کنند اما از اتصالات متفاوتی استفاده می کنند یا آدرس های متفاوتی دارند، آن پورت ها درگاه های جایگزین هستند. هر یک از این پورت ها رفتار منطقی معادل (در داخل محدودیت های انتقال و قالب پیام اعمال شده توسط اتصال مربوطه) را پیاده سازی می کند. این به مشتری امکان انتخاب می دهد پورت خاصبرای مبادله بر اساس معیارهای مختلف (پشتیبانی از پروتکل حمل و نقل و غیره).
  • با نگاه کردن به پورت ها، می توانید تعیین کنید که کدام نوع پورت توسط سرویس پشتیبانی می شود. بر اساس این داده ها، مشتری می تواند توانایی تعامل با یک سرویس خاص را تعیین کند. این در صورتی مفید است که رابطه ای بین عملیات از انواع متفاوتپورت ها، و برای انجام یک کار خاص، سرویس باید از انواع پورت های مورد نیاز پشتیبانی کند.
  1. این یک ترجمه رایگان، جزئی و گسترده از سند Web Services Description Language (WSDL) 1.1 مورخ 15 مارس 2001 است.
  2. کار کردن با اصطلاحات غیرقابل توصیفی که به زبان لاتین نوشته شده اند بسیار ناخوشایند است و همچنین به طور واضح ترجمه شده اند. بنابراین، نام اصلی تنها در هنگام معرفی یک اصطلاح جدید داده می شود و در ادامه متن از ترجمه روسی استفاده می شود.

پیشگفتار

مشتریان مشتریان از مشتریان فایل های xsd را برای ساختارهای ارسال شده توسط سرویس های وب پیاده سازی شده درخواست کردند. مشتریان با دعوت از مشتریان مشتریان برای ایجاد WSDL پاسخ دادند. که به طور ناگهانی، "غیرآمیز"، نیاز به ایجاد نه تنها طرحواره های xsd برای اعتبار سنجی داده ها، بلکه "کل WSDL" ایجاد شد. معمولا از WSDL برای SOAP استفاده می شود، اما ما از REST استفاده می کنیم...

قبلا در موردش نوشتم

معرفی

اصطلاح خدمات وب معمولاً با خدمات مبتنی بر عملیات یا اقدام مبتنی بر استانداردهای SOAP یا WS* مانند WS-Addressing یا WS-Security مرتبط است. اصطلاح خدمات وب REST معمولاً به معماری مبتنی بر منابع از سرویس های وب اشاره دارد که XML را از طریق HTTP ارتباط برقرار می کند. هر کدام از این سبک های معماری جایگاه خود را دارند، اما تا همین اواخر استاندارد WSDL از هر دوی این سبک ها پشتیبانی نمی کرد. اتصال HTTP WSDL 1.1 برای توصیف تعامل با ناکافی بود با استفاده از XMLاز طریق HTTP، یعنی هیچ راه رسمی برای توصیف خدمات وب REST با استفاده از WSDL وجود نداشت. انتشار استاندارد WSDL 2.0 (که با در نظر گرفتن نیاز به توصیف خدمات وب REST ایجاد شده است) در وضعیت توصیه در سراسر جهانکنسرسیوم وب (W3C) زبانی را برای توصیف خدمات وب REST ارائه کرده است.

REST یک سبک معماری است که وب را به عنوان یک برنامه کاربردی منبع محور در نظر می گیرد. در عمل، این بدان معنی است که هر URL در یک برنامه RESTful نشان دهنده یک منبع است. URL ها به راحتی قابل درک و به خاطر سپردن هستند. به عنوان مثال، یک کتابفروشی ممکن است URL http://www.bookstore.com/books/ را برای فهرستی از کتاب هایی که می فروشد و http://www.bookstore.com/books/0321396855/ را برای جزئیات مربوط به یک کتاب خاص با ISBN 0321396855. این در تضاد با برنامه‌های عمل محور است، که معمولاً URLهای طولانی و پیچیده‌ای دارند که اقداماتی را که باید انجام شود، توصیف می‌کنند، برای مثال http://www.bookstore.com/action/query?t=b&id=11117645532&qp=0321396855. پارامترهای پرس و جو برای انتخاب داده های مورد نیاز استفاده می شود. با استفاده از مثال کتابفروشی، تعیین پارامتر موضوع، موضوع کتاب را محدود می کند. به عنوان مثال، داستان های فیزیک یا کارآگاهی، یا برای مثال نشانی اینترنتی http://www.bookstore.com/books/?subject=computers/eclipse - درخواستی که فهرستی از کتاب های مربوط به پلتفرم Eclipse را برمی گرداند.

اصطلاح REST توسط روی فیلدینگ در پایان نامه دکتری خود ابداع شد. او لینک ها را به عنوان وسیله ای برای تغییر (ذخیره) وضعیت یک برنامه کاربردی می دانست. هایپرلینک ها در منابع برنامه ذخیره می شوند و روشی برای تغییر وضعیت برنامه، تغییر مسیر از یک حالت به حالت دیگر هستند. به طور معمول، لینک‌های (X)HTML برای استفاده انسان‌ها در نظر گرفته شده‌اند، اما در XML، که برای پردازش ماشینی در نظر گرفته شده بود، استفاده نمی‌شود. درست مانند (X)HTML، سرویس های وب REST از لینک ها در XML استفاده می کنند.

برنامه های کاربردی وب سنتی با استفاده از عملیات HTTP GET یا POST به منابع دسترسی دارند. برنامه های RESTfull با استفاده از منابع به سبک "ایجاد، خواندن، به روز رسانی و حذف (CRUD)" کار می کنند. قابلیت های کاملپروتکل HTTP (POST، GET، PUT و DELETE).

یکی دیگر یادداشت مهمدرباره برنامه های RESTful: برنامه های RESTful باید بدون حالت باشند. این بدان معنی است که یک برنامه REST هیچ حالت جلسه ای را در سمت سرور حفظ نمی کند. تمام اطلاعات لازم برای تکمیل درخواست در خود درخواست منتقل می شود. (بنابراین، سرور باید به درخواست های مکرر به همان روش پاسخ دهد. یادداشت مترجم). بر این اساس، مشتری می تواند منابع دریافتی را در حافظه پنهان نگه دارد، که می تواند سرعت برنامه را در جایی که سرویس به صراحت اجازه می دهد، به میزان قابل توجهی افزایش دهد. برای کسب اطلاعات بیشتر در مورد REST، به پیوندهای مقاله مراجعه کنید.

WSDL و REST

WSDL شامل تمام جزئیات مربوط به وب سرویس از جمله:

    آدرس وب سرویس
    مکانیسم های ارتباطی که وب سرویس آن را درک می کند
    عملیاتی که یک وب سرویس می تواند انجام دهد
    ساختار پیام سرویس وب

مشتریان می توانند از جزئیات ذکر شده برای تعامل با سرویس استفاده کنند.

WSDL 2.0 به عنوان یک توصیه W3C در ژوئن 2007 اعلام شد. این نسخه از استاندارد WSDL برای رفع مشکلات استاندارد WSDL 1.1 منتشر شد که بسیاری از آنها یافت شدند. سازمان وبقابلیت همکاری خدمات (WS-I). علاوه بر این، WSDL 2.0 پشتیبانی از اتصالات HTTP را بهبود بخشیده است.

WSDL خود XML است، زیرمجموعه ای که به طور رسمی یک وب سرویس را توصیف می کند. توضیح WSDL یک وب سرویس را به عنوان قرارداد API آن با مشتری در نظر بگیرید. WSDL آدرس، روش‌های قابل قبول انتقال اطلاعات، رابط‌ها و انواع پیام سرویس وب را مشخص می‌کند. به طور خلاصه، توضیحات WSDL شامل تمام اطلاعاتی است که یک کلاینت برای استفاده از یک وب سرویس نیاز دارد.

کاربرد WSDL فراتر از استفاده از آن به عنوان یک قرارداد API است. بودن تعریف رسمی، WSDL را می توان توسط نرم افزاری استفاده کرد که اجرای وب سرویس ها را برای عملیات هایی مانند:

  • در حال تولید کد منبعبرنامه مشتری و سرور برای وب سرویس در زبان های برنامه نویسی مختلف
  • انتشار وب سرویس
  • تست وب سرویس پویا

اکثریت نرم افزاربرای کار با خدمات وب شامل پشتیبانی از WSDL 1.1 است. اخیراً تعداد ابزارهای توسعه وب سرویس که از WSDL 2.0 پشتیبانی می کنند در حال افزایش است. پروژه وب آپاچیخدمات شامل دو پروژه فرعی است که در حال حاضر از WSDL 2.0 پشتیبانی می کنند. Woden یک تحلیلگر WSDL 2.0 مبتنی بر جاوا است. پروژه خدمات وب آپاچی همچنین یک تبدیل XSL (XSLT) WSDL 2.0 به نام ارائه می کند چاپگر زیبا WSDL 2.0، که خوانایی بهتر سند WSDL را برای انسان فراهم می کند. Axis2 یک موتور خدمات وب محبوب (همچنین از Apache) است که کد جاوا مشتری و سرور را از یک سند WSDL 2.0 تولید می کند.

شرح یک وب سرویس REST با استفاده از WSDL 2.0

شما یک کتابفروشی ایجاد می کنید که یک URL پیشرفته دارد: http://www.bookstore.com. شما قبلاً دو سرویس وب REST ایجاد کرده اید:

  • فهرست کتاب - این سرویس فهرستی از کتاب های فروخته شده توسط شما را دریافت می کند.
  • جزئیات کتاب - این سرویس اطلاعات مربوط به یک کتاب خاص را دریافت می کند.

پاسخ در اسناد XML برگردانده می شود.

عنصر رابطفهرستی از عملیات وب سرویس، شامل توضیحات ورودی، خروجی، و پیام های خطا برای عملیات و همچنین ترتیب ارسال را تعریف می کند.

عنصر الزام آورابزار ارتباط بین مشتری و وب سرویس را تعیین می کند. در مورد سرویس های وب REST، HTTP به عنوان وسیله ارتباطی مشخص می شود.

عنصر سرویس آدرس‌های سرویس وب را با رابط‌ها و پیوندهای خاص مرتبط می‌کند. (یعنی مطابقت بین URL عملیات وب سرویس و عنصر را تنظیم می کند الزام آور).

لیست کتاب را به HTTP متصل کنید

عنصر الزام آوراتصال وب سرویس به یک پروتکل انتقال داده خاص را مشخص می کند. برای اتصال سرویس فهرست کتاب به HTTP، باید مقدار http://www.w3.org/ns/wsdl/http را برای ویژگی مشخص کنید. نوععنصر الزام آور.

عنصر الزام آورممکن است به صورت اختیاری به رابط. صفت را ترک کنید رابطخالی. آن را در آن ایجاد خواهید کرد بخش بعدی. اگر رابطمرتبط با الزام آور، سپس الزام آوریک عنصر می تواند به صورت اختیاری عنصر فرزند را تعریف کند عمل، که آینه برای عملیات رابطعنصر شما باید یک خرد عنصر ایجاد کنید عملو لینک را پر کنید عملبعد از خلقت رابط.

4 روش ارتباطی HTTP وجود دارد

  • حذف

سرویس فهرست کتاب درخواست را می خواند و بر اساس آن با استفاده از HTTP GET عمل می کند. متد GET را برای عنصر operatioin با استفاده از ویژگی روش از فضای نام WSDL 2.0 HTTP تنظیم کنید. برای استفاده از این ویژگی، ابتدا باید فضای نام http://www.w3.org/ns/wsdl/http را روی عنصر تعریف کنید. شرح.

خدمات صحافی فهرست کتاب در فهرست زیر تعریف شده است. اکنون مشخص کنید الزام آوردر عنصر نقطه پایانی: tns:BookListHTTPBinding.

سرویس فهرست کتاب کتابفروشی.

تعریف عملیات خدمات فهرست کتاب

تا اینجا شما یاد گرفته اید که چگونه صحبت کنید و ارتباط برقرار کنید بافهرست کتاب وب سرویس. در مرحله بعد عملیات سرویس فهرست کتاب را مشخص می کنید که شرح می دهد چهخدمات فهرست کتاب انجام می دهد.

بنابراین، نحوه تنظیم آدرس و تنظیم binding (روش ارتباط) برای وب سرویس را یاد گرفته اید. در مرحله بعد، باید یک عملیات سرویس را تنظیم کنید، که مشخص می کند وب سرویس فهرست کتاب چه کاری انجام می دهد.

عنصر رابط و عنصر عملیات فرزند آن برای تعریف عملیات سرویس استفاده می شود. در مورد لیست کتاب، شما یک عملیات واحد، getBookList را تعریف می کنید که لیستی از کتاب ها را برمی گرداند.

در مرحله بعد، سه ویژگی برای عنصر عملیات تعریف کنید:

الگو

برای تعیین الگوی پیام استفاده می شود الگوی تبادل پیام(MEP) برای عملیات. MEP توالی پیام ها را برای یک عملیات و جهت آنها تعریف می کند. در این مورد، باید مقدار http://www.w3.org/ns/wsdl/in-out را مشخص کنید تا نشان دهد که وب سرویس یک پیام ورودی دریافت می کند که فهرستی از کتاب ها را می خواهد، و یک پیام خروجی را برای درخواست ارسال می کند. لیستی از کتاب ها برای حمایت از این نماینده پارلمان، فرزندان را مشخص کنید ورودیو خروجیبرای عنصر عمل. این عناصر از عناصر توضیح داده شده در طرح XML برای تعریف ساختار پیام استفاده می کنند. جزئیات در بخش بعدی

سبک

برای نشان دادن اطلاعات اضافی در مورد شغل استفاده می شود. مقدار http://www.w3.org/ns/wsdl/style/iri را مشخص کنید، که محدودیت‌هایی را بر محتوای عناصر ورودی اعمال می‌کند، مانند اینکه فقط از عناصر طرحواره XML استفاده کند.

wsdlx: امن

wsdlx:safe: از فضای نام پسوندهای WSDL، این ویژگی اعلام می کند که این عملیات فاقد قدرت است. این نوع عملیات منبع را تغییر نمی دهد و بنابراین می توان چندین بار با نتایج یکسان فراخوانی کرد. برای استفاده از این عنصر، فضای نام پسوند WSDL را http://www.w3.org/ns/wsdl-extensions در عنصر توضیحات اعلام کنید.

این ویژگی از فضای نام پسوند WSDL است. تعیین می کند که عملیات است ناتوان. این عملیات منبع را تغییر نمی دهد، بنابراین می توان آن را چندین بار با نتایج یکسان فراخوانی کرد. برای استفاده از این عنصر، باید پسوندهای WSDL فضای نام را http://www.w3.org/ns/wsdl-extensions در عنصر ریشه (عنصر توضیحات) اعلام کنید.

می توانید الگوهای تبادل پیام از پیش تعریف شده، سبک ها و تعاریف wsdlx:safe را در WSDL 2.0 Part 2: Adjuncts بیابید.

در زیر تعریف سرویس فهرست کتاب با توضیحات اضافه شده است رابط. پس از افزودن اینترفیس، اکنون می توانید عنصر عملیات binding را تغییر دهید تا پیوندهایی را به موارد توصیف شده مشخص کنید رابطو عمل.

صحافی HTTP RESTful برای سرویس فهرست کتاب. سرویس فهرست کتاب کتابفروشی.

تعریف پیام های خدمات عملیات فهرست کتاب

سرویس وب فهرست کتاب از دو پیام استفاده می کند: ورودی و خروجی. شما باید ساختار این پیام ها را توصیف کنید تا برنامه های سرویس گیرنده بدانند چه چیزی را به سرویس ارسال کنند و چه چیزی را انتظار دارند.

WSDL 2.0 از چندین نوع سیستم برای توصیف محتوای پیام پشتیبانی می کند، اما طرحواره XML تنها مورد استفاده است. این بخش جزئیات طرحواره XML را پوشش نمی دهد. طرح XML در بسیاری از برنامه های کاربردی دیگر مانند WSDL 1.1 استفاده می شود و مقالات خوبی در مورد آن وجود دارد. این بخش نحوه استفاده از طرح XML برای سرویس وب فهرست کتاب REST و نحوه استفاده از ویژگی های اضافی تعریف شده توسط WSDL 2.0 برای حاشیه نویسی یک ویژگی طرحواره را برجسته می کند.

WSDL 2.0 از بسیاری از سیستم های تعریف نوع پشتیبانی می کند، اما در عمل فقط از طرح XML استفاده می شود. این مقاله به جزئیات در مورد طرحواره XML نمی پردازد. طرحواره XML در بسیاری از برنامه های کاربردی دیگر مانند WSDL 1.1 استفاده می شود و بسیاری از آنها وجود دارد مقالات خوبدرباره ی او. (). این بخش نشان می دهد کاربرد XMLطرحواره در رابطه با مثال خاص REST سرویس فهرست کتاب، و همچنین استفاده از ویژگی‌های اضافی تعریف‌شده در WSDL 2.0 برای حاشیه‌نویسی ویژگی طرحواره.

برای توصیف 2 پیام برای فهرست کتاب، باید 2 عنصر کلی را توصیف کنید.

  • getBookListپیام ورودی را نشان می دهد. این شامل یک دنباله از عناصر، از جمله هر پارامتر درخواست مجاز برای سرویس است: مقام، عنوان، ناشر، موضوعو زبان. فقط عناصر را می توان در پیام getBookList استفاده کرد زیرا سبک IRI برای عملیات رابط انتخاب شده است.
  • فهرست کتابپیام خروجی را نشان می دهد. این شامل مجموعه ای از عناصر کتاب است. هر عنصر کتاب به نوبه خود دارای ویژگی های عنوان و آدرس اینترنتی است. ویژگی عنوان خود توضیحی است. ویژگی url پیوندی به سرویس جزئیات کتاب است که برمی‌گردد اطلاعات دقیقدر مورد یک کتاب خاص

تعریف ویژگی url شما به نوبه خود از 2 ویژگی از فضای نام پسوند WSDL استفاده می کند. ویژگی های wsdlx:interface و wsdlx:binding رابط و binding را برای سرویس مشخص می کنند. نرم افزارممکن است از این اطلاعات استفاده کند یافتن خودکارسرویس. برای استفاده از این ویژگی ها، فضای نام گسترش WSDL را برای عنصر مشخص کنید طرحواره. همچنین فضای نام جزئیات کتاب را از توضیحات WSDL 2.0 درج کنید.

طرح XML برای سرویس فهرست کتاب در زیر آورده شده است.

عنصر درخواست برای سرویس فهرست کتاب. عنصر پاسخ برای سرویس فهرست کتاب.

برای ارجاع عناصر ورودی و خروجی، باید طرحواره را در سند WSDL خود وارد کنید. برای وارد کردن طرحواره، همانطور که در لیست زیر نشان داده شده است، از عنصر واردات طرحواره در بخش انواع استفاده کنید. علاوه بر این، باید ارجاعاتی را به عناصر getBookList و Booklist در عناصر ورودی و خروجی عملیات رابط اضافه کنید و فضاهای نام طرحواره XML لیست کتاب را به عنصر ریشه WSDL اضافه کنید.

WSDL آماده برای سرویس وب فهرست کتاب.

این یک شرح WSDL 2.0 از فهرست خدمات کتابفروشی نمونه برای به دست آوردن اطلاعات کتاب است. این عملیات فهرستی از کتاب ها را برمی گرداند. صحافی HTTP RESTful برای سرویس فهرست کتاب. سرویس فهرست کتاب کتابفروشی.

یادداشت مترجم

من این آزادی را گرفتم که خلاصه و پیوندها را ترجمه نکنم. برای هر دو به نویسنده مراجعه کنید. در مقاله اصلی باید بگم زبان اصلی خیلی سخته. با این حال، امیدوارم مقاله مفید واقع شود.

صفحه 2 از 3

توضیحات با استفاده از WSDL

اگر همه چیز در مورد وب سرویس شناخته شده باشد، SOAP بسیار خوب کار می کند. اما همیشه هم به این صورت نیست. ابزار توصیف رابط برای دسترسی به یک وب سرویس، زبان WSDL (زبان توصیف خدمات وب) است. این استاندارد به طور مشترک توسط IBM، Microsoft و webMethods توسعه یافته است. هر یک از این سه شرکت رویکرد خاص خود را برای توسعه استانداردی برای توصیف خدمات وب داشتند: IBM NASSL را ایجاد کرد، مایکروسافت SCL را توسعه داد و webMethods با WIDL آمد.

نتیجه همکاری آنها نسخه 1.1 بود زبان WSDLدر مورد W3C، باید توجه داشت که، مانند SOAP، کنسرسیوم W3C بر اساس نسخه 1.1 WSDL 1.2 ساخته شده است، که اکنون یک توصیه W3C است. توضیحات WSDL یک سرویس وب شامل تمام اطلاعات لازم برای استفاده از سرویس است، از جمله روش های موجودو پارامترهای آنها این اطلاعات در پنج عنصر زیر موجود است:

  • - پروتکل های پشتیبانی شده
  • - پیام های وب سرویس (درخواست، پاسخ).
  • تمام روش های موجود
  • - URI سرویس.
  • - انواع داده های مورد استفاده

تمام این اطلاعات در عنصر ریشه توضیحات WSDL ذخیره می شود لیست زیر نمونه ای از WSDL ,توضیحات یک سرویس وب را نشان می دهد.

توضیحات WSDL سرویس وب

بله... بدون لیوان نمی توانید آن را بفهمید، اما این یکی از ساده ترین (!) فایل های WSDL است. متأسفانه، یکی از اشکالات پسوند SOAP برای PHP 5 این است که بر خلاف سایر پیاده سازی های SOAP، توصیفات WSDL را به طور خودکار تولید نمی کند (حداقل هنوز). مطمئنا این نقص در نسخه های بعدی PHP اصلاح خواهد شد.

راستی!

برای تولید خودکار توضیحات WSDL، می توانید از پیاده سازی های جایگزین پروتکل SOAP در PHP استفاده کنید:

جستجوی دایرکتوری با استفاده از UDDI

اکنون که می دانیم چگونه اطلاعاتی در مورد یک وب سرویس به دست آوریم و چگونه آن را پرس و جو کنیم، باید بیاموزیم که چگونه چنین سرویسی را پیدا کنیم. برای این منظور چیزی شبیه به Yellow Pages وجود دارد، یعنی UBR (Universal Business Registries) Registries - Web Service Directory.

چندین رجیستری از این قبیل وجود دارد، از جمله رجیستری های IBM، Microsoft، NTT-Com و SAP. این رجیستری ها داده های خود را همگام می کنند، بنابراین می توانید از هر یک از آنها استفاده کنید. نسخه فعلی استاندارد UDDI UDDI 3.0 است، اگرچه اکثر پیاده سازی ها از نسخه 2 استفاده می کنند. توسعه دهندگان این استاندارد شامل شرکت های غول پیکری مانند HP، Intel، Microsoft و Sun هستند.

برای تعامل با UBR وجود دارد دو نوع API: Inquiry API و Publish API. رابط Inquiry API (درخواست) برای درخواست استخدمات در رجیستری UBR و رابط Publish API به توسعه دهندگان اجازه می دهد خدمات خود را ثبت کنند. به نظر می رسد فقط زمان زیادی است که محتویات رجیستری ها با هرزنامه پر شود :)

راستی!

ثبت‌های آزمایشی برای آزمایش ثبت‌نام‌های خدماتی قبل از قرار دادن آنها در ثبت‌های «واقعی» طراحی شده‌اند.

یک درخواست وب سرویس به این صورت است:

sortByNameAsc sortByDateDesc % راهنما %

در مثال بالا، می بینید که درخواست UDDI در یک پیام SOAP کپسوله شده است، بنابراین کاملا آشنا به نظر می رسد. پاسخ به درخواست نیز یک سند SOAP است که در زیر نشان داده شده است:

تور خدمات وب نمونه خدمات وب برای راهنمای راهنمای تور خدمات قیمت سهام تور با راهنما

نصب و راه اندازی

نصب پسوند SOAP برای PHP5 بسیار آسان است. در ویندوز، این ماژول در زیر شاخه ext دایرکتوری نصب PHP قرار دارد. برای استفاده از آن، باید خط زیر را به فایل php.ini اضافه کنید: extension=php_soap.dllبرای کار، این ماژول نیاز دارد که حداقل در نسخه ویندوز به طور پیش فرض در PHP 5 گنجانده شود.

یک بار آنها وظیفه شروع توسعه خدمات وب را به من دادند و بدون هیچ توضیحی منابع یک پروژه ساده را به من دادند. این پروژه البته شروع نشد. من همچنین نمی دانستم بهار چیست و چگونه کار می کند. همچنین نتوانستم مقالات کافی در مورد توسعه خدمات وب با استفاده از Spring، چه به زبان روسی و چه به زبان انگلیسی، پیدا کنم. من باید خودم آن را کشف می کردم، اما معلوم شد که آنقدرها هم ترسناک نیست.
و اخیراً تصمیم گرفتم ببینم چه ویژگی های جدیدی از آن زمان به Spring اضافه شده است و سرویس های قدیمی را به روز کنم که در نتیجه باعث شد این مقاله را بنویسم.

این مقاله راهنمایی برای توسعه یک وب سرویس ساده با استفاده از پروتکل SOAP با استفاده از Spring-WS است.

و بنابراین، ما ساده ترین سرویسی را که نام کاربری را می پذیرد و پیام تبریک و زمان فعلی را روی سرور ارسال می کند، می نویسیم.

چه چیزی نیاز داریم؟
  • IDE. من از Eclipse استفاده می کنم.
آماده شدن برای کار
بیایید یک پروژه کاربردی وب جدید ایجاد کنیم. در Eclipse این است: "File => New => Dynamic Web Project".
نام پروژه را گذاشتم: HelloService.
در مرحله بعد، کتابخانه ها را از Spring، XMLBean، wsdl4j، commons-logging در دایرکتوری پروژه WEB-INF/lib کپی کنید.
در صورت تمایل، می توانید آنها را به کتابخانه های سرور اضافه کنید تا با هر برنامه حمل نشوند.
ایجاد یک طرحواره WSDL
اساساً یک طرحواره WSDL برای توصیف یک سرویس طراحی شده است.
البته، ما آن را به صورت دستی ایجاد نمی کنیم. این طرح به طور خودکار با استفاده از Spring ایجاد می شود، اما در ادامه بیشتر در مورد آن توضیح خواهیم داد.
تعریف داده های ورودی و خروجی
داده های ورودی:
  • نام رشته
خروجی:
  • سلام رشته;
  • زمان، زمان فعلی است.
ایجاد شرح داده های ورودی و خروجی
در پوشه WEB-INF، فایل HelloService.xsd را ایجاد کنید. این فایلبرای تولید طرحواره WSDL و ایجاد کلاس های جاوا مربوطه مورد نیاز است.
متن فایل:

صفت فضای نام target– فضای نام مورد استفاده آن ها تمام اشیاء ایجاد شده در بسته org.example.helloService قرار خواهند گرفت.
عناصر درخواست خدماتو ServiceResponseداده های ورودی و خروجی (درخواست/پاسخ) را به ترتیب توصیف کنید.
ویژگی های کوچک اتفاق می افتدو maxOccursتعداد تکرارهای یک جزء معین را در یک عنصر تعیین کنید. اگر این پارامترها مشخص نشده باشند، به طور پیش فرض برابر با 1 در نظر گرفته می شوند. برای یک جزء اختیاری، باید minOccurs=0 را مشخص کنید. با تعداد نامحدود مؤلفه: maxOccurs=unbounded.
می توانید در مورد طرحواره های XML بیشتر بخوانید.
ایجاد JavaBeans
بر اساس طرح ایجاد شده، کلاس های جاوا را ایجاد خواهیم کرد. برای انجام این کار، یک فایل build.xml ایجاد کنید:

پارامتر WS_HOMEباید به دایرکتوری که XMLBeans در آن قرار دارد اشاره کند.
HelloService.xsd– مسیر مدار ایجاد شده
lib\helloservice.jar– ایجاد کتابخانه جاوا

بعد، Ant-build را اجرا کنید (امیدوارم قبلا آن را نصب کرده باشید).
در Eclipse می توانید آن را به این صورت اجرا کنید: RMB در فایل build.xml => Run As => Ant Build.
اگر از طریق خط فرمان:
ant -buildfile build.xml
خب ما منتظریم تا ساخت و ساز به پایان برسد. پس از آن، می‌توانیم فهرست راهنمای پروژه WEB-INF\lib را برای وجود کتابخانه مربوطه (helloservice.jar) بررسی کنیم.

اجرای خدمات
یک کلاس رابط و سرویس ایجاد کنید
رابط سرویس: HelloService.java:
بسته org.example; وارد کردن java.util.Calendar. رابط عمومی HelloService ( رشته عمومی getHello (نام رشته) Exception را پرتاب می کند؛ تقویم عمومی getCurrentTime();)
اجرای سرویس: HelloServiceImpl.java:
بسته org.example; وارد کردن java.util.Calendar. وارد کردن org.springframework.stereotype.Service; کلاس عمومی @Service HelloServiceImpl HelloService را پیاده سازی می کند ( رشته عمومی getHello(نام رشته) Exception را می زند ( بازگشت "Hello, " + name + "!"; ) Calendar عمومی getCurrentTime() ( بازگشت Calendar.getInstance(); ) )
این کد به نظر من نیازی به نظر ندارد. تنها چیزی که ممکن است برای افرادی که قبلاً با بهار مواجه نشده اند سؤال ایجاد کند، حاشیه نویسی سرویس @ است. اما من کمی بعداً در این مورد به شما خواهم گفت.
نقطه پایانی
Endpoint – کلاسی که مسئول پردازش درخواست های دریافتی (نوعی نقطه ورود) خواهد بود.

فایل HelloServiceEndpoint.java را ایجاد کنید:
بسته org.example; واردات org.springframework.beans.factory.annotation.Autowired; وارد کردن org.springframework.ws.server.endpoint.annotation.Endpoint. وارد کردن org.springframework.ws.server.endpoint.annotation.PayloadRoot. وارد کردن org.example.helloService.ServiceRequestDocument; وارد کردن org.example.helloService.ServiceRequestDocument.ServiceRequest; وارد کردن org.example.helloService.ServiceResponseDocument. وارد کردن org.example.helloService.ServiceResponseDocument.ServiceResponse. کلاس عمومی @Endpoint HelloServiceEndpoint( private static end String namespaceUri = "http://www.example.org/HelloService"؛ HelloService خصوصی helloService؛ @Autowired public void HelloService (HelloService helloService) ( this.helloService = helloService; localPart = "ServiceRequest", namespace = namespaceUri) public ServiceResponseDocument getService(ServiceRequestDocument درخواست) Exception را پرتاب می کند ( ServiceRequestDocument reqDoc = درخواست؛ ServiceRequest req = reqDoc.getServiceRequest();(ServiceResponseDocumentRequest. se resp = respDoc. addNewServiceResponse()؛ نام کاربری رشته = req.getName()؛ رشته helloMessage = testNewService.getHello(userName)؛ تقویم currentTime = testNewService.getCurrentTime(); resp.setHello(helloMessage)؛ respime(return.setCurrent); )
اینجا چه کاری انجام شده است؟
حاشیه نویسی @Endpointدقیقاً آن را تعیین می کند این کلاسدرخواست های دریافتی را پردازش خواهد کرد.
namespaceUri– همان فضای نامی که هنگام ایجاد طرح xml مشخص شده است.

حالا بیایید کمی به عقب برگردیم و حاشیه نویسی را به خاطر بسپاریم @سرویس. بدون اینکه وارد جزئیات شویم تا خواننده را بیش از حد بار نکنیم اطلاعات غیر ضروری، سپس این حاشیه نویسی به Spring می گوید که شی مناسب را ایجاد کند @Autowiredبرای تزریق استفاده می شود ( تعویض خودکار) از شی مربوطه. البته در هنگام ساخت برنامه های کاربردی سادهاستفاده از این حاشیه نویسی فایده ای ندارد، اما من همچنان تصمیم گرفتم آنها را در این مثال حذف نکنم.

بقیه، دوباره، همه چیز باید روشن باشد. لطفا توجه داشته باشید که ServiceRequest، ServiceResponse و غیره. – اینها دقیقاً کلاس هایی هستند که بر اساس طرح xml ما ایجاد شده اند.

پیکربندی سرویس فنری
اکنون پایان نزدیک است.
فایل service-ws-servlet.xml را ایجاد کنید.

sws: annotation-driven- دقیقا می گوید که در این پروژهحاشیه نویسی استفاده می شود.
آ متن:کامپوننت-اسکننشان دهنده بسته ای است که حاشیه نویسی ها در آن جستجو می شوند و جستجو نیز در بسته های فرعی انجام می شود.

دو سطل بعدی همیشه بدون تغییر خواهند بود. ماهیت آنها دریافت و تبدیل یک درخواست از Xml به یک شی جاوا و تبدیل معکوس بیشتر است.

sws:dynamic-wsdlمسئول است تولید خودکارسند WSDL بر اساس طرح XML ایجاد شده.
محلمسیر رسیدن به طرحواره را نشان می دهد.
locationUri- آدرس (نسبت به ظرف) که در آن طرح WSDL در دسترس خواهد بود.
در مورد من WSDL در آدرس زیر موجود است:
localhost/HelloService/HelloService.wsdl

توصیفگر استقرار
و در نهایت، آخرین مورد.
در پوشه WEB-INF فایل web.xml را تغییر داده یا ایجاد می کنیم.
سلام سرویس سلام سرویس service-ws org.springframework.ws.transport.http.MessageDispatcherServlet transformWsdlLocations درست است، واقعی service-ws /*
من دیگر این فایل را شرح نمی دهم؛ بیشتر مردم باید قبلاً آن را بدانند. برای پروژه های ساده، اساساً نباید تغییر کند. فقط شایان ذکر است که نام سرولت (servlet-name) باید با نام فایل پیکربندی سرویس Spring مطابقت داشته باشد. service-ws-servlet.xml.
بررسی عملکرد
اولین نشانه عملکرد صحیحطرحواره WSDL تولید شده است.
برای بررسی، کافی است به آدرس این طرح (http://localhost/HelloService/HelloService.wsdl) بروید و ببینید: فایل xml باید در آنجا نمایش داده شود. اگر چیزی نمایش داده نشد یا خطایی ظاهر شد، کل مقاله را دوباره با دقت بخوانید و به دنبال اشتباهی باشید که انجام دادیم.

برای آزمایش بیشتر به soapUI نیاز داریم (نسخه 3.0.1 را دارم).
آن را نصب و راه اندازی کنید.
یک پروژه جدید ایجاد کنید: File => New soapUI Project. در قسمت Initial WSDL/WADL، پیوندی به طرح WSDL (http://localhost/HelloService/HelloService.wsdl) وارد کنید.
در پروژه ایجاد شده، درخواست مورد نیاز را باز کنید.

نام را در قسمت نام وارد کنید و روی دکمه "ارسال درخواست" کلیک کنید


در نتیجه ما از سرور پاسخی با سلام و زمان فعلی دریافت می کنیم.


اگر مشکلی پیش آمد، این مقاله را دوباره بخوانید.

بعدش چی؟
خب، مرحله بعدی نوشتن یک کلاینت برای این وب سرویس است. اما این در حال حاضر برای مقاله دیگری است که در صورت علاقه مندی این مطالب ممکن است بعداً نوشته شود.

بهترین مقالات در این زمینه