همواره آرزوی بزرگ و دیرینه توسعهدهندگان برنامههای تحت وب ادامه اجرای برنامههایشان در صورت قطع شدن ارتباط از اینترنت بودهاست. اکنون گوگل آمده است که کابوس چند ساله آنان را به رویایی شیرین تبدیل کند!
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 سعی در ارائه راهحلی ساده و کارا با قابلیت بکارگیری عملی در برنامههای پیادهسازی شده سنتی تحت وب داشته است. منتظر ارائه نسخه نهایی این محصول هستیم.
خبر جالبی بود .
مرســــــــــــــــــــــــــی زانیــــــــــــــــــــــــــــار !!
سلام زانیار جان.
من برگشتم!!!
خیلی برنامه ی جالبیه،خوبه ها!!
مرسی از توضیحات کامل در مورد این برنامه .
خوش باشی.
خداحافظ.
مرسی آقا زانیار!
مطلب جالب وکامل ومفیدی استش!
ممنون!خیـــــــــــلی خوب بود!