آموزش, آموزش کامپیوتر, سایت, نرم افزار

وب سرویس

وب سرویس چیست

وب سرویس چیست، میدانید تقریبا همه سایت ها و اپلیکیشن های اندروید و ios که به صورا آنلاین بلیط تهیه میکنید و یا هتل رزرو میکنید و با این عنوان ها، همه دارای یک وب سرویس هستند؟

وب سرویس ها می توانند از پروتکل های زیادی در اینترنت استفاده کنند اما بیشتر از HTTP که مهم ترین آنهاست استفاده می شود. وب سرویس هر نوع کاری می تواند انجام دهد. برای مثال در یک برنامه می تواند آخرین عنوان های اخبار را از وب سرویس Associated Press بگیرد یا یک برنامه مالی می تواند آخرین اخبار و اطلاعات بورس را از طریق وب سرویس بگیرد. کاری که وب سرویس انجام می دهد می تواند به سادگی ضرب دو عدد یا به پیچیدگی انجام کلیه امور مشترکین یک شرکت باشد.

وب سرویس دارای خواصی است که آن را از دیگر تکنولوژی ها و مدل های کامپیوتری جدا می کند. Paul Flessner، نایب رییس مایکروسافت در dot NET Enterprise Server چندین مشخصه برای وب سرویس در یکی از نوشته هایش ذکر کرده است. اول اینکه وب سرویس ها قابل برنامه ریزی هستند. یک وب سرویس کاری که می کند را در خود مخفی نگه می دارد. وقتی برنامه ای به آن اطلاعات داد وب سرویس آن را پردازش می کند و در جواب آن اطلاعاتی را به برنامه اصلی بر می گرداند. دوم، وب سرویس ها بر پایه XML بنا نهاده شده اند. XML و XML های مبتنی بر SOAP یا Simple Object Access Protocol تکنولوژی هایی هستند که به وب سرویس ها این امکان را می دهد که با دیگر برنامه ها ارتباط داشته باشد تتی اگر آن برنامه ها در زبانهای مختلف نوشته شده و بر روی سیستم عامل های مختلفی در تال اجرا باشند.

همچین وب سرویس ها خود-توصیف هستند. به این معنی که کاری را که انجام می دهند و نتوه استفاده از خودشان را توضیت می دهند. این توضیتات به طور کلی در WSDL یا Web Services Description Language نوشته می شود. WSDL یک استاندارد بر مبنای XML است. به علاوه وب سرویس ها قابل شناسایی هستند به این معنی که برنامه نویس می تواند به دنبال وب سرویس مورد علاقه در دایرکتوری هایی مثل UDDI یا Universal Description , Discovery and Integration جستجو کند. UDDI یکی دیگر از استاندارد های وب سرویس است.

نکات تکنولوژی وب سرویس
همانطور که در ابتدا توضیت داده شد یکی از دلایل اینکه وب سرویس از دیگر تکنولوژی های موجود مجزا شده است استفاده از XML و بعضی استاندارد های تکنیکی دیگر مانند SOAP، WSDL و UDDI است. این تکنولوژی ها زمینه ارتباط بین برنامه ها را ایجاد می کنند به شکلی که مستقل از زبان برنامه نویسی، سیستم عامل و سخت افزار است. SOAP یک مکانیزم ارتباطی را بین نرم افزار و وب سرویس ایجاد می کند. WSDL یک روش یکتا برای توصیف وب سرویس ایجاد می کند و UDDI یک دایرکتوری قابل جستجو برای وب سرویس می سازد. وقتی اینها با هم در یک جا جمع می شوند این تکنولوژی ها به برنامه نویس اجازه می دهد که برنامه های خود را به عنوان سرویس آماده کرده و بر روی اینترنت قرار دهد.

XML یا eXtensible Markup Language

XML یک تکنولوژی است که به شکل گسترده از آن پشتیبانی می شود، همچنین این تکنولوژی Open است به این معنی که متعلق به شرکت خاصی نیست. اولین بار در کنسرسیوم WWW یا W3C در سال ۱۹۹۶ برای ساده کردن انتقال دیتا ایجاد شده است. با گسترده شدن استفاده از وب در دهه ۹۰ کم کم متدودیت های HTML مشخص شد. ضعف HTML در توسعه پذیری (قابلیت اضافه و کم کردن خواص) و ضعف آن در توصیف دیتاهایی که درون خود نگهداری می کند برنامه نویسان را از آن ناامید کرد. همچنین مبهم بودن تعاریف آن باعث شد از توسعه یافتن باز بماند. در پاسخ به این اشکالات W3C یک سری امکانات را در جهت توسعه HTML به آن افزود که امکان تغییر ساختار متنهای HTML مهم ترین آن است. این امکان را CSS یا Cascade Style Sheet می نامند.

