4 Eylül 2013 Çarşamba

Windows Runtime Uygulamalarında Veritabanı Kullanımı

   Windows 8 için uygulama geliştirmeye başladığımda kafamı belki en çok karıştıran konu veritabanıdır. Uygulamam için bir veritabanı oluşturmam gerekiyordu fakat verilerimi nerede depolayacağımı ve onlara nasıl erişeceğimi bir türlü anlayamamıştım. Yaptığım uzun araştırma sonucu öğrendim ki öyle eskisi gibi access’i veya SQL’i kulanamayacaktım çünkü Microsoft, Metro stil uygulamalarında doğrudan yerel veritabanı imkanı sağlamıyor. Bunun için, yani kullanıcılara ait verileri depolamanın en etkili yöntemlerinden biri SQLite’ı kullanmak. Ama isterseniz önce Windows 8 uygulamalarının sürekli etkileşimde olduğu veri tiplerini inceleyelim.




Uygulama Verileri (App Data)

   Uygulama verileri, uygulamanın kendisinin oluşturduğu ve yönettiği veri tipidir. Bu veri tipine örnek olarak kullanıcı tercihleri (user preferences) ve uygulamanın durumu (state) örnek gösterilebilir. Bu veriler uygulamamız var oldukça vardır ve sadece belli bir uygulama için bir anlam ifade eder. Uygulama verilerini kaydederken kullanabileceğimiz yöntemler ise şu şekilde:
  • Application Data APIs for the Windows Runtime
  • IndexedDB (pek tavsiye edilmese de kullanıcı verilerini saklamak için de kullanılabilir.)
  • Extensible Storage Engine (ESE)
  • HTML5 Web Storage
  • WinJS.Application.sessionState
  • WinJS.Application.local state storage
  • WinJS.Application.roaming state storage
   Bu yazıda asıl amacım kullanıcı verilerinin depolanması olduğu için uygulama verileri üzerinde pek fazla durmuyorum. Başka bir yazı da bu kısmı daha derin bir şekilde inceleyeceğim.


Kullanıcı Verileri (User Data)

   İşte beni daha çok uğraştıran kısım burasıydı. Kullanıcı verileri adından da anlaşılacağı üzere kullanıcıların uygulamayı kullanırken oluşturdukları ve kullandıkları veri tipidir. Uygulama verilerinin aksine kullanıcı verileri sadece bir değil birçok uygulama tarafından kullanılabilir. Yani bir uygulamada kullanıcının girdiği veriler, başka bir uygulama tarafından da kullanılabilir. Başlıca kullanıcı verilerini depolama yöntemleri ise şöyle:
  • Windows Runtime StorageFile and file pickers tarafından erişilen kütüphaneler
         Eğer kullanıcı verilerinin uygulamanın yaşam döngüsüne bağlı kalmamasını , örneğin uygulamanın askıya alınmasından veya sonlandırılmasından etkilenmemesini istiyor, uygulamayı kullanmazken de verilerle işlem yapmak istiyorsanız StorageFile sınıfı ihtiyacınız olan depolama seçeneği. File ve Folder Pickers yardımı ile herhangi bir veri boyutu kısıtlaması olmadan yeni dosya veya klasör oluşturabilir, var olanları seçebilir ve içindeki verileri kullanabilirsiniz.
  • OneDrive
         Bir uygulama geliştiriyorsanız ve kullanıcıların verilerine tek bir cihaza bağlı kalmadan birçok cihazdan ulaşmalarını istiyorsanız OneDrive sizin için iyi bir seçenek. OneDrive’ı kullandığınız zaman kullanıcılar kendi OneDrive hesaplarının boyutu izin verdiği miktarda veriyi bulutta depolayabilir ve bu verilere birçok cihazdan erişebilirler.
  • HTML5 File API
         Bu depolama türü sadece dosya indirme ve yükleme gereken işlemlerde tercih edilen bir tür. Uygulama sonlandırıldığında indirme-yükleme işlemine devam edilmesini istiyorsanız Windows Runtime BackgroundTransfer alanadını(namespace) kullanmanız gerekir.

   Bu seçeneklerin haricinde isterseniz üçüncü parti veritabanı çözümleri kullanabilirsiniz. Bu üçüncü parti veritabanına verilecek en büyük örnek bence SQLite.


SQLITE – Hızlı, Küçük, Güvenilir

   SQLite, ANSI-C dili ile geliştirilmiş, herhangi bir yapılandırma gerektirmeyen ilişkisel bir veritabanı sistemi. Diğer SQL veritabanlarının aksine, SQLite ayrı bir sunucu işlemi gerektirmez. Oldukça fazla boyutta veriyi kaydetmemize olanak tanır. SQLite, depolama için kullandığımız diskin üzerindeki dosyalardan okuma ve dosyalara yazma işlemini doğrudan yapar. SQLite veritabanları 32 bit ve 64 bit makineler arasında ve  farklı işletim sistemleri arsında (Unix (Linux, Mac OS-X, Android, iOS) and Windows (Win32, WinCE, WinRT )) taşınabilir ve kullanılabilir. Fakat belirtmekte fayda var;SQLite, SQL’in tüm özelliklerini taşımaz. Taşımadığı özellikleri şöyle sıralayabiliriz:
  • Right Join ve Full Join
  • Alter Table komutu (Rename Table ve Add Column hariç)
  • Trigger desteği (For Each Row trigger’ı destekleniyor fakat For Each Statement desteklenmiyor.
  • View’lere yazma
  • Grant ve Revoke
   SQLite’ı Windows 8/8.1 uygulamalarında kullanmak için yapmanız gereken tek şey “SQLite for Windows Runtime” uzantsını indirmek. Bu uzantıyı indirip projenizde referans olarak gösterdikten sonra SQLite’ı kullanmaya başlayabilirsiniz. Bu işlemlerin nasıl yapıldığını şu sayfadan öğrenebilirsiniz.


Görüşmek üzere..

Hiç yorum yok:

Yorum Gönder