Zurück   Flashforum > Ohne Thema > Am Rande

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-06-2011, 09:23   #1 (permalink)
Neuer Rossi
 
Benutzerbild von rossi123
 
Registriert seit: Feb 2004
Ort: Wien
Beiträge: 65
Cairngorm mit PresentationModel

Hi,

Verständisfrage: Ich verwende erstmalig Cairngorm (2.2) und zwar mit PresentationModel. Bitte keine Diskussion, warum :-)
  • Angenommen in der View passiert eine Userinteraktion.
  • Die View ruft im PresentationModel eine Funktion auf.
  • Das PresentationModel nutzt ein Command, um via Delegate ein Webservice aufzurufen.

So nun hier meine Frage: Angenommen, die PresentationView (die die Logik enthalten soll) muss wissen, wann und wie das Ergebnis vom Command fertig ist. D.h. erstens ist der "Zeitpunkt" wichtig, andererseits natürlich das Ergebnis.

In manchen Fällen ist es sicher so, dass man den CairngormEvent feuert (Command, Delegate und Webservice arbeiten vor sich hin) und gut ist's. Manchmal aber eben nicht, zum Beispiel wenn ich einem Webservice einen Datensatz schicke und je nach Antwort ich unterschiedlich reagieren muss.

Wie löst man sowas? Muss ich im PresentationModel EventListener auf das Model setzten, um die positiven Antworten vom Webservice abzufangen? Ist das nicht unsauber? Und: Wie bekomme ich einen Webservice-Call-Fault mit?

Oder soll der Command, wenn er fertig ist, nicht nur das Model ändern, sondern auch noch einen eigenen Responder (sowohl im result, als auch im fault-Ergebnisfall) verwenden? Oder einen Result (oder Fault)-Event feuern?

Danke und lg,
Rossi
rossi123 ist offline   Mit Zitat antworten
Alt 02-07-2011, 13:17   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.408
Verstehe das Problem nicht ganz


Kannst Du ein Praxisbeispiel nennen? Du schreibst ja, je nach Antwort des Servers soll der Client was anderes machen/darstellen...

Wäre ein Login bsp. eine solche Situation - oder meinst Du das anders?



Dieses Vorgehen ist ansich nicht sonderlich schwer...

Das Presentationmodel ruft eine Methode/Funktion auf, die entweder direkt was an der View ändert (ohne Einfluss eines Servers o.ä.) ODER es wird nen Event geschmissen welches im Controller verarbeitet wird. Wenn jetzt ein true vom Server kommt (oder ein false) wird dies in irgendeiner Weise direkt an Dein Model und somit an Dein PresentationModel gebunden.
Dieses wiederum gibt die Änderung an die View weiter. (Wobei "weiter geben" sicherlich nicht richtig formuliert ist)





lg, nico


Ps: Auch wenn Du die Frage nicht haben wolltest - wieso Cairngorm? (Aus Interesse)
__________________
Mein Blog
Freue mich über jeden Besucher. :)

Geändert von Nico B. (02-07-2011 um 13:20 Uhr)
Nico B. ist offline   Mit Zitat antworten
Alt 02-07-2011, 16:52   #3 (permalink)
Neuer Rossi
 
Benutzerbild von rossi123
 
Registriert seit: Feb 2004
Ort: Wien
Beiträge: 65
Danke für Deine Antwort!

Also beispielsweise:
Angenommen, es geht um eine Produktreservierung.
Der User möchte Produkt A reservieren. Die View sagt das dem PM. Das PM muss dies dem Server mitteilen, dispatcht einen CairngormEvent, das Command spricht mit dem Server und bekommt eine von 2 Antworten (abgesehen von einem Server"fehler")
  1. Produkt ist lagernd. Konsequenz: Vom Server neue View-Daten requesten
  2. Produkt ist nicht lagernd. Konsequenz: PopUp mit Hinweis zeigen.

Das Command ist ja logikmäßig "dumm", es updated das Model (und dadurch ändert sich die View) - hat aber keine implementierte Logik (die ist ja im PM).

In 1) und 2) ist es so, dass die View nicht sofort geupdated wird, sondern weitere Handlungen folgen müssen, je nachdem, welche Antwort vom Server kommt.

