Un framework pour exposer une base CoreData via une API REST

Pour ceux que cela peut intéresser, je suis actuellement en train de travailler sur un framework libre (licence Apache v2.0) qui a pour objectif de simplifier l'utilisation en réseau d'une base de données CoreData.



Ceux qui se sont déjà  prêtés au jeu de CoreData en réseau (avec des objets distribués ou pas) savent que ça peut être cool comme outil bien que plus réservé aux développeurs Mac.



Ce framework bien qu'assez avancer pour la partie serveur est encore loin d'être parfait dans ma vision des choses.



Actuellement, le serveur est viable bien qu'il ait besoin de stress test pour être vraiment validé.



Côté client il me reste encore beaucoup de boulot pour obtenir quelque chose d'assez transparent.



Si certains veulent forker et proposer des améliorations, n'hésitez pas !



https://github.com/ygini/ObjectiveREST

Réponses

  • muqaddarmuqaddar Administrateur
    Cela semble ressembler un peu à  RestKit non ?
  • 'muqaddar' a écrit:


    Cela semble ressembler un peu à  RestKit non ?




    Non dans le sens ou RESTKit propose un client REST relié à  du CoreData pour le cache. Ce que je vise ici c'est une mise en réseau d'une base CoreData existante. Tu as une application monoposte qui utilise du CoreData, tu veux passer à  un mode client serveur, actuellement soit tu joue avec des Distribued Object et c'est bancale, soit tu vire tout CoreData et tu passe en SQL...



    L'idée derrière ObjectiveREST c'est de partir d'un modèle CoreData peu ou pas modifié et de l'exposer via HTTP/S pour en faire un serveur.



    Une fois que je suis satisfait du serveur la phase 2 sera le client. Tu as ta même application monoposte et sa version serveur. Proposer quelque chose qui se sert du modèle CoreData pour aller récupérer les données sur le serveur sans rien avoir à  configurer tout en proposant un cache local géré automatiquement.



    L'avantage en partant de CoreData c'est qu'on retire toute la complexité de gestion d'une base de donnée et d'un mapping d'objet manuel de RESTKit.
  • muqaddarmuqaddar Administrateur
    Ok, ok, j'ai compris, je vois la différence.



    Pour ma part, je n'ai jamais touché à  CoreData (et j'ai mes raisons), mais ça viendra p-e un jour ! image/smile.png' class='bbc_emoticon' alt=':)' />
  • yoannyoann Membre
    Salut la compagnie,



    Je viens de finir une nouvelle version de mon framework ObjectiveREST. C'est toujours à  l'état de PoC mais j'ai ajouté un client, un custom AtomicStore pour CoreData qui permet de lire directement les données du serveur tout en ayant du CoreData en mémoire coté client.



    La démo que je fournis est un player MP3 que j'utilisais pour des cours. J'ai simplement repris cette application monoposte, sur le serveur j'ai donnée à  ObjectiveREST mon MOC et sur le client, j'ai juste changé le type de persistantStore son URL.



    Pour les infos c'est toujours sur https://github.com/ygini/ObjectiveREST
  • Moi ca pourrait m'intéresser.



    Je viens de finir mon app ou toutes les données sont enregistrées dans une base Core Data et j'ai été attiré par un cloud pour la version online.



    Cependant cette techno pourrait certainement éviter de passer par un cloud non ?



    La base pourra être stocké par exemple sur un iphone "père" ? et distribuer un "identifiant" aux iphone voulant profites de la bdd?



    Serait t'il aussi possible de pouvoir receptioner les nouvelles entrées a la base de donné directement sur tout les iphone mais sans avoir besoin de "refresh"



    A moins que le frame soit plus dédié au partage de donnés statiques? et pas a des entités mises a jours.
  • yoannyoann Membre
    Le framework est essentiellement fait pour du client / serveur sur un même sous réseau. À travers Internet tu ne pourra rien héberger sur ton iPhone (merci les FAI).



    Théoriquement je supporte la lecture écriture (j'ai juste un bug actuellement sur les relations en to-many).



    Aussi il faut que je réécrive le coté client avec un NSIterativeStore au lieu d'un NSAtiomicStore.



    Je te donne plus d'info dans la semaine prochaine si tu veux.
  • Oui ça m'intéresserait. Ca voudrait dire que j'ai une bdd a l'extérieur qui s'occuperait du travail.

    Par contre prévois-tu une gestion des données de manière asynchrone.



    Je m'explique .



    Je travaille sur la base de donné et je voudrais que les données se mettent a jour

    (par exemple dans une TableView: la page se "recharge" automatiquement et UNIQUEMENT si il y a une nouvelle entrée pour après display la row et etc...)
Connectez-vous ou Inscrivez-vous pour répondre.