درک گزینه های ذخیره سازی داده های آفلاین

ساخت یک تجربه آنلاین قوی در iOS نیازمند انتخاب دقیق از فن آوری های ذخیره سازی محلی است.[۱] انتخاب مناسب به پیچیدگی داده ها، نیازها و الزامات هماهنگ سازی شده بستگی دارد.[۱۰] داده های تنظیم شده با سرور (FLT-1) و تنظیم داده های استاندارد را با استفاده از فایل های غیر مستقیم تنظیم می کند.

استراتژی های کلیدی برای مدیریت داده های آفلاین

معماری Synchronization

برنامه های iOS ابتدا باید تعریف کنند که چگونه حالت محلی و دور (LT) هماهنگ می شود (FLT:0 Local-first data Model : همه می توانند به ذخیره سازی محلی بروند، سپس به سرور متصل شوند و سپس به ترتیب همگام سازی داده ها را در زمان اتصال، تضمین می کند که برنامه بدون در نظر گرفتن حالت شبکه، پاسخگو باقی می ماند. [F:2.]

استراتژی های حل تعارض

هنگامی که هر دو داده محلی و از راه دور به طور مستقل تغییر می کنند، درگیری ها ایجاد می شوند، یک استراتژی حل را انتخاب کنید که متناسب با مورد استفاده شما باشد:

  • آخرین نوشتن وان (LW) : نسخه را با آخرین بارتamp قبول می کند، اما می تواند ویرایش های کاربر را دور بزند.
  • با تکرار: [FLT 1] برای داده های سفارش شده مانند لیست، عملیات ادغام (موارد، به روز رسانی، حذف) با استفاده از تحول عملیاتی یا CRDTs.
  • قطعنامه تعارض انسانی: ارائه هر دو نسخه به کاربر و اجازه دهید آنها تصمیم بگیرند.
  • اداره خدمات دهنده: سرور همیشه پس از مقایسه بردارهای نسخه برنده می شود استفاده در هنگام داده های سرور می تواند به صورت عمودی باشد.

متادیتا تعارض (به عنوان مثال، و نقل قول؛ نسخه محلی و و و نقل قول؛ نسخه سرور و نقل قول؛) در طرح محلی خود را به طوری که دستگیره های درگیری می توانند تصمیم گیری های آگاهانه را با هر دو قطره اتصال و تغییرات همزمان.

قابلیت های هوشمند Caching و Data Access

{{b}} : {FLT} {b} {FLT} {FLT}}} {\displaystyle }}} {FLT}}} {Fching}}} {Faste or your own-t} برای ذخیره سازی طولانی مدت، از فایل های ذخیره سازی شده (F=F=f=f=cching) استفاده کنید.

پیگیری تغییرات کاربر-Initiated Change

هنگامی که کاربر یک عملیات نوشتن را در حالی که آفلاین انجام می دهد، اقدام در یک فروشگاه محلی را انجام می دهد (یک رویکرد مشترک ایجاد یک جدول عملیاتی (FLT:1) است که نوع عملیات را ثبت می کند، نقطه پایانی، محموله و زمان بندی را به صورت آنلاین، برنامه این عملیات را به منظور (یا با وضوح وابستگی) اجرا می کند، برای اجرای خطای عملیات منحصر به فرد (F) یا خرابی های سیستم reactioning مجدد (F2.

اجرای حالت آفلاین در iOS

تشخیص تغییرات اتصال پذیری

از چارچوب شبکه (NWPathMonitor] یا قدیمی تر Reachability [ کلاس برای مشاهده انتقال شبکه استفاده کنید. NWPathMonitor یک جریان واکنشی از وضعیت اتصال (Wi-Fi، سلولی، یا اتر) را فراهم می کند تا مسیر به روز رسانی در یک پس زمینه و یک مثال اطلاع رسانی برای لایه UI را مشاهده کند:

let monitor = NWPathMonitor()
monitor.pathUpdateHandler = { path in
 let isOnline = path.status == .satisfied
 DispatchQueue.main.async {
 NotificationCenter.default.post(name: .networkStatusChanged, object: isOnline)
 }
}
monitor.start(queue: .global())

این را گسترش دهید تا بین اتصالات گران قیمت (سلول) و محدود تفاوت قائل شوید تا بتوانید همگام سازی های بزرگ را کاهش دهید.

تغییر منابع داده بدون درز

هنگامی که اتصال کاهش می یابد، برنامه باید به طور شفاف از طریق API از طریق اتصال به ذخیره سازی محلی (FLT:2) تغییر کند؛ با روش هایی مانند FLT 3:0، لایه انتزاعی منبع داده و [FLT:] یک پروتکل (به عنوان مثال، را با استفاده از یک الگوی مشاهده محلی و تنظیم کننده (F7) تنظیم کنید.

بازخورد کاربر و شفافیت

کاربران را به صورت آفلاین و چگونگی ذخیره سازی اقدامات خود را.(FLT:0) نوار ناوبری سفارشی یا بنر برای نشان دادن وضعیت آفلاین (به عنوان مثال، و نقل قول؛ شما به صورت آفلاین تنظیم می شود؛ به طوری که تغییرات صفحه نمایش داده شده است؛ نشان دهید که یک شاخص [F:2sync [F:3] (pining) در طول فرآیند ویرایش، پردازش تصاویر و یا تنظیم مجدد، هنگامی که یک نوار نمایش داده می تواند به صورت تغییر در صفحه نمایش داده شود.

تست و حذف سناریوهای آفلاین

تست رفتار آفلاین بسیار مهم است اما اغلب نادیده گرفته می شود. Simulate network Condition با استفاده از ابزار Xcode’s Network Link HVAC (در دسترس از طریق سخت افزار IO Tools).

  • از دست دادن اتصال در طول یک عملیات نوشتن
  • اتصال مجدد در حالی که صف های همگام سازی متعدد فعال هستند.
  • تعارض هایی که در آن دو دستگاه رکورد یکسانی را به صورت آفلاین تغییر می دهند.
  • داده های بزرگ با اتصال های آهسته یا متناوب همگام می شوند.
  • برنامه خاتمه دادن به اواسط-sync

اضافه کردن سیستم انتقال حالت شبکه، صف بندی همگام سازی و قطعنامه های تعارض (FLT:0LT:OSLog با زیر سیستم های سفارشی برای ثبت این رویدادها در تولید برای مسائل مربوط به اشکال زدایی کاربر: Unit را تست داده های ارائه دهنده را با تزریق ارائه دهندگان که شبیه سازی / حالت آفلاین برای تست های ادغام، استفاده از یک محیط اختصاصی برای اجرای سیستم عامل (Fglementing) می تواند به طور مستقیم یا پروکسی اتصال دهنده های اتصال را از طریق اتصال دهد.

نتیجه گیری

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