Das Command kann daher im Fall 1) nicht selbstständig die neuen View-Daten vom Server holen. Darüber hinaus kann es auch nicht im Fall 2) selbstständig das PopUp zeigen. Es kommt zu keiner Modifikation des Models, weil die gewünschte Reservierung abgelehnt wurde.

Wie bekommt nun das PM mit (egal ob 1) oder 2))? Wie löst man das elegant?

Danke nochmals,
Rossi

p.s. :-) Cairngorm deswegen, ich mir zunächst Parsley, dann SpringActionscript genauer (und dann auch noch Robotlegs) angesehen habe. Grundsätzlich habe ich schon bei mehreren Projekten PureMVC verwendet, bin damit aber aufgrund des massiven Coding-Mehrfaufwandes nicht glücklich.
Bei Parsley bin ich sowohl an der für *mich persönlich* unübersichtlichen Doku gescheitert - ich habe auch ein Hello-World-Example nicht zum Laufen bekommen.
IoC versuche ich möglichst "zu Fuß" umzusetzen, halt mit Überreichen der notwendigen Referenzen. Ich weiß, das ganze geht über das Injection-Zeug, aber ganz ehrlich, da müsste ich mal ein Projekt vernünftiger Größenordnung sehen (und nicht so Mikro-Beispiele wie bei den Tutorials). Vielleicht entgeht mir der große "Aha"-Effekt, weil ich keine Unit-Tests mache, aber derzeit sehe ich keinen Mehrwert darin, weil der Konfigurationsaufwand auch nicht kleiner ist, als die paar Parameter per Hand zu überreichen. Vielleicht hab ich aber das Konzept auch nicht verstanden, kann gut sein.
Ja, ich weiss, Cairngorm 2.2 ist nicht die beste Wahl, ist aber für mich (bis auf diese Fragestellung hier) recht plausibel und rasch einsetzbar. Und besser "irgendein" Framework als gar keines.
Für die Zukunft möchte ich meine Kenntnisse da noch erweitern, werde das Projekt wahrscheinlich dann auch refactoren. Aber jetzt wollte ich mal starten und nicht noch länger mit Framework-Versteherei-und-Erstmalige-Konfiguriererei herumtun :-)
rossi123 ist offline   Mit Zitat antworten
Alt 02-07-2011, 17:48   #4 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.408
Thema Framework: Schau Dir mal Swiz an (Bin selbst von Cairngorm umgestiegen)


Thema Dein Problem:

Ich hab's immer noch nicht ganz^^ - Es scheint, dass Du bereits alles hast um das "Problem" zu lösen ?
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist offline   Mit Zitat antworten
Alt 02-07-2011, 18:26   #5 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.141
Eine einfache Variante: du definierst en Interface bindable isPending:Boolean für alle Daten, die du zwischen Client und Server tauscht. Im Service Delegate kannst du diese Eigenschaft dann auf true/false setzen und die gebundenen Views können dann gelocked werden oder ... was auch immer du machen möchtest. Faults kannst du via Events durch die Anwendung propagieren. Oder du definierst ein komplexeres/granulareres Interface isPending, isSaved ... und lässt dieses von allen Modellen implementieren, die diese Funktionalitäten brauchen.
Omega Psi ist offline   Mit Zitat antworten
Alt 04-07-2011, 10:13   #6 (permalink)
Neuer Rossi
 
Benutzerbild von rossi123
 
Registriert seit: Feb 2004
Ort: Wien
Beiträge: 65
Danke für Eure Antworten.
1) Swiz werd ich mir mal ansehen.
2) Stati beim Model abzubilden find ich eine gute Idee, vor allem generalisiert anwendbar.

Danke!

LG, Rossi
rossi123 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
cairngorm, presentation model

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
cairngorm: daten holen. Grau Flex programmieren 12 25-05-2010 06:20
[Cairngorm] Event Disptach ? Nico B. Flex programmieren 19 19-06-2009 11:15
cairngorm modular Bennny Flex allgemein 10 23-02-2009 11:19
addEventlistener vs. Cairngorm Andreaz Flex allgemein 1 10-10-2008 13:10
Cairngorm entladen quaint ActionScript 3 2 29-02-2008 15:28


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele