2009-11-04 3 views
0

Dans mon application Flex, j'utilise beaucoup les services. J'ai besoin d'eux pour mettre à jour mes données dans l'application, alors appelez-les assez souvent. Actuellement, je mis en œuvre de la manière suivante:AS3: Comment organiser le code, au cas où les services à distance sont appelés

1) Il est un fournisseur de services (classe AMFLoader) 2) et gestionnaire de réponse (classe Responder)

Le code ressemble à ceci:

public function AMFLoader(url:String):void 
{ 
    gateway = new NetConnection(); 
    gateway.connect(url); 
} 

public function callAMFLoader(serviceName:String, param:String, resultHandler:AMFResultHandler):void 
{ 
    gateway.addEventListener(IOErrorEvent.IO_ERROR, resultHandler.onIENetError); 
    gateway.addEventListener(NetStatusEvent.NET_STATUS, resultHandler.onNetStatus); 
    responder = new Responder(resultHandler.onSuccess, resultHandler.onFalse); 
    gateway.call(serviceName,responder, param); 

} 

et Résultat classe de gestionnaire:

public class AMFResultHandler 
{ 
    public function AMFResultHandler() 
    { 
    } 


    public function onSuccess(result:*):void 
    { 
     trace("Result from basic AMF Result handler on success: " + result); 
    } 

pour faire un appel à un service de base, je tends la classe de gestionnaire de résultats et créer des fonctions personnalisées pour traiter re sultes. Habituellement, sur les dernières étapes, je lie les données reçues du service aux variables globales que j'ai définies dans l'application principale, puis je l'utilise dans d'autres classes.

Actuellement, j'ai remarqué que c'est assez ennuyeux d'utiliser des variables globales, je ne sais pas si c'est un bon style de programmation pour le faire. Par exemple lorsque j'ai essayé de refactoriser mon code, j'ai remarqué qu'il est parfois difficile de comprendre qui et quand (et pourquoi), les données y ont été renseignées.

Peut-être que vous pouvez suggérer un moyen de stocker les données à partir des appels de services. La principale chose que je n'arrive pas à comprendre est que nous ne pouvons pas simplement créer une méthode, par ex. getData, et appelez-le quelque part dans l'application, car appeler le service et stocker les données sont des choses différentes (comme les données sont reçues uniquement sur un événement) ....

Merci d'avance.

Répondre

1

Ce que vous demandez est l'un des principaux objectifs d'un framework MVC. Plus précisément, vous parlez du modèle ou de l'interface de données. Ce que vous devriez faire, si vous ne voulez pas aller avec un framework complet, c'est créer 2 classes.

1) DataObject

2) DataModel

où "Data" est remplacée par quelque chose intuitive comme utilisateur ou produits. Dans DataObject, vous conservez uniquement les propriétés des données. De même, il s'agit du seul endroit où les données sont supposées correctes. Le DataObject n'est cependant accessible directement via le DataModel. Dans le modèle de données, vous conservez tous les getters et setters du DataObject ainsi que tous les appels de service à distance dont vous avez besoin pour remplir le DataObject.

Ce n'est que le début du développement d'applications de style MVC et si vous voulez vraiment passer à un code plus souple et plus gérable, vous devriez envisager d'utiliser un framework complet. Deux que je recommande sont:

1) Swiz (http://swizframework.org/): un cadre d'événement super simple qui exploite vraiment la puissance de flex.

2) PureMVC (http://puremvc.org/): une structure de code MVC facile à comprendre qui met l'accent sur le découplage de code et l'architecture MVC stricte.

Je dis commencer avec l'un de ces deux et vous serez sur la bonne voie pour devenir un meilleur développeur flex.


Deux ou trois didacticiels:

Swiz: http://vimeo.com/7166397

PureMVC: http://active.tutsplus.com/tutorials/workflow/understanding-the-puremvc-open-source-framework/

+0

Plonger dans ... Alors à bientôt :) J'espère que je m'habituerai à l'utiliser rapidement –

1

Il existe plusieurs cadres Flex qui peuvent vous aider:

Chacun de ces cadres vous aidera à mieux organiser vos modèles et services. Jetez un coup d'œil à chacun d'entre eux et choisissez-en un qui vous convient.

0

Personnellement, je aime Maté aussi bien. Je suis vraiment en train de creuser leur cadre et je le réaménage pour quelques projets sur lesquels je travaille actuellement.

Questions connexes