| Google Gears |
 |
 |
|

همواره آرزوی بزرگ و دیرینه توسعهدهندگان برنامههای تحت وب ادامه اجرای
برنامههایشان در صورت قطع شدن ارتباط از اینترنت بودهاست. اكنون گوگل
آمده است كه كابوس چند ساله آنان را به رویایی شیرین تبدیل كند!
ادامه در ادامه مطلب
|
Google Gears
شهرام انسان- دنیای كامپیوتر و ارتباطات
خبر منتشر شد: «محیط برنامهسازی تحتوب آفلاین گوگل ارائه شد.» اگر چه
دوستداران تكنولوژیهای وب به خوبی میدانند این اولین تلاش برای ارائه
محیطهای برنامهسازی آفلاین تحت وب نیست اما زمانی كه گوگل بزرگ (!) وارد
این گود میشود به معنای آن است كه تحولاتی فراگیر در پیش روست. همواره
آرزوی بزرگ و دیرینه توسعهدهندگان برنامههای تحت وب ادامه اجرای
برنامههایشان در صورت قطع شدن ارتباط از اینترنت بودهاست. اكنون گوگل
آمده است كه كابوس چند ساله آنان را به رویایی شیرین تبدیل كند!
تكنولوژی Google Gears كه در حال گذران نسخه آزمایشی (beta) خود است، یك
محیط توسعه تحت وب سورس آزاد (open source) است كه امكان ادامه بكارگیری
برنامههای تحت وب بدون وجود ارتباط با كارگزار از طریق شبكه یا اینترنت
را فراهم میسازد. به زبان سادهتر اگر در حالت عادی با قطع ارتباط
شبكهای یا اینترنتی تمامی برنامههای تحت وب بدون امكان اجرا باقی
میمانند، به كمك این محیط میتوان استفاده از برنامه را ادامه داد و در
زمان ارتباط مجدد، تغییرات اعمال شده در حالت آفلاین را به كارگزار اصلی
منتقل نمود.
این عمل به كمك سه گروه از API ارائه شده به زبان جاوا اسكریپت میسر شده است:
- ذخیرهسازی منابع و ارائه سرویس محلی به برنامه
- ذخیرهسازی اطلاعات در یك بانك اطلاعاتی رابطهای قابل جستوجو به صورت محلی!
- امكان اجرای كدهای غیر همزمان (asynchronous) جاوا اسكریپ برای بهبود كارایی برنامه محلی
گوگلی معماری ارائه شده در Google Gear را نتیجه آزمون ساختارهای مختلف
برای برنامههای تحت وب آفلاین خوانده است. این معماری نكات زیر را در
مورد هر برنامه مشخص میكند:
1. جداسازی لایه داده
2. تصمیمگیری در مورد اینكه چه قابلیتهایی از برنامه در حالت آفلاین پیادهسازی شوند. (استراتژی اتصال)
3. تصمیمگیری در مورد عملكرد modality برنامه
4. پیادهسازی همزمانی (یكسانسازی) اطلاعات
جداسازی لایه داده
در بیشتر برنامههای تحت وب امروزی لایهای به نام لایه داده در سرویس گیرنده (client) وجود ندارد.

شكل 1 – در سرویس گیرنده لایه داده وجود ندارد
در این حالت كد AJAX (كد جاوا اسكریپتی كه به صورت دینامیك اطلاعات
موردنیاز صفحه را از سرویسدهنده فرا میخواند) مستقیما سرویسهای ارائه
شده در سمت سرویسدهنده را فراخوانده و به اطلاعات دست مییابد. در این
حالت توابع API كه سرویسدهنده به كد AJAX سرویس گیرنده ارائه میدهد، نقش
لایه داده را بازی میكند.
اضافه نمودن لایه داده
در حالت كلی اضافه نمودن لایه داده، قدم اول است. زمانی كه یك لایه
ذخیرهسازی محلی داده در سرویس گیرنده پیشبینی شود، یك درگاه واحد برای
گذراندن تمام اطلاعات ورودی یا خروجی در اختیار خواهیم داشت.
شكل 2 – لایه داده در سمت سرویس گیرنده (Client)
به عنوان مثال اگر كد AJAX به صورت سنتی برای به دست آوردن اطلاعات
حسابهای مشتریان به صورت مستقیم یك سرویس از سرویس دهنده را فراخوانی
مینمود، در حالت جدید این فراخوانی از طریق یك ماژول واسط انجام خواهد
پذیرفت. در این حالت این ماژول تصمیم خواهد گرفت كه اطلاعات حساب مشتریان
را از سرویس دهنده از طریق اینترنت یا از ذخیرهسازی محلی در سرویس گیرنده
فراخوانی كند.
به صورت مشابه زمانی كه برنامه درخواست بهروزرسانی اطلاعات حساب یك مشتری
را میدهد، این كار به ماژول واسط واگذار میشود. ماژول واسط میتواند
تصمیم بگیرد كه اطلاعات را به صورت محلی ذخیره كند یا برای ذخیره بلافاصله
به سرویس دهنده بفرستد یا نهایتا انجام این كار را به كمك توابع
همزمانسازی برنامهریزی نماید.
میتوان تصور نمود كه ماژول واسط همانند یك سوئیچ داده عمل میكند. در
حالت اول كلیه ارتباطات داده با سرویس دهنده به صورت عادی انجام میشود.
این همان حالتی كه Google Gears وجود ندارد یا هنوز انجام عملیات آفلاین
از سوی كاربر درخواست نشدهاست.
شكل 3 – لایه سوئیچ داده
حالت دوم همانگونه كه در شكل 4 نمایش داده شده است، ساخت یك لایه داده
محلی است؛ كه به جای اتصال به بانك اطلاعاتی سرویس دهنده از بانك اطلاعاتی
محلی Google Gears استفاده مینماید. در این حالت لایه داده همان رابط
Interface را خواهد داشت كه در ارتباط با سرویسهای سرویس دهنده از
اینترنت بكار گرفته میشد.

شكل 4 – لایه داده محلی
قابلیتهای برنامه در حالت آفلاین
به دلایل تكنیكی ممكن است هر قابلیتی از برنامه امكان اجرا در حالت آفلاین
را نداشته باشد. در این قسمت باید قابلیتهایی كه نیاز به پیادهسازی برای
اجرا در حالت آفلاین را دارند تعیین شده و تصمیمگیری در مورد زمانهای
اتصال و قطع از سرویس دهنده انجام شود. تصمیمگیری در مورد اینگونه ایجاد
ارتباط یا قطع شدن را استراتژی اتصال مینامند. ممكن است یك تفكر این باشد
كه استفاده از ذخیرهسازی محلی به علت سرعت بالای آن همیشه یك راه حل
مناسب است؛ اما دلایل بسیاری وجود دارد كه نیاز یا اجبار برای اتصال به
سرویس دهنده و دسترسی به اطلاعات آن اجتنابناپذیر باشد:
- ممكن است طبیعت اطلاعات آنچنان زودگذر باشد كه امكان ذخیرهسازی و
نگهداری محلی آنها نباشد. به عنوان مثال برنامهای كه سود لحظهای بازار
سهام را محاسبه میكند.
- اطلاعات برخی از برنامهها فقط در حالت آنلاین دارای معنی هستند. مانند اطلاعات برنامههای پیامرسان همانند یاهو مسنجر.
- ممكن است برنامه فقط نیاز به ذخیره محلی اطلاعاتی را داشته باشد كه دسترسی متناوب به آنها نیاز است.
- ممكن است محدودیتهای محاسباتی یا ذخیرهسازی امكان اجرای آفلاین یك قابلیت از برنامه را منتفی سازد.
در حالت كلی، راهحل بهینه آن است كه تا حد ممكن اطلاعات به صورت محلی
ذخیرهسازی شوند. با این وجود هر چه برنامه كار بیشتری را به صورت محلی و
آفلاین انجام دهد، كد بیشتری برای اضافه نمودن این قابلیتها نیاز است.
بنابراین انجام مقایسه بین نیازمندی و هزینه تولید برای دست یافتن به مرز
نهایی كارساز است.
Modality
یك سوال اساسی كه تمام برنامههای آفلاین باید پاسخی برای آن داشته باشند،
بحث Modality است. برنامههای modal حالت آفلاین مشخصی در برابر حالت
آنلاین دارند كه معمولا در رابط كاربری آنها به خوبی نمایش داده میشود.
كاربر به خوبی از حالت جاری برنامه آگاهی دارد و حتی در بعضی از موارد در
تصمیمگیری برای تغییر حالت برنامه از آفلاین به آنلاین و بالعكس شركت
میكند. برنامههای modeless سعی در گذر از حالت آفلاین به آنلاین بدون
تغییرات آشكار در ظاهر و رابط كاربری خود دارند. كاربر نیازی به سهیم شدن
در عملیات تغییر حالت نداشته و این امر به صورت خودكار صورت میپذیرد.
همزمان سازی اطلاعات
بدون توجه به آنكه چه نوع استراتژی اتصال یا modality بكار برده باشید،
دادههای محلی شما نسبت به سرویسدهنده اصلی متفاوت خواهند شد. برطرف
نمودن این تغییرات كه ناشی از انجام ورود و تغییرات اطلاعات از طرف كاربر
است همگاهسازی خوانده میشود. راههای متفاوتی برای انجام همگاهسازی
وجود دارد كه بسته به شرایط خاص برنامه انتخاب میشوند.
همگاهسازی دستی
در این حالت كه سادهترین روش همگاهسازی محسوب میشود، كاربر در مورد
زمان همگاهسازی تصمیم گرفته و این عمل بنابر دستور كاربر انجام میشود.
در این حالت كلیه اطلاعات ذخیرهشده محلی به سرویس دهنده ارسال شده
(upload) و پس از آن نسخه به روز شده همان اطلاعات از سرویس دهنده دریافت
(download) و در بانك داده محلی ذخیره میشود.
همگاهسازی در پسزمینه
در این روش برنامه به صورت مداوم اطلاعات را بین سرویسدهنده و
سرویسگیرنده همگاه میكند. بنابراین اطلاعات به روز شده همیشه مهیا است
كه اگر ناگهانی اتصال به سرویس دهنده قطع شود امكان ادامه عملیات به صورت
آفلاین فراهم باشد. علاوه بر این كارایی برنامه به خصوص در حالتی كه سرعت
اینترنت كند است در حد قابل قبولی باقی میماند. این حالت در شكل 5 به
تصویر كشیده شدهاست.
شكل 5 – معماری همگاهسازی در پسزمینه
جمعبندی
روشها و طراحیهای متنوعی برای اجرا و پیادهسازی یك برنامه تحت وب به
صورت آفلاین وجود دارد. گوگل در محیط Google Gears سعی در ارائه راهحلی
ساده و كارا با قابلیت بكارگیری عملی در برنامههای پیادهسازی شده سنتی
تحت وب داشته است. منتظر ارائه نسخه نهایی این محصول هستیم.
منبع: پارس ویک