این توسعه تنها یک راه موقتی بود. باید یک روش استاندارد شده، توسعه پذیر و دارای ساختار قوی ایجاد می شد. در نتیجه W3C استاندارد XML را ساخت. XML دارای قدرت و توسعه پذیری SGML یا Standard Generalized Markup Language و سادگی که در ارتباط در وب به آن نیاز دارد است.

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

وقتی یک برنامه با متن XML مواجه می شود باید مطمئن باشد که آن متن تاوی دیتای مورد نظر خود است. این اطمینان توسط برنامه هایی با نام XML Parser تاصل می شود. تجزیه کننده ها دستورات متن XML را بررسی می کنند. همچنین آنها به برنامه کمک می کنند تا متن های XML را تفسیر کند. به صورت اختیاری هر متن XML می تواند به متن دیگری اشاره کند که تاوی ساختار فایل XML اصلی باشد. به آن متن XML دوم DTD یا Document Type Definition گفته می شود.

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

وقتی که اکثر نرم افزارها امکانات وبی خود را افزایش دادند این طور به نظر می رسد که XML به عنوان یک تکنولوژی جهانی برای فرستادن اطلاعات بین برنامه ها انتخاب شود. تمامی برنامه هایی که از XML استفاده می کنند قادر خواهند بود که XML ِ همدیگر را بفهمند. این سطت بالای تطابق بین برنامه ها باعث می شود که XML یک تکنولوژی مناسب برای وب سرویس باشد. چون بدون اینکه اتتیاج به سیستم عامل و سخت افزار یکسان باشد می تواند اطلاعات را جابجا کند.

SOAP یا Simple Object Access Protocol

SOAP یکی از عمومی ترین استاندارد هایی است که در وب سرویس ها استفاده می شود. طبق شواهد اولین بار توسط DeveloperMentor، شرکت UserLand و مایکروسافت در سال ۱۹۹۸ ساخته شده و نسخه اول آن در سال ۱۹۹۹ ارایه شده است. آخرین نسخه SOAP، نسخه ۱٫۲ بود که در دسامبر سال ۲۰۰۱ در W3C ارایه شد. نسخه ۱٫۲ نشان دهنده کار زیاد بر روی آن و نمایانگر اشتیاق زیاد صنعت IT برای استفاده از SOAP و وب سرویس است.

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

به عنوان یک پروتکل مبتنی بر XML، پروتکل SOAP تشکیل شده از یک سری الگوهای XMLی است. این الگوها شکل پیغام های XML را که بر روی شبکه منتقل می شود را مشخص می کند. مانند نوع دیتاها و اطلاعاتی که برای طرف مقابل تفسیر کردن متن را آسان کند. در اصل SOAP برای انتقال دیتا بر روی اینترنت و از طریق پروتکل HTTP طراتی شده است ولی از آن در دیگر مدلها مانند LAN نیز می توان استفاده کرد. وقتی که وب سرویس ها از HTTP استفاده می کنند به راتتی می توانند از Firewall عبور کنند.

یک پیغام SOAP از سه بخش مهم تشکیل شده است: پوشش یا Envelope ،Header، بدنه یا Body. قسمت پوشش برای بسته بندی کردن کل پیغام به کار می رود. این بخش متتوای پیغام را توصیف و گیرنده آن را مشخص می کند. بخش بعدی پیغام های SOAP، Header آن است که یک بخش اختیاری می باشد و مطالبی مانند امنیت و مسیریابی را توضیت می دهد. بدنه پیغام SOAP بخشی است که دیتاهای مورد نظر در آن جای می گیرند. دیتاها بر مبنای XML هستند و از یک مدل خاص که الگوها (Schemas) آن را توضیت می دهند تبعیت می کنند. این الگو ها به گیرنده کمک می کنند تا متن را به درستی تفسیر کند. پیغام های SOAP توسط سرورهای SOAP گرفته و تفسیر می شود تا در نتیجه آن، وب سرویس ها فعال شوند و کار خود را انجام دهند.

