در این مقاله قصد داریم در رابطه با نقش وب سرویس در وب اپلیکیشن ها صحبت کنیم. ابتدا باید
بدانیم که وب سرویس چیست؟ وب سرویس، استانداردی است که برای انتقال داده بین پلتفرمها /
ماشینها / نرم افزارهای مختلف (عموما بین سرویس دهنده و سرویس گیرنده یا همان سرور و
کلاینت) استفاده می شود. این استاندارد در محیط های مختلف یکسان است و فارغ از نوع سخت
افزار یا سیستم عامل یا زبان برنامه نویسی بکار رفته در نرم افزار مبدا و مقصد، به راحتی میتوان داده
ها را ارسال و دریافت کرد بطوری که این داده ها برای هردو طرف قابل فهم باشد. همانطور که از نام
این استاندارد مشخص است، سرویسها تحت وب قابل دسترسی هستند و انتقال داده ها به وسیله
این پروتکلهای استانداردی مثل HTTP انجام می شود. که باعث افزایش کاربرد وب سرویس شده
است.
کاربرد وب سرویس ها
امروزه افراد زیادی از وب سرویس ها استفاده می کنند. اما به دلیل این که وب سرویس ها در پشت
صحنه بیشتر فعالیت می کنند، زیاد متوجه حضور آن ها نیستند. مثال های زیادی وجود دارد از کاربرد
های آن ها به عنوان مثال فروشگاه اینترنتی را درنظر بگیرید. کاربر با مراجعه به وب سایت فروشگاه، به
لیست محصولاتی که روی سرور این سایت قرار گرفته دسترسی دارد و میتواند جزئیات محصولات از
جمله نام کالا، قیمت، رنگ و اندازه را ببیند. این اطلاعات در یک دیتابیس بر روی سرور ذخیره شده
است. حال مدیر این فروشگاه می خواهد یک اپلیکیشن نیز در اختیار کاربران قرار دهد تا کاربر بدون
نیاز به مراجعه به وب سایت و فقط با نصب برنامه روی تلفن هوشمند یا تبلت خود بتواند به لیست
محصولات موجود در سایت دسترسی داشته و در صورت نیاز، یک محصول را به صورت آنلاین
خریداری کند. مسلما نمیتوان لیست و جزئیات محصولات را به صورت لوکال (محلی) بر روی دیتابیس
داخلی اپلیکیشن وارد کرد زیرا داده های مرتبط با محصولات دائما در حال به روز رسانی و تغییر
هستند. هر روز تعدادی محصول جدید اضافه میشود، تعدادی محصول حذف میشود، قیمتها مرتبا
در حال تغییر هستند و… که اگر مدیر فروشگاه بخواهد تمام این تغییرات را درون دیتابیس داخلی
اپلیکیشن اعمال کند، لازم است در هر روز چندین بار نسخه جدیدی از اپ فروشگاه را منتشر کند و کاربر
هم مجبور است دائما در حال بروزرسانی و دانلود و نصب نسخههای جدید نرم افزار باشد که عملا این
کار غیر ممکن و طاقت فرسا می باشد؛ هم برای سازنده اپلیکیشن و هم برای کاربر. علاوه بر اشکالات
قبل، در صورت ثبت اطلاعات محصولات در دیتابیس داخلی اپلیکیشن، حجم دیتابیس و در نهایت
حجم اپ شدیدا افزایش یافته و برای فروشگاههای بزرگ ممکن است به چند صد مگابایت یا چندین
گیگابایت برسد! پس راه حل درست و منطقی دریافت اطلاعات محصولات مورد نظر کاربر به صورت
آنلاین از سرور است. در چنین شرایطی وب سرویس می تواند به مدیر فروشگاه بسیار کمک کند. با
استفاده از وب سرویس به راحتی میتوان اپلیکیشن را به سرور و دیتابیس وب سایت فروشگاه متصل
کرد بدون آنکه نیاز به استفاده از سرور مجزا و مخصوص باشد. یعنی مهم نیست سیستم عاملِ سرورِ
این وب سایت، ویندوز است یا لینوکس، وب سایت با زبان PHP نوشته شده یا ASP، دیتابیس از نوع
MySQL است یا Oracle یا SQL Server. هیچ محدودیتی نیست. در طرف کلاینت یا سرویس گیرنده
نیز همینطور. یعنی مهم نیست دیوایس کاربر Android باشد یا iOS یا Windows؛ اپلیکیشن به زبان
java نوشته شده یا kotlin یا swift یا C++. به هر روشی که سرور و کلاینت پیاده سازی شده باشند،
امکان استفاده از وب سرویس یا به عبارتی API ها فراهم است. بنابراین یک فروشگاه آنلاین به راحتی
میتواند کاربران دارای دیوایسهای Android ، iOS ، Windows ، BlackBerry و… را بطور همزمان و
بدون نیاز به استفاده از سخت افزار و یا نرم افزار مجزا برای هرکدام از این محیطهای کاربری، پوشش
دهد. فرمتی که داده ها از سمت سرور ارسال میشود برای اپلیکیشن اندروید و اپلیکیشن ویندوز و
سایر سیستم عاملها یکسان است و هیچ فرقی با هم ندارند.
نکته: اینکه در وب سرویس فقط داده ها ارسال میشوند و جزئیات و عناصر رابط کاربری، نحوه
چیدمان اجزاء، رنگها و… ارتباطی به وب سرویس ندارد.
AccuWeather.com یکی از معروفترین و معتربرترین سرویسهای ارائه اطلاعات آب و هوایی جهان
است. در انتهای وبسایت، گزینه ای به نام AccuWeather APIs قرار دارد که با کلیک روی آن به
قسمتی با نام Developer منتقل میشویم. همانطور که از نام آن پیداست، این امکانات ویژه توسعه
دهندگان است.
سپس به جدولی میرسیم که هزینه دسترسی به API را در پلنهای مختلف نمایش میدهد. به عنوان
مثال برای ۵۰ درخواست در روز، هزینه ای دریافت نمیشود و استفاده از آن رایگان می باشد. یعنی
توسعه دهنده میتواند با استفاده از این وب سرویس، به تعداد ۵۰ بار در روز، وضعیت آب و هوایی
شهرهای مختلف را در اپلیکیشن یا وبسایت خود نمایش دهد؛ بدون پرداخت هزینه. اما برای
استفادههای بالاتر باید هزینه متناسب با آن را پرداخت کرد.
نکته: مفهوم API با Web Service یکی نیست و در واقع وب سرویس به نوعی زیرمجموعه
API محسوب میشود. اما عمدتا از واژه API در سرویس هایی مثل سامانه های پیامکی یا
سایت های آب و هوایی و… استفاده میگردد.
نقش وب سرویس در وب اپلیکیشن ها
در رابطه با تفاوت Web Service با Web Page (صفحات وب) می توان گفت، در Web Page که کاربر
توسط یک مرورگر آن را مشاهده میکند، تمامی اجزای صفحه ازجمله متن، تصاویر، رنگ ها، چینش
عناصر و… همگی از سمت سرور و با فرمت Html دریافت میشوند. اما در وب سرویس فقط محتوای
اصلی از سمت سرور دریافت شده و در چارچوبی که درون اپلیکیشن برای نمایش محتوا از قبل طراحی
شده، به کاربر نمایش داده میشود. بطور خلاصه در یک صفحه وب، قالب (رابط کاربری) نیز از سمت
سرور دریافت میشود. اما در اپلیکیشنی که از وب سرویس استفاده میکند، رابط کاربری درون
اپلیکیشن قرار گرفته و تنها محتوا است که توسط وب سرویس دریافت شده و درون این رابط کاربری
قرار میگیرد.
وب سرور Lite Speed
شرکت لایت اسپید در سال 2002 به واسطه ی یک تیم مهندسی به صورت کاملاً خصوصی تاسیس
شد. این شرکت شعاری را برای خود تعریف کرده است که فقط خرید سخت افزار قوی باعث حل
مشکلات فنی، ارائه وب هاستینگ توسط شرکت های پارس دیتا، برطرف کردن خطاهای احتمالی در
طراحی سایت نخواهد شد، بلکه با استفاده از وب سرور LiteSpeed می توان از صرف هزینه های زیاد
در خرید سخت افزار سرور کاهش چشم گیری را داشته باشیم. لایت اسپید با هسته Linux بر پایه
عملکرد و سرعت بالا همانند وب سرور آپاچی است.
کنترل پنل ساده همچنین عملکرد و سرعت بالای تا شش برابری نسبت به آپاچی دیگر ویژگی های وب
سرور Lite Speed می باشد. لایت اسپید برای محتوای استاتیک از boa، thttpd و tux استفاده می
کند و برای محتوای داینامیک تا 50% سریع تر نسبت به آپاچی در سرویس های PHP عمل نموده که
به خاطر استفاده از فانکشن mod_php می باشد. لایت اسپید انتخاب خوبی برای هاست های
اشتراکی می باشد همچنین قابلیت پشتیبانی از کنترل پنل های دایرکت ادمین و Cpanel را دارا می
باشد. لایسنس لایت اسپید را می توانید از مستر لایسنس تهیه کنید.
وب سرویس RESTful
در حال حاضر دو وب سرویس SOAP (مخفف Simple Object Access Protocol) و REST (مخفف
Representational State Transfer) از معروف ترین ها می باشند و بیشترین کاربرد را در میان
توسعه دهندگان دارند. اخیرا و با توجه به سادگی در پیاده سازی وب سرویس REST، این گزینه
طرفداران بیشتری به خود جذب کرده است. یکی از تفاوت های اساسی بین این دو این است که
SOAP یک پروتکل بوده درحالی که REST یک سبک معماری وب سرویس است که از طریق پروتکل
HTTP داده ها را ارسال و دریافت میکند.
در اندروید نیز از معماری REST استفاده می شود. در واقع وب سرویسهایی که توسط معماری REST
پیاده سازی میشوند را RESTful می گویند.
در ابتدای مبحث راجع به فرمت انتقال داده در وب سرویس صحبت شد و اینکه این فرمت در همه
پلتفرمها و زبانهای رایج برنامه نویسی پشتیبانی میشود. SOAP تنها از فرمت XML برای انتقال داده
استفاده میکند. درحالی که در وب سرویسهای RESTful از سایر فرمتها مانند HTML و JSON نیز
پشتیبانی میشود. که در این بین، فرمت JSON به علت مصرف کمتر پهنای باند، سرعت بیشتری
نسبت به سایر گزینهها دارد. نتیجه آن است که در اندروید نیز از فرمت JSON برای ارتباط بین سرور و
کلاینت استفاده میشود. ارسال و دریافت اطلاعات به وسیله متدهایی مثل GET، POST، PUT و
DELETE برای عملیات هایی مانند دریافت، ارسال، ویرایش، حذف و… انجام میگردد.
مانند سایر قسمتهای اندروید، در مبحث وب سرویس و اتصال اپلیکیشن به سرور نیز کتابخانههای
متعددی منتشر شده و نیاز ما به درگیر شدن با مفاهیم و مسائل فنی و پیچیدهی پیاده سازی وب
سرویسها را مرتفع میسازد. در حال حاضر دو کتابخانه Retrofit و Volley در بین توسعه دهندگان
اندروید بیشترین کاربرد را دارند. کتابخانه Retrofit توسط شرکت Square و کتابخانه Volley توسط
Google منتشر شده و پشتیبانی میشوند.
امیدواریم از مطالبی که در رابطه با نقش وب سرویس در وب اپلیکیشن ها بیان کردیم، استفاده لازم را
برده باشید. برای اطلاع بیشتر در رابطه با مقالات مستر لایسنس به صفحه وبلاگ مستر لایسنس
مراجعه نمایید.