2010-03-24 7 views
0

Je commence à apprendre un peu de Flex juste pour m'amuser et peut-être pour prouver que je peux encore apprendre quelque chose de nouveau :) J'ai une idée pour un projet et une de ses parties est un composant arborescente selon la configuration.Flex 3: dois-je fournir des données préparées à mon composant ou le faire traiter des données avant l'affichage?

L'idée

Il y a liste d'objets ayant des propriétés comme id, date, heure, nom, description. Et parfois, la liste doit être affichée comme ceci:

  1. premier niveau: Date
  2. deuxième niveau: le temps
  3. troisième niveau: nommer

et parfois comme ceci:

  1. premier niveau: année
  2. deuxième niveau: mois
  3. troisième niveau: jour
  4. quatrième niveau: le temps et le nom

Par niveau je veux dire le niveau d'imbrication bien sûr. Nous pouvons donc avoir des années, des mois, des jours, des heures et ainsi de suite.

Le problème

Quelle pourrait être la meilleure façon de le faire? Je veux dire, est-ce que je devrais préparer des données pour différentes manières d'imbriquer en dehors de la composante ou même en dehors de la flexion? Je peux le faire au niveau du service web en C# où je prévois d'avoir une couche d'accès à la base de données et de l'envoyer pour fléchir et être prêt à afficher du XML ou un tableau d'objets. Mais je me demande si cela ne causera pas de trafic réseau supplémentaire et peut-être inutile. J'ai essayé de pirater du code dans mon composant pour convertir mes objets de données en XML ou ArrayCollection mais je ne connais pas suffisamment Flex et je suis resté bloqué sur l'élimination des doublons ou l'obtention de données spécifiques par une valeur clé. Habituellement, pour faire de telles choses j'ai STL avec des cartes, des ensembles et des vecteurs et je trouve des tableaux Flex et même Dictionnaire un peu confus (j'ai lu la référence du langage et googlé sans aucune chance significative).

La question

Donc, pour résumer les choses: dois-je donner mes données de composants d'arbre préparé pour le type d'affichage choisi ou devrais-je essayer de le faire en interne à l'intérieur de composant (ou une classe d'aide écrit en ActionScript)?

QUESTION ADDITIONNELLE

Serait-ce une bonne approche pour préparer des modèles de données distincts pour chaque voie d'affichage et un certain convertisseur pour transférer des données entre eux et le modèle résultant serait binded au composant en tant que fournisseur de données? Ou peut-être y a-t-il une autre façon intelligente de le faire et mes données se réorganiseront automagiquement d'elles-mêmes? :)

Répondre

0

Je préférerais recevoir un flux de données brut de votre service Web et le traiter de diverses manières dans le client Flex (dans une classe ActionScript d'aide).Voici les avantages que je vois:

1) Cela donne une bonne séparation des responsabilités. Par exemple. le service Web doit connaître les données mais pas les façons dont elles seront affichées.

2) Traitement plus rapide et réactivité du client. L'échange de vues n'implique pas l'appel de votre service Web et le client Flex traitera probablement plus rapidement les données elles-mêmes que le trafic Web supplémentaire.

3) Disponibilité accrue. Sans appels supplémentaires à votre service Web, il y a moins de risque de défaillance du réseau.

+0

mes pensées exactement! J'ai donc ajouté une question supplémentaire pour vous aider à aller dans la bonne direction avec cette chose :) – grapkulec

+0

Vous pouvez soit pré-traiter les deux dans deux fournisseurs de données différents, qui sont ensuite dynamiquement permuté à votre composant par une action, ou l'action elle-même reconstruit le fournisseur de données unique pour correspondre au nouveau format requis. Le premier nécessite plus de traitement initial mais une commutation plus rapide entre les deux, tandis que le second est l'inverse (charge initiale plus rapide, commutation plus lente). Bien sûr, si la taille de vos données n'est pas significative, alors la mise en œuvre finale n'aura pas vraiment d'importance et cela devient une question de préférence personnelle. –