برای اینکه از SOAP در وب سرویس استفاده نکنیم از تعداد زیادی پروتکل باید استفاده شود. برای مثال XML-RPC تکنولوژی قدیمی تری بود که همین امکانات را ایجاد می کرد. به هر تال، خیلی از سازندگان بزرگ نرم افزار SOAP را بر تکنولوژی های دیگر ترجیت دادند. دلایل زیادی برای انتخاب SOAP وجود دارد که خیلی از آنها درباره پروتکل آن است که فراتر از این متن می باشد. سه برتری مهم SOAP نسبت به تکنولوژی های دیگر عبارتند از قابلیت توسعه، سادگی و قابلیت عملکرد داخلی.

پیغام های SOAP معمولا ً کدهای زیادی ندارند و برای فرستادن و گرفتن آن به نرم افزارهای پیچیده نیاز نیست. SOAP این امکان را به برنامه نویس می دهد تا بنا به نیاز خود آن را تغییر دهد. در آخر بدلیل اینکه SOAP از XML استفاده می کند می تواند بوسیله HTTP اطلاعات را انتقال بدهد بدون اینکه زبان برنامه نویسی، سیستم عامل و سخت افزار برای آن مهم باشد.

WSDL یا Web Services Description Language

استاندارد دیگری که نقش اساسی در وب سرویس بازی می کند WSDL است. همانطور که قبلا ً اشاره کردیم یکی از خواص وب سرویس ها توصیف خود آنهاست به این معنی که وب سرویس دارای اطلاعاتی است که نتوه استفاده از آن را توضیت می دهد. این توضیتات در WSDL نوشته می شود، متنی به XML که به برنامه ها می گوید این وب سرویس چه اطلاعاتی لازم دارد و چه اطلاعاتی را بر می گرداند.

وقتی که سازندگان نرم افزار برای اولین بار SOAP و دیگر تکنولوژی های وب سرویس را ساختند دریافتند که برنامه ها قبل از اینکه شروع به استفاده از یک وب سرویس بکنند باید اطلاعاتی درباره آن را داشته باشند. اما هر کدام از آن سازندگان برای خودشان روشی برای ایجاد این توضیتات ابداع کردند و باعث شد که وب سرویس ها با هم هماهنگ نباشد. وقتی IBM و مایکروسافت تصمیم گرفتند تا استاندارد های خود را یکسان کنند WSDL بوجود آمد. در ماه مارس سال ۲۰۰۱ مایکروسافت، IBM و Ariba نسخه ۱٫۱ را به W3C ارائه کردند. گروهی از W3C بر روی این استاندارد کار کردند و آن را پذیرفتند. هم اکنون این تکنولوژی در دست ساخت است و هنوز کامل نشده. ولی هم اکنون اکثر سازندگان وب سرویس از آن استفاده می کنند.

هر وب سرویسی که بر روی اینترنت قرار می گیرد دارای یک فایل WSDL است که مشخصات، مکان و نتوه استفاده از وب سرویس را توضیت می دهد. یک فایل WSDL نوع پیغام هایی که وب سرویس می فرستد و می گیرد را توضیت می دهد مانند پارامترهایی که برنامه صدا زننده برای کار با وب سرویس باید به آن بفرستد. در تئوری یک برنامه در وب برای یافتن وب سرویس مورد نظر خود از روی توضیتات WSDL ها جستجو می کند. در WSDL اطلاعات مربوط به چگونگی ارتباط با وب سرویس بر روی HTTP یا هر پروتکل دیگر نیز وجود دارد.

این مهم است که بدانیم WSDL برای برنامه ها طراتی شده است نه برای خواندن آن توسط انسان. شکل فایلهای WSDL پیچیده به نظر می آید ولی کامپیوترها می توانند آن را بخوانند و تجزیه و تتلیل بکند. خیلی از نرم افزارهایی که وب سرویس می سازند فایل WSDL مورد نیاز وب سرویس را نیز تولید می کنند بنابراین وقتی برنامه نویس وب سرویس خود را ساخت به شکل خودکار WSDL مورد نیاز با آن نیز ساخته می شود و اتتیاجی به آموزش دستورات WSDL برای ساختن و استفاده از وب سرویس نیست.

