Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

24jan/112

AIR SQLite – Mode synchrone et asynchrone

Après cette introduction aux bases de données locales SQLite avec Adobe AIR, on va parler d'une notion importante: le mode d'exécution de votre base SQLite.

Celui-ci est primordial car il existe 2 modes d'exécution qui vont changer votre manière d'écrire votre code ActionScript. Vous trouverez des bouts de code sur le net utilisant ces 2 techniques, mieux vaut donc comprendre comment cela fonctionne.

Les deux modes d'exécution d'une base SQLite AIR sont synchrone et asynchrone.

Mode d'exécution synchrone

La méthode synchrone est celle qui requiert le moins de code et qui est le plus simple à utiliser. Si vous avez une méthode qui requête votre BDD, vous serez sûr qu'aucune autre méthode ne sera exécutée avant que votre requête soit terminée.

Pour une utilisation légère de votre base de donnée, si ce n'est pas un point central de votre application, vous pouvez utiliser le mode synchrone pour vous simplifier la vie et la maintenance.

Même si cela semble être une bonne chose, il y a un effet pervers à l'utilisation du mode synchrone. Comme votre programme va attendre la réponse de la base, toutes les autres méthodes ne vont donc pas s'exécuter et votre application va se mettre "en pause" pendant le temps de la requête. Si votre application utilise des requêtes assez lourdes, votre application pourrait donc "freezer" pendant quelques secondes.

Pour éviter cela, il vous faudra utiliser le mode asynchrone.

Mode d'exécution asynchrone

Le mode d'exécution asynchrone est plus puissant mais va vous demander d'écrire davantage de code. En asynchrone, le résultat de votre requête ne vous sera pas renvoyé de suite. Une fois la requête exécutée, AIR va envoyer un évènement vous indiquant que le traitement est terminé. Pour manipuler une base en asynchrone, vous devez donc ajouter des event listeners pour traiter le résultat et les erreurs.

En revanche, pendant le traitement, votre application va continuer à répondre. Si votre requête prend par exemple 5 secondes, vous pourrez afficher un petit élément graphique indiquant à votre utilisateur qu'il doit patienter. En mode synchrone, l'application aurait été gelée pendant 5 secondes.

C'est le mode d'exécution à préférer, sauf si votre application n'a que très peu besoin d'une base SQL.

Utiliser le mode synchrone et asynchrone ?

La définition du mode d'exécution se fait au moment de l'ouverture de la base de donnée. Vous ne pouvez donc pas exécuter certaines opérations en mode synchrone puis d'autres en mode asynchrone.

Si vous appelez la méthode SQLConnection.open(), la connexion se fait en mode synchrone et si vous utilisez la méthode SQLConnection.openAsync(), la connexion se fait en mode asynchrone. Une fois l'instance de SQLConnection connectée en utilisant open() ou openAsync(), le mode d'exécution est fixe.

Si vous souhaitez toute de même changer de mode d'exécution, il vous faudra fermer puis rouvrir la connexion à la base de donnée.

L'ouverture et la fermeture d'une base SQLite peut prendre un certain temps (+0-2 secondes), il est donc déconseillé d'ouvrir / fermer la connexion à la BDD en permanence.

Articles similaires

Commentaires (2) Trackbacks (0)
  1. Concernant la fin de ton article, on peut aussi imaginer créer deux connexions dès le début de l'application: l'une étant synchrone et l'autre asynchrone et les stocker toutes deux de manière persistante (dans un singleton par exemple).Comme cela on évite la fermeture et ré-ouverture obligatoires du changement de mode de connexion.

  2. Effectivement, mais attention aux problèmes de synchro ^^

    Fabien


Leave a comment

(required)

Aucun trackbacks pour l'instant