Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Les différents
design patterns
pour CoreData
Par Emmanuel Furnon, Développeur mobile chez Keyrus
Sommaire
• CoreData
• Architecture
• Stack
• Context
• Les différents designs patterns
• Pattern DAO
• Pattern Active Reco...
Rappels sur CoreData
• Ce n’est pas :
• Une base de données relationnelle
• Un ORM
• Gestion de graphes d’objets
• Stockag...
CoreData Architecture
CoreData Model
Définition de la structure
du graphe d’objets
Les entités Les attributs Les relations
CoreData Context
Object A Object B
Object C Object D
Main Thread
Private Thread
NSPrivateQueueConcurrencyType
NSMainQueueC...
CoreData Store
Store Coordinator
SQLite
File
In
Memory
A B
C D
F E
B
CoreData Stack
?
Core Data Nested Context
• Thread-safe
• Découpage des tâches
• Synchronisation automatique
• Perte de performance sur de
...
Core Data Multiple Stacks
• Découpage des tâches
• Performant sur de larges
données
• Complexe à mettre en place
• Difficu...
Les différents design patterns
• Comment encapsuler la couche de persistance/stockage ?
• Comment requêter une source de d...
Couche DAO
Pattern DAO
• Data Access Object
Source de données
Requêtage Résultats
Objets métiers
Pattern DAO
?
!
DAOs
Impl.
DAO Factory
Pattern DAO
Pattern DAO
Pattern DAO
• Flexibilité/Maintenabilité
• Séparation de la logique
métier
• Testabilité
• Beaucoup de fichiers
• Peu adap...
Couche Active Record
Pattern Active Record
Source de données
Requêtage Résultats
Objets métiers
Pattern Active Record
Pattern Active Record
• Facilité d’utilisation
• Lien direct avec la base
• Flexibilité
• Mise en place de requêtes
comple...
Lien utiles
• MagicRecord :
https://github.com/magicalpanda/MagicalRecord
• Realm : https://realm.io
• Projet d’exemple : ...
Prochain SlideShare
Chargement dans…5
×

Les différents design patterns pour CoreData par Emmanuel Furnon

1 799 vues

Publié le

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

Publié dans : Ingénierie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

×