اگر در دنیای برنامه نویسی فعالیت دارید احتمالا تا بحال اسم وب سرویس را زیاد شنیده اید. ما بطور روزانه از وب سرویس در اپلیکیشن ها استفاده می کنیم. وب سرویسها می توانند application های شما را به Web-Application تبدیل کنند. در این مقاله به سوال وب سرویس چیست پاسخ می دهیم.
web service یا وب سرویس چیست ؟
در تعریف وب سرویس چیست به زبان ساده می توان گفت web service یک سیستم نرم افزاری برای پشتیبانی از تعامل بین دستگاه و ماشین در شبکه است. به زبان ساده تر، یک سیستم از سیستم دیگری سرویس می گیرد. در تعریفweb service بطور خلاصه می توان گفت:
- وبسرویس ها اجزای یک نرم افزار هستند.
- وب سرویس ها از طریق پروتکل ارتباط برقرار می کنند.
- web service ها نیازی به منابع بیرونی نداشته و اصطلاحا self-contained هستند.
- وب سرویس ها از طریق UDDI قابل جستجو هستند.
- وبسرویس ها توسط application های دیگر قابل استفاده اند.
- XML و HTTP پلت فرم اولیه وبسرویس هاست.
سرویس های وب دارای دو کلاس عمده هستند:
- سازگار با REST
- وب سرویس arbitrary
برای پیاده سازی وب سرویس باید یک دسته را براساس نیاز خود انتخاب کنید. حال که با مفهوم web service چیست آشنا شدید در امتداد این مقاله از ایران هاست ( ارائه دهندهی خدمات خرید سرور اختصاصی ) به نحوه ی کار و مزایا وب سرویس ها می پردازیم.
وب سرویس چگونه کار می کند؟
وب سرویس به عنوان الگوی درخواست پاسخ کار می کند ، نهادی وجود دارد که برای برخی خدمات به همتای خاص خود یعنی نهاد ارائه دهنده خدمات درخواست می کند. در صورت درخواست ، ارائه دهنده خدمات با پیام پاسخ خواهد داد. بنابراین دو پیام وجود دارد که یک درخواست پیام (XML) و یک پیام پاسخ (XML) را بشنوید.
معماریهای وب سرویس ها
برای بررسی معماری وب سرویس ها دو روش وجود دارد:
- اولین مورد بررسی نقش های فردی هر یک از عوامل web service است.
- دوم بررسی پشته پروتکل سرویس وب در حال ظهور است.
نقش های وب سرویس
سه نقش اصلی در معماری سرویس وب وجود دارد:
ارائه دهنده خدمات: این نقش ارائه دهنده خدمات وب است. ارائه دهنده خدمات این سرویس را پیاده سازی می کند و آن را در اینترنت در دسترس قرار می دهد.
درخواست کننده خدمات: این نقش هر مصرف کننده وب سرویس است. درخواست کننده با باز کردن اتصال شبکه و ارسال درخواست XML از یک سرویس وب موجود استفاده می کند.
ثبت خدمات: این نقش یک فهرست خدمات متمرکز منطقی است. رجیستری مکانی مرکزی را در اختیار شما قرار می دهد که توسعه دهندگان می توانند خدمات جدید را منتشر کنند یا خدمات موجود را پیدا کنند. بنابراین به عنوان یک مرکز تصفیه متمرکز برای شرکت ها و خدمات آنها عمل می کند.
پشته (Stack) پروتکل سرویس وب
دومین روش بررسی معماری وب سرویس بررسی پشته پروتکل سرویس وب است. پشته هنوز در حال تکامل است ، اما در حال حاضر دارای چهار لایه اصلی است.
حمل و نقل خدمات: این لایه وظیفه انتقال پیام بین برنامه ها را بر عهده دارد. در حال حاضر ، این لایه شامل Hyper Text Transport Protocol (HTTP) ، Simple Mail Transfer Protocol (SMTP) ، File Transfer Protocol (FTP) و پروتکل های جدیدتری مانند Blocks Extensible Exchange Protocol (BEEP) است.
پیام رسانی XML : این لایه وظیفه رمزگذاری پیام ها در قالب XML مشترک را دارد تا پیام ها در هر دو انتها قابل فهم باشند. در حال حاضر ، این لایه شامل XML-RPC و SOAP است.
شرح خدمات: این لایه وظیفه توصیف رابط عمومی برای یک وب سرویس خاص را دارد. در حال حاضر ، شرح خدمات از طریق زبان توصیف سرویس وب (WSDL) انجام می شود.
کشف سرویس: این لایه وظیفه متمرکز کردن خدمات در یک رجیستری مشترک و ارائه عملکرد انتشار / یافتن آسان را دارد. در حال حاضر ، کشف سرویس از طریق توصیف جهانی ، کشف و یکپارچه سازی (UDDI) انجام می شود.
با تکامل سرویس های وب ، ممکن است لایه های اضافی اضافه شده و فناوری های اضافی به هر لایه اضافه شوند.
ویژگی و مزایای وب سرویس چیست ؟
- استفاده مجدد از کامپوننت های نرم افزاری
Application هایی وجود دارند که اغلب از آنها استفاده می کنیم، حال این سئوال مطرح می شود که چرا باید دوباره و دوباره آنها را ایجاد کنیم؟! وب سرویس ها می توانند کامپوننت های نرم افزارهای مختلف را مانند: تبدیل ارز، گزارش آب و هوا و یا سرویس ترجمه زبانهای مختلف را به شما ارائه دهند.
- اتصال به نرم افزارهای موجود
وب سرویس ها می توانند با یک متد مشخص داده ها و اطلاعات application های مختلف را به هم پیوند داده و از این طریق مشکلات موجود در این همکاری ها را مرتفع کنند. application های مختلف با پلت فرم های مختلف می توانند بوسیله وب سرویس ها با یکدیگر تبادل اطلاعات کنند.
حال که با مفاهیم web service چیست آشنا شدید در امتداد مقاله به بررسی انواع پروتکل web service خواهیم پرداخت.
استانداردهای مورد استفاده در Web Service ( انواع وب سرویس)
استاندارهای مختلفی جهت استفاده و راه اندازی Web Service ها وجود دارد که به آنها پروتکل وب سرویس نیز میگویند.
BEEP: پروتکل مبادله قابل انعطاف (BEEP) چارچوبی برای ایجاد پروتکل های برنامه شبکه است. BEEP شامل بلوک های ساختاری مانند کادربندی ، خطوط لوله ، مالتی پلکس ، گزارش دهی و احراز هویت برای اتصال و پیام های متصل به پروتکل های همتا به همتا (P2P) با پشتیبانی از ارتباطات دو طرفه ناهمزمان است.
E-Business XML: تجارت الکترونیکی با استفاده از زبان نشانه گذاری eXtensible ، که معمولاً به عنوان تجارت الکترونیکی XML یا ebXML شناخته می شود ، خانواده ای از استانداردهای مبتنی بر XML است که توسط OASIS و UN / CEFACT حمایت مالی می شود و مأموریت آن ایجاد زیرساخت مبتنی بر XML است که امکان استفاده جهانی از اطلاعات کسب و کار الکترونیک را فراهم می کند.
Hessian: یک پروتکل سرویس باینری وب است که وب سرویس ها را بدون نیاز به یک چارچوب بزرگ و بدون یادگیری مجموعه جدیدی از پروتکل ها ، قابل استفاده می کند.
Internet Open Trading Protocol: پروتکل معاملات باز اینترنتی (IOTP) یک پروتکل مستقل از سیستم است که برای تجارت الکترونیکی یک چارچوب پرداخت متقابل و استاندارد را فراهم می کند ، که سعی می کند تا آنجا که ممکن است فرآیندهای تجارت در دنیای واقعی را تکرار کند.
JSON-RPC: پروتکل JSON-RPC یک پروتکل تماس رویه از راه دور است که در JSON رمزگذاری شده است. این پروتکل مشابه پروتکل XML-RPC است که فقط چند نوع داده و دستور را تعریف می کند. JSON-RPC اجازه می دهد تا اعلان ها (داده هایی که به سرور ارسال نمی شوند و نیازی به پاسخ ندارند) و چندین تماس برای سرور ارسال می شود که ممکن است به صورت غیرهمزمان پاسخ داده شوند.
JSON-WSP: این پروتکل یک پروتکل سرویس وب است که از JSON برای توصیف خدمات ، درخواست ها و پاسخ ها استفاده می کند. این از JSON-RPC الهام گرفته شده است ، اما فقدان مشخصات توصیف خدمات با اسناد موجود در JSON-RPC باعث طراحی JSON-WSP شد.
وب سرویس SOAP: نام اختصاری Simple Protect Access Protocol مشخصات پروتکل پیام رسانی برای تبادل اطلاعات ساختاریافته در اجرای خدمات وب در شبکه های رایانه ای است. این از XML Information Set برای قالب پیام خود استفاده می کند و به پروتکل های لایه برنامه ، اغلب پروتکل انتقال متن (HTTP) متکی است ، اگرچه برخی از سیستم های قدیمی از طریق پروتکل انتقال ایمیل ساده (SMTP) برای مذاکره و انتقال پیام ارتباط برقرار می کنند.
UDDI: این پروتکل نام اختصار Universal Description، Discovery and Integration است که یک پروتکل زبان نشانه گذاری قابل گسترش و مستقل از بسترهای نرم افزاری است که شامل یک رجیستری (مبتنی بر XML) است که توسط آن مشاغل مختلف در سراسر جهان می توانند خود را در اینترنت لیست کنند و مکانیزمی برای ثبت و قرارگیری برنامه های وب سرویس است. UDDI یک ابتکار صنعت باز است که توسط سازمان پیشرفت استانداردهای اطلاعاتی ساخت یافته (OASIS) حمایت مالی می شود ، برای اینکه مشاغل بتوانند لیست خدمات را منتشر کنند و یکدیگر را کشف کنند و نحوه تعامل سرویس ها یا برنامه های نرم افزاری از طریق اینترنت را تعریف کنند.
WPS: استاندارد رابط سرویس پردازش وب OGC (WPS) قوانینی را برای استاندارد سازی ورودی ها و خروجی ها (درخواست ها و پاسخ ها) برای فراخوانی خدمات پردازش فضایی ، مانند پوشش چند ضلعی ، به عنوان یک سرویس وب ارائه می دهد. استاندارد WPS چگونگی درخواست مشتری برای اجرای یک فرآیند و نحوه مدیریت خروجی را مشخص می کند. این یک رابط است که انتشار فرآیندهای فضایی و کشف و اتصال مشتری به آن فرآیندها را تسهیل می کند.
WSCL: پیشنهاد زبان مکالمه سرویس وب (WSCL) توالی پیام ورودی و خروجی کلی یک وب سرویس را با استفاده از FSA اتومات حالت محدود روی الفبای انواع پیام تعریف می کند.
WSFL: پروتکل Web Services Flow Language 1.0 یک زبان برنامه نویسی XML بود که برای توصیف ترکیبات خدمات وب توسط IBM در سال ۲۰۰۱ پیشنهاد شد. زبان دو نوع ترکیب را در نظر گرفت. نوع اول برای توصیف فرآیندهای تجاری به عنوان مجموعه ای از خدمات وب و نوع دوم برای توصیف تعاملات بین شرکا بود. WSFL به عنوان لایه لایه در بالای زبان توصیف سرویس های وب پیشنهاد شده است.
WSDL ( Web Service Description Language ): پروتکل WSDL یک قالب XML برای توصیف سرویس های شبکه به عنوان مجموعه ای از نقاط انتهایی است که بر روی پیام ها حاوی اطلاعات مدارک مدار یا روش گرا هستند. عملیات و پیام ها به صورت انتزاعی توصیف می شوند ، و سپس به یک پروتکل شبکه و قالب پیام متصل می شوند تا نقطه پایانی را تعریف کنند.
XINS: پروتکل یا استاندارد XML Interface for Network Services یک فناوری متن باز برای تعریف و پیاده سازی برنامه های اینترنتی است ، که یک رویکرد مشخصات گرا را اعمال می کند.
XML-RPC: استاندارد XML-RPC یک پروتکل تماس از راه دور (RPC) است که از XML برای رمزگذاری تماس های خود و HTTP به عنوان مکانیزم انتقال استفاده می کند.
استفاده از وب سرویس در Web-application
هنگامی که پلت فرم های مختلف قابلیت دسترسی به وب را از طرق جستجوگرهای وب (Web Browsers) دارند، می توانند با هم تعامل داشته باشند و برای این منظور Web-application ها توسعه یافتند.
Web-application ها به صورت ساده، نرم افزارهایی هستند که تحت وب عمل می کنند و با استانداردهای مرورگرهای وب و پلت فرم های مختلف همخوانی دارند. با استفاده از وب سرویس ها، عملکرد application های شما در سطح جهانی گسترش پیدا خواهد کرد. وب سرویس ها از XML برای کدگزاری و کد گشایی اطلاعات و از SOAP برای جابجایی آن استفاده می کنند.
به عنوان مثال با web service ها، سیستم صدور صورت حسابهای مالی بخش حسابداری شما که با ویندوز ۲۰۰۰ کار میکند می تواند با سیستم بخش IT که از سرور UNIX استفاده میکند ارتباط برقرار کند.
یک مثال برای وب سرویس به زبان ساده
از جمله کاربرد ASP در مثال زیر برای ساخت یک وب سرویس ساده که درجه هوا را از فارنهایت به سلسیوس و بلعکس تبدیل می کند استفاده شده است.
<%@ WebService Language="VBScript" %> Imports System Imports System.Web.Services Public Class TempConvert :Inherits WebService <WebMethod()> Public Function FahrenheitToCelsius (ByVal Fahrenheit As String) As String dim fahr fahr=trim(replace(Fahrenheit,",",".")) if fahr="" or IsNumeric(fahr)=false then return "Error" return ((((fahr) - 32) / 9) * 5) end function <WebMethod()> Public Function CelsiusToFahrenheit (ByVal Celsius As String) As String dim cel cel=trim(replace(Celsius,",",".")) if cel="" or IsNumeric(cel)=false then return "Error" return ((((cel) * 9) / 5) + 32) end function end class
توضیح مثال وب سرویس به زبان ساده
نکته: برای اجرای این مثال به یک سرور .Net احتیاج دارید.
اولین خط از مثال نشان می دهد که این یک وب سرویس است که بوسیله VBScript نوشته شده و از کلاس “TempConvert” استفاده کرده است:
<%@ WebService Language="VBScript" %>
خط بعد وارد کردن namespace، “System.Web.Services” از .Net framework است.
Imports System Imports System.Web.Services
خط بعد تعریف می کند که کلاس “TempConvert” یک نوع کلاس وب سرویس است.
Public Class TempConvert :Inherits WebService
مرحله بعدی بر پایه زبان برنامه نویسی VB است. این application داری دو عملکرد است، یکی تبدیل فارنهایت به سلسیوس و دیگری تبدیل سلسیوس به فارنهایت.
تنها فرق آن با یک application معمولی این است که عملکرد آن به عنوان “WebMethod()” تعریف شده است.
از “WebMethod()” برای تبدیل عملکرد application خود به عنوان یک وب سرویس استفاده نمایید:
<WebMethod()> Public Function FahrenheitToCelsius (ByVal Fahrenheit As String) As String dim fahr fahr=trim(replace(Fahrenheit,",",".")) if fahr="" or IsNumeric(fahr)=false then return "Error" return ((((fahr) - 32) / 9) * 5) end function <WebMethod()> Public Function CelsiusToFahrenheit (ByVal Celsius As String) As String dim cel cel=trim(replace(Celsius,",",".")) if cel="" or IsNumeric(cel)=false then return "Error" return ((((cel) * 9) / 5) + 32) end function
در آخر با این دستور کلاس را ببندید.
end class
حال با آپلود فایل .asmx در یک سرور .Net اولین وب سرویس خود را خواهید داشت.امیدواریم با خواندن مقاله با مفهوم وب سرویس چیست آشنا شده باشید.