les différents design patterns pour coredata par emmanuel furnon

20
Les différents design patterns pour CoreData Par Emmanuel Furnon, Développeur mobile chez Keyrus

Upload: nicolas-lourenco

Post on 16-Apr-2017

1.564 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Les différents design patterns pour CoreData par Emmanuel Furnon

Les différents design patterns pour CoreData

Par Emmanuel Furnon, Développeur mobile chez Keyrus

Page 2: Les différents design patterns pour CoreData par Emmanuel Furnon

Sommaire• CoreData• Architecture• Stack• Context

• Les différents designs patterns• Pattern DAO• Pattern Active Record

Page 3: Les différents design patterns pour CoreData par Emmanuel Furnon

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

Page 4: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Architecture

Page 5: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData ModelDéfinition de la structure

du graphe d’objets

Les entités Les attributs Les relations

Page 6: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Context

Object A Object B

Object C Object D

Main Thread

Private Thread

NSPrivateQueueConcurrencyType

NSMainQueueConcurrencyType

Page 7: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Store

Store Coordinator

SQLite

File

InMemory

A B

C D

F E

B

Page 8: Les différents design patterns pour CoreData par Emmanuel Furnon

CoreData Stack

?

Page 9: Les différents design patterns pour CoreData par Emmanuel Furnon

Core Data Nested Context• Thread-safe

• Découpage des tâches

• Synchronisation automatique

• Perte de performance sur de larges données

Page 10: Les différents design patterns pour CoreData par Emmanuel Furnon

Core Data Multiple Stacks• Découpage des tâches

• Performant sur de larges données

• Complexe à mettre en place

• Difficulté à débugger

Page 11: Les différents design patterns pour CoreData par Emmanuel Furnon

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 ?

Page 12: Les différents design patterns pour CoreData par Emmanuel Furnon

Couche DAO

Pattern DAO• Data Access Object

Source de données

Requêtage Résultats

Objets métiers

Page 13: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO?!

DAOs

Impl.

DAO Factory

Page 14: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO

Page 15: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO

Page 16: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern DAO

• Flexibilité/Maintenabilité

• Séparation de la logique métier

• Testabilité

• Beaucoup de fichiers

• Peu adapté aux petits projets

Page 17: Les différents design patterns pour CoreData par Emmanuel Furnon

Couche Active Record

Pattern Active Record

Source de données

Requêtage Résultats

Objets métiers

Page 18: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern Active Record

Page 19: Les différents design patterns pour CoreData par Emmanuel Furnon

Pattern Active Record

• Facilité d’utilisation

• Lien direct avec la base

• Flexibilité

• Mise en place de requêtes complexes

Page 20: Les différents design patterns pour CoreData par Emmanuel Furnon

Lien utiles

• MagicRecord : https://github.com/magicalpanda/MagicalRecord

• Realm : https://realm.io

• Projet d’exemple : https://github.com/efurnon/CoreData-Test