کلاس سورس باز MOption برای ذخیره تنظیمات در Adobe AIR

اگر از برنامه‌نویسان ActionScript باشید، مطلع هستید که شیوه دسترسی به سیستم فایلها در برنامه‌های مبتنی بر فلش از قوانین Flash Security Sandbox پیروی میکند.
این قوانین، برای محدود کردن دسترسی فایلهای Flash و AIR در حالات وب و Application برای خواندن و نوشتن بر روی دیسک به شکلهای متفاوتی اعمال می‌شوند.
اصولا یک فایل Flash تنها قادر به نوشتن در پروفایل Sandbox اختصاصی خود در مسیر “username\Application Data\Macromedia\Flash Player ” می‌باشد. برای انجام این کار هم عموما از SharedObject ها استفاده می‌شود که نوعی cookie برای ذخیره اطلاعات فلش به حساب می‌آیند.
البته امکان استفاده از کلاس FileReference و نمایش CommonDialog برای Open و Save فایلهای خارج از این محدوده نیز وجود دارد. (با کسب اجازه از کاربر)

در برنامه‌های AIR، به دلیل Rich Internet Application بودن آنها محدودیتی برای خواندن فایلها وجود ندارد. برای نوشتن آنها هم با استفاده از راهکارهای خاصی می‌توان دسترسی کاملی به دیسک داشته و فایلها را در مسیرهای مختلف ذخیره نمود.
کلاس MOption با توجه به این مسئله که برنامه‌های AIR جنبه Application بودن هم دارند، با هدف ذخیره سازی تنظیمات یک برنامه در فایلهای مبتنی XML طراحی شده است. این کلاس از کلاسهای File و FileStream برای ذخیره سازی بر روی دیسک استفاده نموده و فرآیند ثبت و بازیابی مقادیر را در برنامه‌های AIR تا حد زیادی ساده خواهد کرد.
به عنوان مثال، به تابع ذخیره‌سازی این کلاس دقت بفرمایید:
public function saveData()
{
    _file = new FileStream ;            

try
{
        _file.addEventListener(IOErrorEvent.IO_ERROR, evtSaveError);
        _file.addEventListener(Event.CLOSE, evtSaveComplete);

        _file.openAsync(_tempFile, FileMode.WRITE);
        _file.writeUTFBytes(_xmlHeaderStr);
        _file.writeUTFBytes(_xml.toString());
}
catch (e:SecurityError)
{
        dispatchEvent(new Event(MOption.SAVE_ERROR));
}
finally
{
        _file.close();
}
}

دریافت سورس کلاس MOption به همراه مثال

پ.ن: هر چند که گذر از محدودیت Sandbox در فایلهای swf بسیار مشکل است، اما در حال بررسی روشی برای ذخیره سازی SharedObject ها در مسیرهای خارجی هستم.

مراجع تکمیلی:
Best security practices for developers
Flash Sandboxes
Security protection through sandboxes

About محمد شمس

برنامه‌نویس، طراح انیمیشن و علاقمند به هوش مصنوعی

One Comment

  1. اتفاقا من امروز داشتم به همین موضوع فکر میکردم و پست شما رو که دیدم خیلی خوشحال شدم .واقعا ممنون .

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


× 1 = 2