وب سرویس ها برنامه های کاربردی وب مبتنی بر استاندارد باز (XML، SOAP، HTTP و … ) هستند که با سایر برنامه های کاربردی وب به منظور تبادل داده در تعامل هستند. وب سرویس ها می توانند برنامه های کاربردی موجود شما را به برنامه های درون وب تبدیل کند. در این آموزش یاد می گیرید که وب سرویس ها دقیقا چیست و چرا و چگونه از آنها استفاده کنید.
این یک آموزش ابتدایی است که مفاهیم وب سرویس ها را معرفی می کند. لازم نیست دانش قبلی از هیچ فناوری خاصی داشته باشید، اما مطمئناً اگر درک اولیه ای از مفاهیم XML، HTTP، TCP/IP داشته باشید، کار شما را راحت می کند.
اجزای وب سرویس
بستر اصلی خدمات وب XML + HTTP است. همه سرویس های وب استاندارد با استفاده از اجزای زیر کار می کنند –
SOAP (پروتکل دسترسی به اشیاء ساده)
UDDI (توضیحات جهانی، کشف و ادغام)
WSDL (زبان شرح خدمات وب)
وب سرویس چگونه کار می کند؟
یک وب سرویس با استفاده از استانداردهای باز مانند HTML، XML، WSDL و SOAP ارتباط بین برنامه های مختلف را امکان پذیر می کند. یک وب سرویس از :
- XML برای برچسب گذاری داده ها
- SOAP برای انتقال پیام
- WSDL برای توصیف در دسترس بودن سرویس.
شما می توانید یک وب سرویس مبتنی بر جاوا در Solaris بسازید که از طریق برنامه ویژوال بیسیک شما که روی ویندوز اجرا می شود قابل دسترسی است.
همچنین میتوانید از سی شارپ برای ساخت سرویسهای وب جدید در ویندوز استفاده کنید که میتوانند از برنامه وب شما که مبتنی بر JavaServer Pages (JSP) است و روی لینوکس اجرا میشود، فراخوانی کنید.
مثال :
یک سیستم ساده مدیریت حساب و پردازش سفارش را در نظر بگیرید. پرسنل حسابداری از یک برنامه کاربردی مشتری ساخته شده با ویژوال بیسیک یا JSP برای ایجاد حساب های جدید و وارد کردن سفارشات مشتری جدید استفاده می کنند.
منطق پردازش این سیستم به زبان جاوا نوشته شده است و بر روی یک ماشین سولاریس قرار دارد که همچنین با یک پایگاه داده برای ذخیره اطلاعات تعامل دارد.
مراحل انجام این عملیات :
- برنامه مشتری اطلاعات ثبت حساب را در یک پیام SOAP دسته بندی می کند.
- این پیام SOAP به عنوان متن درخواست HTTP POST به وب سرویس ارسال می شود.
- وب سرویس درخواست SOAP را باز می کند و آن را به دستوری تبدیل می کند که برنامه بتواند آن را درک کند.
- برنامه اطلاعات را همانطور که لازم است پردازش می کند و با یک شماره حساب منحصر به فرد جدید برای آن مشتری پاسخ می دهد.
- سپس، وب سرویس پاسخ را در یک پیام SOAP دیگر بسته بندی می کند، که در پاسخ به درخواست HTTP خود، آن را به برنامه مشتری ارسال می کند.
- برنامه مشتری پیام SOAP را برای به دست آوردن نتایج فرآیند ثبت حساب باز می کند.
چرا از وب سرویس ها استفاده میکنیم ؟
وب سرویس واحدی از کد مدیریت شده است که می تواند از راه دور با استفاده از HTTP فراخوانی شود. یعنی با استفاده از درخواست های HTTP می توان آن را فعال کرد. وب سرویس به شما این امکان را می دهد که عملکرد کدهای موجود خود را از طریق شبکه نمایش دهید. هنگامی که در شبکه نمایش داده شد، سایر برنامه ها می توانند از عملکرد برنامه شما استفاده کنند.
قابلیت همکاری
وب سرویس ها به برنامه های مختلف اجازه می دهند با یکدیگر صحبت کنند و داده ها و خدمات را بین خود به اشتراک بگذارند. سایر برنامه ها نیز می توانند از وب سرویس ها استفاده کنند. به عنوان مثال، یک برنامه VB یا .NET می تواند با وب سرویس های جاوا صحبت کند و بالعکس. از وب سرویس برای مستقل کردن پلتفرم برنامه و فناوری استفاده می شود.
پروتکل استاندارد
خدمات وب از پروتکل استاندارد صنعتی برای ارتباطات استفاده می کنند. هر چهار لایه (Service Transport، XML Messaging، Service Description و Service Discovery لایه ها) از پروتکل های کاملاً تعریف شده در پشته(Stack) پروتکل سرویس های وب استفاده می کنند. این استانداردسازی پشته پروتکل مزایای زیادی مانند گستره وسیعی از انتخاب ها، کاهش هزینه به دلیل رقابت و افزایش کیفیت را به کسب و کار می دهد.
ارتباطات کم هزینه
سرویسهای وب از SOAP روی پروتکل HTTP استفاده میکنند، بنابراین میتوانید از اینترنت کمهزینه موجود خود برای پیادهسازی خدمات وب استفاده کنید. این راه حل در مقایسه با راه حل های اختصاصی مانند EDI/B2B هزینه بسیار کمتری دارد. علاوه بر SOAP از طریق HTTP، وب سرویس ها میتواند بر روی سایر مکانیسمهای انتقال امن مانند FTP نیز پیادهسازی شود.
مبتنی بر XML
وب سرویس ها از XML در لایه های نمایش داده و انتقال داده استفاده می کنند. استفاده از XML هرگونه ارتباط شبکه، سیستم عامل یا پلتفرم را در دسترسی به اطلاعات حذف می کند. برنامه های کاربردی مبتنی بر وب سرویس ها میتوانند از آنها برای خود استفاده کنند همچنین در سطح اصلی خود بسیار قابلیت همکاری دارند.
ساختار اجزای آن
طی چند سال گذشته، سه فناوری اصلی به عنوان استانداردهای جهانی که هسته اصلی فناوری وب سرویس های امروزی را تشکیل میدهند، ظهور کردهاند. این فناوری ها در زیر مورد بحث قرار می گیرند.
XML-RPC
- این ساده ترین پروتکل مبتنی بر XML برای تبادل اطلاعات بین رایانه ها است.
- XML-RPC یک پروتکل ساده است که از پیام های XML برای انجام RPC استفاده می کند.
- درخواست ها در XML کدگذاری شده و از طریق HTTP POST ارسال می شوند.
- پاسخ های XML در بدنه پاسخ HTTP تعبیه شده است.
- XML-RPC مستقل از پلتفرم است.
- XML-RPC به برنامه های مختلف اجازه می دهد تا ارتباط برقرار کنند.
- یک کلاینت جاوا می تواند XML-RPC را با سرور Perl صحبت کند.
- XML-RPC ساده ترین راه برای شروع کار با خدمات وب است.
SOAP
- SOAP یک پروتکل مبتنی بر XML برای تبادل اطلاعات بین کامپیوترها است.
- SOAP یک پروتکل ارتباطی است.
- SOAP برای ارتباط بین برنامه ها است.
- SOAP قالبی برای ارسال پیام است.
- SOAP برای برقراری ارتباط از طریق اینترنت طراحی شده است.
- SOAP مستقل از پلتفرم است.
- SOAP مستقل از زبان است.
- SOAP ساده و قابل گسترش است.
- SOAP به شما امکان می دهد فایروال ها را دور بزنید.
- SOAP به عنوان استاندارد W3C توسعه خواهد یافت.
WSDL
WSDL یک زبان مبتنی بر XML برای توصیف خدمات وب و نحوه دسترسی به آنها است.
WSDL مخفف Web Services Description Language است.
WSDL به طور مشترک توسط مایکروسافت و IBM توسعه یافته است.
WSDL یک پروتکل مبتنی بر XML برای تبادل اطلاعات در محیط های غیرمتمرکز و توزیع شده است.
WSDL فرمت استاندارد برای توصیف یک وب سرویس است.
تعریف WSDL نحوه دسترسی به یک وب سرویس و عملیاتی را که انجام خواهد داد را شرح می دهد.
WSDL زبانی است برای توصیف نحوه ارتباط با سرویس های مبتنی بر XML.
WSDL بخشی جدایی ناپذیر از UDDI، یک ثبت کسب و کار در سراسر جهان مبتنی بر XML است.
WSDL زبانی است که UDDI از آن استفاده می کند.
WSDL به صورت ‘wiz-dull’ تلفظ می شود و به صورت ‘W-S-D-L’ نوشته می شود.
برای کسب اطلاعات بیشتر در مورد WSDL، از آموزش WSDL ما دیدن کنید.
UDDI
UDDI یک استاندارد مبتنی بر XML برای توصیف، انتشار و یافتن خدمات وب است.
UDDI مخفف Universal Description, Discovery, and Integration است.
UDDI یک مشخصات برای یک رجیستری توزیع شده از خدمات وب است.
UDDI چارچوبی باز و مستقل از پلتفرم است.
UDDI می تواند از طریق SOAP، CORBA و پروتکل جاوا RMI ارتباط برقرار کند.
UDDI از WSDL برای توصیف واسط ها به سرویس های وب استفاده می کند.
UDDI با SOAP و WSDL به عنوان یکی از سه استاندارد پایه خدمات وب دیده می شود.
UDDI یک ابتکار منبع باز است که به کسبوکارها امکان میدهد یکدیگر را کشف (پیدا) کنند و نحوه تعاملشان را از طریق اینترنت تعریف کنند.
امنیت
امنیت برای خدمات وب بسیار مهم است. با این حال، نه XML-RPC و نه مشخصات SOAP هیچ الزام امنیتی یا احراز هویت صریحی را ایجاد نمی کنند.
سه مسئله امنیتی خاص در وب سرویس ها وجود دارد
- محرمانه بودن
- احراز هویت
- امنیت شبکه
محرمانه بودن
اگر مشتری درخواست XML را به سرور ارسال کند، آیا میتوانیم اطمینان حاصل کنیم که ارتباط محرمانه باقی میماند؟
XML-RPC و SOAP عمدتاً در بالای HTTP اجرا می شوند.
HTTP از لایه سوکت های امن (SSL) پشتیبانی می کند.
ارتباطات را می توان از طریق SSL رمزگذاری کرد.
SSL یک فناوری اثبات شده و به طور گسترده ای است.
یک وب سرویس واحد ممکن است از زنجیره ای از برنامه ها تشکیل شده باشد. به عنوان مثال، یک سرویس بزرگ ممکن است خدمات سه برنامه دیگر را به هم متصل کند. در این مورد، SSL کافی نیست. پیام ها باید در هر گره در طول مسیر سرویس رمزگذاری شوند و هر گره نشان دهنده یک پیوند ضعیف بالقوه در زنجیره است. در حال حاضر، هیچ راه حل توافقی برای این موضوع وجود ندارد، اما یک راه حل امیدوارکننده، استاندارد رمزگذاری W3C XML است. این استاندارد چارچوبی را برای رمزگذاری و رمزگشایی کل اسناد XML یا فقط بخش هایی از یک سند XML فراهم می کند.
احراز هویت
اگر مشتری به یک وب سرویس متصل شود، چگونه کاربر را شناسایی کنیم؟ آیا کاربر مجاز به استفاده از سرویس است؟
گزینه های زیر را می توان در نظر گرفت، اما توافق روشنی در مورد یک طرح احراز هویت قوی وجود ندارد.
HTTP شامل پشتیبانی داخلی برای احراز هویت اولیه و خلاصه است و بنابراین می توان از خدمات به همان شیوه ای محافظت کرد که اسناد HTML در حال حاضر محافظت می شوند.
SOAP Digital Signature (SOAP-DSIG) از رمزنگاری کلید عمومی برای امضای دیجیتالی پیام های SOAP استفاده می کند. این سرویس گیرنده یا سرور را قادر می سازد تا هویت طرف مقابل را تأیید کند.
امنیت شبکه
در حال حاضر هیچ پاسخ آسانی برای این مشکل وجود ندارد و موضوع بحث های زیادی بوده است. در حال حاضر، اگر واقعاً قصد دارید پیامهای SOAP یا XML-RPC را فیلتر کنید، یک امکان این است که تمام درخواستهای HTTP POST را که نوع محتوای خود را روی text/xml تنظیم میکنند، فیلتر کنید.
جایگزین دیگر فیلتر کردن ویژگی هدر SOAPAction HTTP است. فروشندگان فایروال همچنین در حال توسعه ابزارهایی هستند که به صراحت برای فیلتر کردن ترافیک وب سرویس طراحی شده اند.