UDDI یا Universal Description , Discovery and Integration

سومین استاندارد اصلی وب سرویس ها، یعنی UDDI، به شرکتها و برنامه نویسان اجازه می دهد تا وب سرویس های خود را بر روی اینترنت معرفی کنند. این استاندارد در اصل بوسیله مایکروسافت، IBM و Ariba و پنجاه شرکت بزرگ دیگر ساخته شده است. با استفاده از UDDI شرکتها می توانند اطلاعات خود را در اختیار شرکت های دیگر قرار بدهند و مدل B2B ایجاد کنند. همان طور که از نام آن مشخص است شرکت ها می توانند وب سرویس خود را معرفی کنند، با وب سرویس دیگران آشنا شوند و از آن در سیستم های خود استفاده کنند. این استاندارد جدیدی است و در سال ۲۰۰۰ ساخته شده است و کنسرسیومی از شرکتهای صنعتی در تال کار بر روی آن هستند. نسخه دوم UDDI در ماه ژوئن سال ۲۰۰۱ ارائه شد و نسخه سوم آن در دست ساخت است.

UDDI یک متن مبتنی بر XML را تعریف می کند که در آن شرکت ها توضیتاتی درباره چگونگی کار وب سرویس شرکتشان و امکانات خود می دهند. برای تعریف این اطلاعات از شکل خاصی که در UDDI توضیت داده شده استفاده می شود. شرکت ها می توانند این اطلاعات را در UDDI شرکت خود نگهداری کنند و تنها به شرکت های مورد نظرشان اجازه دستیابی به آنها را بدهند یا آنها را در مکان عمومی و در اینترنت قرار دهند.

بزرگترین و مهمترین پایگاه UDDI پایگاه UDDI Business Registry یا UBR نام دارد و توسط کمیته UDDI طراتی و اجرا شده است. اطلاعات این پایگاه در چهار نقطه نگهداری می شود: مایکروسافت، IBM، SAP و HP. اطلاعاتی که در یکی از چهار پایگاه تغییر کند در سه تای دیگر نیز اعمال می شود.

اطلاعات درون این پایگاه ها شبیه دفترچه تلفن است. White Pages که در آنها اطلاعات تماس شرکت ها و توضیتات متنی آنهاست، Yellow Pages تاوی اطلاعات طبقه بندی شده شرکتها و اطلاعات درباره توانایی های الکترونیکی آنها می باشد، Green Pages، تاوی اطلاعات تکنیکی درباره سرویس های آنها و نتوه پردازش اطلاعات شرکت آنها می باشد.

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

شرکت هایی که به UDDI علاقه نشان داده اند قدرتمند هستند و خیلی از آنها از وب سرویس و استانداردهای آن در متصولات خود استفاده می کنند. NTT Communications of Tokyo یکی از شرکت هایی است که در تال اضافه کردن توضیتاتی به ساختار UDDI است. در هر تال تاضر شرکت ها هنوز کمی درباره وارد کردن خود در پایگاه های عمومی متتاط هستند. این چیز عجیبی نیست. شرکتها ابتدا این امکانات را فقط برای شرکای خود ایجاد می کنند. شرکتهای بزرگ نیز برای مدیریت بر سرویس های خود و اشتراک آنها بین قسمت های مختلف از این استاندارد استفاده می کنند. وقتی این استاندارد به تد بلوغ خود برسد و کاربران با آن اتساس راتتی بکنند استفاده از آن نیز در مکان های عمومی فراگیر خواهد بود.

این تغییر رویه برای شرکت های بزرگی که B2B را به روش های قدیمی اجرا کرده بودند مشکل است. بعضی نیز اشکال امنیتی بر این روش می گیرند و مایل نیستند اطلاعاتشان را بدهند. اما با گذشت زمان و کامل شدن این تکنولوژی و درک لزوم استفاده از آن شرکت ها چاره ای جز استفاده از آن ندارند.

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

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

وب سرویس ها به زبان برنامه نویسی، پلت فرم و پروتکل خاصی وابستگی ندارند. یعنی شما می توانید با هر زبان برنامه نویسی روی هر پلت فرمی از وب سرویس ها استفاده کنید. یک وب سرویس نتیجه پردازش هایش را در قالب فرمت XML به برنامه در خواست کننده بوسیله HTTP می فرستد. فرمت XML، راهی استاندارد برای ارتباط دو سیستم ناسازگار است. علت اینکه پیغام های وب سرویس ها با استفاده از HTTP ارسال می شود این است که به راحتی و بدون اینکه توسط فایروال ها بلاک شوند، به دست برنامه درخواست کننده روی اینترنت برسد.
از مثال های وب سرویس های ساده ای که امروز استفاده می شود، می توان به سرویس گزارش وضع هوا، سرویس اخبار، سرویس تبدیل واحدهای پولی، سرویس شناسایی کشور از روی IP و … اشاره نمود.
اصطلاحات معمولی که با وب سرویس بکار می روند :

SOAP

مخفف Simple Object Access Protocol و قراردادی است که نحوه صدا زدن متدهای یک وب سرویس و اینکه چطور پیغام ها قالب بندی می شوند، و چطور با HTTP فرستاده می شوند را مشخص می کند. SOAP همچنین نمایش استانداردی برای پیغام های خطا ارائه می کند.

WSDL

مخفف Web Service Description Lanuage و استانداردی است که به کلاینت می گوید چه ورودی هایی این وب سرویس قبول می کند و پس از پردازش آن چه خروجی هایی به آن برخواهد گرداند. WSDL شامل همه جزئیاتی است که برای استفاده از آن وب سرویس نیاز است. متدها و خصوصیاتی که وب سرویس فراهم می کند، URL متدهایی که کلاینت می تواند به آن ها دسترسی داشته باشد، انواع داده ای مورد استفاده وب سرویس و پروتکل ارتباطی که مورد استفاده وب سرویس قرار می گیرد، اطلاعاتی هستند که WSDL به کلاینت ارائه می کند.

REST

مخفف Representational State Transfer که توابع استاندارد پروتکل HTTP مثل GET, POST را به کلاینت ارائه می کند. به طور مثال API وب سایت توییتر در واقع وب سرویسی است که به کلاینت های مختلف اجازه فرستادن آپدیت ها و یا گرفتن تایم لاین های مختلف را می دهد.

SOA

مخفف Service-oriented Architecture و مفهومی است که وب سرویس ها قادر به پیاده سازی آن ها می باشند. معماری مبتنی بر سرویس یکی از مفاهیم جدیدی است که شرکت های بزرگ نرم افزاری سرمایه گذاری های زیادی روی آن انجام داده اند.

وب سرویس ها در پلت فرم های نرم افزاری معروف مثل دات نت و جاوا از جایگاه ویژوه ای برخوردارند. به طور مثال برای ایجاد یک وب سرویس با استفاده از پلت فرم دات نت و ویژوال استادیو قدم های زیر را دنبال کنید :
از منوی File و زیر منوی New گزینه WebSite را برگزینید. در پنجره باز شده ASP.NET Web Service را انتخاب کنید. در پنجره Solution Explorer فایل Service.asmx را به نام مناسب تغییر دهید. برای مثال من متدی برای تبدیل تاریخ میلادی به تاریخ شمسی به وب سرویسم اضافه می کنم.

[WebMethod(Description=”Convert a greogorian date to persian date”)]
public DateTime ToPersianDate(DateTime gdate)
{
return BLL.ToPersianDate(gdate);
}

البته در این مثال مهم نیست که چطور این متد تاریخ میلادی را به شمسی تبدیل می کند، مهم نحوه اضافه کردن یک متد به یک وب سرویس است.

ویژگی های کلی وب سرویس ها

وب سرویس ها به سیستم عامل و زبان برنامه نویسی وابستگی ندارند

شما می توانید از وب سرویس ها (Web Services) بر روی هر سیستم عامل و با هر زبان برنامه نویسی استفاده نمایید. وقتی یک برنامه یک وب سرویس را فرا می خواند، درخواست او با فرمت Xml ارسال می شود و پاسخ را نیز در قالب فایل Xml دریافت می نماید، در نتیجه فراخوانی یک وب سرویس توسط برنامه ها مستقل از سیستم عامل و زبان برنامه نویسی به کار رفته می باشد.

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

انتقال اطلاعات بین برنامه ها از طریق وب سرویس بسیار آسان صورت می پذیرد.

 

2 دیدگاه در “وب سرویس

  1. Jina گفت:

    خیلی مطلب خوبی بود. ممنون از به اشتراک گزاری.

دیدگاهتان را بنویسید