+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Membre à l'essai
    Inscrit en
    octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 84
    Points : 22
    Points
    22

    Par défaut ASP MVC - HTML5 Offline mode

    Bonjour,

    je développe une application accessible en mode "hors ligne" en utilisant les différentes fonctionnalités d'HTML5.

    Cette application se résume à une liste de clients avec un bouton permettant de créer une commande sur ce client.

    /app/customers => /app/customers/123/orders/create (123 étant l'ID du client).

    Lorsque l'utilisateur se connecte je récupère en ajax la liste des clients puis la met dans le localStorage.
    Lorsque le serveur est offline je récupère la liste des clients à partir du localStorage.

    Jusque là tout va bien .

    Mon est problème survient lorsque j'essaye de créer une commande pour un client en étant hors ligne.
    Je tente d'accéder à l'adresse /app/customers/123/orders/create mais cette page n'étant pas spécifiée dans le manifest, je n'y arrive pas.

    Ma question est donc que dois-je spécifier dans mon manifest pour pouvoir mettre en cache une ressource dont l'URI dépend de l'ID du client.

    Merci pour votre aide !

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CACHE MANIFEST
     
    # Version 0.1
     
    CACHE:
    [...] (css, img, js)
     
    NETWORK:
    *
     
    FALLBACK:
    / offline.html
    Scripts/online.js Scripts/offline.js

  2. #2
    Membre Expert Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 717
    Points : 1 351
    Points
    1 351

    Par défaut

    Salut,

    je ne comprend pas ce que tu veux faire!
    Il semblerait que tu veuilles stocker en cache les pages de chaque client?
    Je ne pense pas que ce soit une bonne idée.

    Je te conseillerai de plutot faire correspondre ton url à une action et dans celle ci tu recuperes les infos de ton client depuis ton localStorage.

    Bon courage.

  3. #3
    Membre à l'essai
    Inscrit en
    octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 84
    Points : 22
    Points
    22

    Par défaut

    Désolé pour mon manque de clarté !

    Je ne souhaite évidemment pas stocker les pages de chaque clients

    Je pense qu'il y a deux choses à mettre en cache. La liste des clients :

    Code :
    1
    2
    3
    4
    5
     
    [ 
    { id: 1, name: 'Client 1' },
    { id: 2, name: 'Client 2' },
    ]
    Et la page me permettant de créer une commande (dans laquelle j'irai chercher les infos du client dans le localStorage).

    En mode online la page me permettant de créer une commande a l'adresse suivante : /app/customers/123/orders/create (où 123 est l'ID du client).

    Lorsque j'essaye d'accéder à cette même page en mode offline, le navigateur me redirige vers /app/offline.html (FALLBACK du manifest) ce qui est normal car la page à laquelle j'essaye d'accéder n'a pas été mise en cache.

    Donc je veux juste savoir comment mettre en cache cette page.

    Merci !

  4. #4
    Membre Expert Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 717
    Points : 1 351
    Points
    1 351

    Par défaut

    En fait en relisant, ton approche est pas bonne.
    Quand tu seras en offline, tu n'accedes pas au serveur donc tu n'accedes pas aux controlleurs!!

    Donc si tu veux vraiment une version offline, tu vas devoir tout ecrire en JS!


    Dans ton manifest tu definis normalement une page vers laquelle tu rediriges s'il y a un probleme de connexion. Si tu veux faire de la gestion d'Id et d'actions, il va falloir que tu réécrives tout en Javascript...
    Jene suis pas certain que ce soit une binne idée.

  5. #5
    Membre à l'essai
    Inscrit en
    octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 84
    Points : 22
    Points
    22

    Par défaut

    La logique métier est déjà en partie écrite en javascript. Dans mon cas le controlleur est utilisé juste pour renvoyer à la vue les données du client.

    La solution serait de modifier la façon dont j'accède à mes pages devant être mise en cache et la manière d'échanger des données entre elles.

    Pour résumer :

    /app/customers/list (pour accéder à la liste des clients)
    /app/customers/orders/create (pour créer une commande)

    Lorsque je clique sur un des clients de la liste, je sauvegarde dans le localStorage le client sélectionné puis je redirige vers la page de création de commande.

    Lorsque je charge la page de création de commande je récupère dans le localStorage le client selectionné.

    Ce qui m'embête c'est que les URL perdent de leur sens, mais puis-je faire autrement ?

    Quand tu dis que tu n'est pas certain que ca soit la bonne solution, tu parles du fait de tout réécrire en javascript ? Si oui quelle autre solution ai-je pour gérer le mode offline de mon application.

    Merci de ton aide.

  6. #6
    Membre Expert Avatar de bizet
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2005
    Messages
    717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juin 2005
    Messages : 717
    Points : 1 351
    Points
    1 351

    Par défaut

    Citation Envoyé par redkan Voir le message
    Quand tu dis que tu n'est pas certain que ca soit la bonne solution, tu parles du fait de tout réécrire en javascript ? Si oui quelle autre solution ai-je pour gérer le mode offline de mon application.

    Merci de ton aide.
    Une appli web se doit, amha, d'être et de rester connecté. Sinon il ne s'agit plus d'une application web...
    Je ne connais pas tes contraintes, mais je me serais plutot tourné vers une appli lourde avec connexion à des services WCF.

    Une appli hors ligne c'est à dire? Genre la personne sur son ordi portable dans le train sans réseau?
    Mais quand elle va faire appel à l'url, le navigateur va lui retourner une erreur comme quoi il n'est pas connecté au net...
    Et s'il y a du cache, c'est seulement le code généré qui est caché!

    Dans ton cas, tu parles de cache. Soit, mais si ton utilisateur paramètre son navigateur pour vider le cacher a chaque fois qu'il ferme le navigateur.... Au prochain demarrage les pages ne seront plus accessibles.

    Tu vas avoir des pages / du code en cache que tu ne gères pas. Tu ne sais pas si les différentes parties seront toujours en cache...

    Enfin tu dois pouvoir tout gérer depuis le JS, mais je pense que ca va etre une bonne usine a gaz

  7. #7
    Membre à l'essai
    Inscrit en
    octobre 2007
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 84
    Points : 22
    Points
    22

    Par défaut

    Une appli web se doit, amha, d'être et de rester connecté. Sinon il ne s'agit plus d'une application web...
    Dans ce cas quel est l'intérêt de l'API Offline d'HTML5 ? Il s'agit d'une application WEB à laquelle je veux donner la possibilité de fonctionner en mode offline, comme peut l'être un Google Docs ou un Gmail.

    Je ne connais pas tes contraintes, mais je me serais plutot tourné vers une appli lourde avec connexion à des services WCF.
    Je connais pas assez bien WCF mais je pense que les problèmes auraient étés a peu près les mêmes.

    Une appli hors ligne c'est à dire? Genre la personne sur son ordi portable dans le train sans réseau?
    En gros c'est ça, c'est une application de prise de commandes pour des personnes itinérantes. Ces personnes n'ont pas forcément de connexion et lorsqu'elles visitent leurs clients, elles doivent quand mêmes enregistrer leurs commandes.

    Et s'il y a du cache, c'est seulement le code généré qui est caché!
    En effet mais le navigateur interprete quand même le code. D'où l'intérêt de d'écrire la logique métier en javascript, code qui sera aussi "caché".

    Dans ton cas, tu parles de cache. Soit, mais si ton utilisateur paramètre son navigateur pour vider le cacher a chaque fois qu'il ferme le navigateur.... Au prochain demarrage les pages ne seront plus accessibles.
    Non car il y a deux types de caches qu'on pourrait appeler "Browser cache" et "Application cache". L'exemple que tu mentionnes fait référence au premier. Le second lui n'est pas supprimer quand l'utilisateur décide de supprimer le "Browser cache" et c'est celui là (Application cache) qui est utilisé par l'API Offline d'HTML5 et par le localStorage.

    Code :
    Enfin tu dois pouvoir tout gérer depuis le JS, mais je pense que ca va etre une bonne usine a gaz
    Pourtant sur papier ca parrait simple : Je cache les pages, et la logique métiers. Lorsque je suis hors ligne j'affiche les pages en cache puis récupère les infos et sauvegarde dans le localStorage. Lorsque je suis en ligne j'affiche les pages du serveur (si plus récente) récupère les infos et sauvegarde via des appels ajax au serveur.

    La grosse difficulté je pense reste le manque d'exemples et de bonnes pratiques dû au fait que ce sont des technos assez récentes.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •