Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Les différents design patterns pour CoreData par Emmanuel Furnon

1,810 views

Published on

Les différents design patterns pour CoreData par Emmanuel Furnon lors de la CocoaHeads de Septembre 2016 chez Keyrus.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Les différents design patterns pour CoreData par Emmanuel Furnon

  1. 1. Les différents design patterns pour CoreData Par Emmanuel Furnon, Développeur mobile chez Keyrus
  2. 2. Sommaire • CoreData • Architecture • Stack • Context • Les différents designs patterns • Pattern DAO • Pattern Active Record
  3. 3. Rappels sur CoreData • Ce n’est pas : • Une base de données relationnelle • Un ORM • Gestion de graphes d’objets • Stockage des données : • XML • SQLite • En mémoire
  4. 4. CoreData Architecture
  5. 5. CoreData Model Définition de la structure du graphe d’objets Les entités Les attributs Les relations
  6. 6. CoreData Context Object A Object B Object C Object D Main Thread Private Thread NSPrivateQueueConcurrencyType NSMainQueueConcurrencyType
  7. 7. CoreData Store Store Coordinator SQLite File In Memory A B C D F E B
  8. 8. CoreData Stack ?
  9. 9. Core Data Nested Context • Thread-safe • Découpage des tâches • Synchronisation automatique • Perte de performance sur de larges données
  10. 10. Core Data Multiple Stacks • Découpage des tâches • Performant sur de larges données • Complexe à mettre en place • Difficulté à débugger
  11. 11. Les différents design patterns • Comment encapsuler la couche de persistance/stockage ? • Comment requêter une source de données ? • Comment lier la logique métier à une base de données ? • Comment assurer un requêtage optimisé et performant ?
  12. 12. Couche DAO Pattern DAO • Data Access Object Source de données Requêtage Résultats Objets métiers
  13. 13. Pattern DAO ? ! DAOs Impl. DAO Factory
  14. 14. Pattern DAO
  15. 15. Pattern DAO
  16. 16. Pattern DAO • Flexibilité/Maintenabilité • Séparation de la logique métier • Testabilité • Beaucoup de fichiers • Peu adapté aux petits projets
  17. 17. Couche Active Record Pattern Active Record Source de données Requêtage Résultats Objets métiers
  18. 18. Pattern Active Record
  19. 19. Pattern Active Record • Facilité d’utilisation • Lien direct avec la base • Flexibilité • Mise en place de requêtes complexes
  20. 20. Lien utiles • MagicRecord : https://github.com/magicalpanda/MagicalRecord • Realm : https://realm.io • Projet d’exemple : https://github.com/efurnon/CoreData-Test

×