<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flex User Group Hamburg &#187; Tutorials</title>
	<atom:link href="http://www.flexughh.de/category/tutorials/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.flexughh.de</link>
	<description></description>
	<lastBuildDate>Thu, 19 Jan 2012 09:41:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Aktuelle Cairngorm Experten-Tips zusammengefasst</title>
		<link>http://www.flexughh.de/2008/12/16/aktuelle-cairngorm-experten-tips-zusammengefasst/</link>
		<comments>http://www.flexughh.de/2008/12/16/aktuelle-cairngorm-experten-tips-zusammengefasst/#comments</comments>
		<pubDate>Tue, 16 Dec 2008 11:45:13 +0000</pubDate>
		<dc:creator>Jens Krause</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.flexughh.de/?p=265</guid>
		<description><![CDATA[Die Adobe Consultants Eric Garza, Peter Matin und Alistair McLeod hielten auf der MAX in San Francisco und Mailand hervorragende Vorträge zu Cairngorm. Ihre Themen lauteten &#8220;FIA Development with Cairngorm &#8211; Tips from the Experts&#8221; und &#8220;Flex Development with Cairngorm&#8220;. Es lohnt sich die Folien dieser Vorträge (Vortrag 1, Vortrag 2) sehr genau zu studieren. [...]]]></description>
			<content:encoded><![CDATA[<p>Die Adobe Consultants <a href="http://www.questioveritas.com/">Eric Garza</a>, <a href="http://weblogs.macromedia.com/pmartin/">Peter Matin</a> und <a href="http://weblogs.macromedia.com/amcleod/">Alistair McLeod</a> hielten auf der MAX in San Francisco und Mailand hervorragende Vorträge zu <a href="http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm">Cairngorm</a>. Ihre Themen lauteten &#8220;<a href="http://www.questioveritas.com/2008/11/max-2008-cairngorm-tips-presentation.html">FIA Development with Cairngorm &#8211; Tips from the Experts</a>&#8221; und &#8220;<a href="http://weblogs.macromedia.com/amcleod/archives/2008/12/max_milan_-_fle.html">Flex Development with Cairngorm</a>&#8220;. </p>
<p>Es lohnt sich die Folien dieser Vorträge (<a href="https://share.acrobat.com/adc/document.do?docid=e2120738-1a70-40ff-b5d3-c5231346b466">Vortrag 1</a>, <a href="https://share.acrobat.com/adc/document.do?docid=bc5b2ad3-e2c4-4891-a6df-74ce010e9821">Vortrag 2</a>) sehr genau zu studieren. Denn auch wenn Cairngorm als Architektur-Framework schon einige Jahre eingesetzt wird und viele Flex Entwickler mit Cairngorm gut vertraut sind, herrschen noch sehr unterschiedliche Meinungen und Strategien beim Einsatz des Frameworks, nicht zuletzt wegen der <a href="http://cairngormdocs.org/">mangelhaften Dokumentation</a>.</p>
<p><span id="more-265"></span>  </p>
<p>Auch wenn sich Cairngorm in der Grundstruktur über die Jahre kaum weiterentwickelt hat, haben sich die aktuellen &#8220;Best Practices&#8221; bei Adobe Consultings wesentlich geändert. Ein Grund mehr, auch seinen eigenen Einsatz von Cairngorm zu überdenken.</p>
<p>Hier ein Überblick über die Experten-Tips:</p>
<ol>
<li><strong>ModelLocator</strong></li>
<ul>
<li>ModelLocator ist im wahrsten Sinne des Wortes ein &#8220;Ort für Models&#8221; D.h. der Model Locator hält typisierte Model Objekte. Dazu gehören u.a. Presentation Models, globale Informationen (z.B. UserVO), globaler Applikation-State. Dazu gehören aber keine Eigenschaften wie z.B. &#8220;address&#8221;, &#8220;country&#8221; usw.</li>
<li>Schluss mit den unzähligen &#8220;ModelLocator. getInstance()&#8221;! Der ModelLocator wird nur einmal im (Haupt-)View über getInstance() aufgerufen. Alle weiteren Views werden ihre notwendigen Models injiziert (Stichwort: <a href="http://en.wikipedia.org/wiki/Dependency_injection">Dependencies Injection</a> ). D.h. ein View wird nur mit seinen notwendigen Daten per Referenz &#8220;befüllt&#8221;, z.b. mit seinem Presentation Model (siehe Punkt 2) oder einem Top-Model-Object. Aber auch mit dem ModelLocator selbst, falls es notwendig ist.</li>
</ul>
<li><strong>Presentation Model (PM)</strong></li>
<ul>
<li>Vorab: Wer mehr über den Einsatz von Presentation Models erfahren möchte, hier zwei sehr empfehlenswerte Artikel:<br />
- Martin Fowler: <a href="http://martinfowler.com/eaaDev/PresentationModel.html">Presentation Model</a><br />
- Paul Williams: <a href="http://weblogs.macromedia.com/paulw/archives/2007/10/presentation_pa_3.html">Presentation Patterns &#8211; Presentation Model</a></li>
<li>PM präsentiert das Verhalten und die State eines oder mehrerer Views, d.h. soviel Code wie möglich wird von dem View in sein PM ausgelagert. Dazu zählen: View-Daten (z.B. gefilterte Listen von Produkten), View-States (z.B. selectIndex eines ViewStackes), View-Logik (z.B. State eines Absende-Buttons innerhalb eines Formulars)</li>
<li>Ein View beobachtet über Bindings Änderungen von Model-Daten. </li>
<li>Ein View kennt sein PM, aber ein PM nicht die Views.</li>
<li>Über das PM wird die View und Business-Logik getrennt. Sollte ein PM zu viele Verantwortlichkeiten erhalten, empfiehlt es sich, Teile der Business-Logik in weitere externe Klassen auszulagern</li>
<li>PM verarbeitet auch Fehler, z.B. bei serverseitgen Abfragen von Daten (siehe auch Punkt 3)</li>
</ul>
<li><strong>Updaten von Model-Daten</strong></li>
<ul>
<li>User-Gesten vom View werden direkt an sein PM weitergegeben, um von dort Cairngorm-Events abzufeuern. Das Event landet wie gehabt im entsprechenden Command.</li>
<li>Commands sollten keine direkte Referenze zu Models haben und somit die Model-Daten selbst nicht updaten. Stattdessen schicken die Cairngorm-Events Model-Callback-Funktionen als Referenzen mit, welche dort (z.B. im PM) direkt geupdated werden</li>
<li>Serverseitige Daten werden über Delegates abgearbeitet, welche über Responder das Ergebnis weitergeben. Dabei wird empfohlen, für die Responder eigene Klassen anzulegen. D.h. die Commands brauchen nicht das IResponder-Interface zu implementieren.</li>
<li>Im Command werden Responder-Klassen erstellt, welche ebenfalls ebenfalls eine Referenz zu den Callback-Funktionen erhalten, welche von den Cairngorm-Events &#8220;übermittelt&#8221; werden. Damit können die Responder innerhalb ihrer result- oder fault-Methode diese Callbacks aufrufen, welche dann Model-Daten updaten. Um das Fault-Handling zu vereinfachen, wird zudem eine Super-Klasse für die Responder emfpohlen, welche das Error-Handling bereits implementiert</li>
</ul>
<li><strong>Controller</strong></li>
<ul>
<li>Große Controller sind zu vermeiden: Statt den Controller unübersichtlich mit unzähligen &#8220;addCommand(&#8230;, &#8230;)&#8221; zu befüllen, bieten sich SubController an oder einfach auch Methoden für bestimmte Mappings, wie z.B. addAccountManagementCommands()</li>
</ul>
<li><strong>Views</strong></li>
<ul>
<li>View erhalten ihre Daten über Binding zu ihrem Model (PM)</li>
<li>Logik der Views wird weitgehendst in PM ausgelagert (siehe Punkt 2). Dazu zählt aber nicht die Logik des User-Interfaces, wie z.B. Animationen, Drag und Drop, Stylen von Grafische Elemente, usw.</li>
<li>Custom Components sollten keine Referenz zum ModelLocator haben. Stattdessen sollten die notwendigen Daten injiziert werden (siehe auch Punkt 1)</li>
</ul>
<li><strong>Unit Testing</strong></li>
<ul>
<li>Aufgrund des massiven Einsatzes von PM sind Model-Daten gut testbar! Falls nicht, sind in den PM noch zu starke Abhängigkeiten.</li>
<li>Business-Logik in eigenen Klassen halten. D.h. raus aus Commands, Delegates, Responders.</li>
<li>Zum Testen von Delegates empfiehlt sich das Verwenden von Factory-Klassen, welche mit Einsatz von Interfaces ein &#8220;produktives&#8221; und ein &#8220;testbares&#8221; Delegates liefert</li>
</ul>
<li><strong>Cairngorm Plugin für Flex Builder</strong></li>
<ul>
<li>Absolut empfehlenswert für noch schnelleres Arbeiten: <a href="http://opensource.adobe.com/wiki/display/cairngorm/Plugin">Cairngorm Plugin bei Adobe Open Source</a></li>
</ul>
</ol>
<p>Übrigens: In den o.g. Folien der Präsentationen der Adobe Consultings findet Ihr auch eine Menge Code-Beispiele, die es sich ebenfalls lohnen, genauer unter die Lupe zu nehmen <img src='http://www.flexughh.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>[NACHTRAG v. 13.01.2009]</strong> Ab heute ist die o.g. Cairngorm Präsentation von der Adobe MAX in San Francisco als Video <a href="http://tv.adobe.com/#vi+f15384v1016">auf AdobeTV online</a> (via: <a href="http://onflash.org/ted/2009/01/50-new-max-2008-sessions-posted-on.php">Ted Patrick</a> ). Hier könnt Ihr sie selbst noch einmal verfolgen. Prädikat: Sehr lohnenswert!! <strong>[/NACHTRAG]</strong></p>
<p><embed src="http://tv.adobe.com/Embed.swf" quality="high" bgcolor="#000000" width="600" height="385" name="AdobeTVPlayer" play="true" loop="false" quality="high" allowScriptAccess="always" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashVars="v=~b64~aHR0cDovL2Fkb2JlLmVkZ2Vib3NzLm5ldC9mbGFzaC9hZG9iZS9hZG9iZXR2Mi9tYXhfMjAwOF9kZXZlbG9wLzE1OTY3NDE2MTNfMjcxNTg4NTAwMV8yMDA0LWdhcnphLW1hcnRpbi13ZWQtNXBtLWRldmVsb3BtZW50LmZsdj9yc3NfZmVlZGlkPTE1Mzg0JnhtbHZlcnM9Mg==&#038;w=600&#038;t=http://tv.adobe.com/vi+f15384v1016&#038;h=385"></embed></p>
<p>-Jens<br />
<a href="http://www.websector.de">www.websector.de</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexughh.de/2008/12/16/aktuelle-cairngorm-experten-tips-zusammengefasst/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>FFK08-Online-Workshop: Adobe AIR mit Sven Claar</title>
		<link>http://www.flexughh.de/2008/09/19/ffk08-online-workshop-adobe-air-mit-sven-claar/</link>
		<comments>http://www.flexughh.de/2008/09/19/ffk08-online-workshop-adobe-air-mit-sven-claar/#comments</comments>
		<pubDate>Fri, 19 Sep 2008 17:09:20 +0000</pubDate>
		<dc:creator>Jens Krause</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.flexughh.de/?p=105</guid>
		<description><![CDATA[Die Info ist nicht ganz neu, aber sicher wertvoll genug für alle Adobe AIR Begeisterte und die, die es noch werden wollen: Das Flashforum stellt seit einiger Zeit auf seinem Blog regelmäßig Videos von Sven Claar&#8217;s AIR Workshop der diesjährigen Flashforum Konferenz 2008 online, insgesamt Videomaterial über 6,5 Stunden! Hier findet Ihr alle Videos aufgeteilt [...]]]></description>
			<content:encoded><![CDATA[<p>Die Info ist nicht ganz neu, aber sicher wertvoll genug für alle <a href="http://www.adobe.com/products/air/">Adobe AIR</a> Begeisterte und die, die es noch werden wollen: Das <a href="http://www.flashforum.de/">Flashforum</a> stellt seit einiger Zeit auf <a href="http://www.flashforum.de">seinem Blog</a> regelmäßig Videos von Sven Claar&#8217;s AIR Workshop der diesjährigen <a href="http://ffk08.flashforum.de/">Flashforum Konferenz 2008</a> online, insgesamt Videomaterial über 6,5 Stunden!</p>
<p><span id="more-105"></span></p>
<p>Hier findet Ihr alle Videos aufgeteilt in 5 Sessions:</p>
<ul>
<li><a href="http://www.flashforum.de/2008-08/ffk08-online-worshop-air-mit-sven-claar.php">Teil 1</a></li>
<li><a href="http://www.flashforum.de/2008-09/ffk08-video-teil-2-workshop-air-mit-sven-claar.php">Teil 2</a></li>
<li><a href="http://www.flashforum.de/2008-09/ffk08-video-teil-3-workshop-air-mit-sven-claar.php">Teil 3</a></li>
<li><a href="http://www.flashforum.de/2008-09/ffk08-video-teil-4-workshop-air-mit-sven-claar.php">Teil 4</a></li>
<li><a href="http://www.flashforum.de/2008-10/ffk08-video-teil-5-workshop-air-mit-sven-claar.php">Teil 5</a></li>
</ul>
<p>-Jens</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexughh.de/2008/09/19/ffk08-online-workshop-adobe-air-mit-sven-claar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Flex lernen in einer Woche?!</title>
		<link>http://www.flexughh.de/2008/07/31/flex-lernen-in-einer-woche/</link>
		<comments>http://www.flexughh.de/2008/07/31/flex-lernen-in-einer-woche/#comments</comments>
		<pubDate>Thu, 31 Jul 2008 07:10:15 +0000</pubDate>
		<dc:creator>Jens Krause</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.flexughh.de/2008/07/31/flex-lernen-in-einer-woche/</guid>
		<description><![CDATA[Ihr glaubt, das ist nicht möglich? Dann probiert einfach mal Adobes kostenlose &#8220;Flex in a week&#8221; aus . Dahinter verbergen sich sehr gut aufbereitete Online Video Tutorials mit Themen zu Basics und fortgeschrittenen Inhalten, ergänzt mit Praxis-Übungen. Meine Empfehlung ist u.a. &#8220;Exploring Flex Builder tips&#8220;. Für Fragen zu den Tutorials gibt es außerdem ein eigenes [...]]]></description>
			<content:encoded><![CDATA[<p>Ihr glaubt, das ist nicht möglich? Dann probiert einfach mal Adobes kostenlose &#8220;<a href="http://www.adobe.com/devnet/flex/videotraining/">Flex in a week</a>&#8221; aus <img src='http://www.flexughh.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  . Dahinter verbergen sich sehr gut aufbereitete Online Video Tutorials mit Themen zu Basics und fortgeschrittenen Inhalten, ergänzt mit Praxis-Übungen. Meine Empfehlung ist u.a. &#8220;<a href="http://link.brightcove.com/services/player/bcpid1681694213">Exploring Flex Builder tips</a>&#8220;.</p>
<p><span id="more-84"></span></p>
<p><a href="http://www.adobe.com/devnet/flex/videotraining/" class="img"><img src="http://www.adobe.com/devnet/images/248x148/flex_inaweek.jpg" height="148" width="248" /></a></p>
<p>Für Fragen zu den Tutorials gibt es außerdem ein eigenes <a href="http://www.adobe.com/cfusion/webforums/forum/categories.cfm?forumid=60&amp;catid=833&amp;entercat=y">Flex-In-A-Week-Forum</a>.</p>
<p>Und nicht zu vergessen, bei allen weiteren Fragen zu Flex gibt es ja noch die <a href="http://www.flexughh.de/category/meetings/">flexughh-Meetings</a>, wo Ihr Euch regelmäßig mit weiteren Flex-Begeisterten aus Hamburg und Umgebung austauschen könnt. Übrigens, <a href="http://www.flexughh.de/2008/07/28/flexughh-meeting-250808-marco-kaiser-twhirl/">das nächste Meeting</a> ist am 25. August <img src='http://www.flexughh.de/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>-Jens</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexughh.de/2008/07/31/flex-lernen-in-einer-woche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Tips für das Arbeiten mit PureMVC</title>
		<link>http://www.flexughh.de/2007/12/27/10-tips-fur-das-arbeiten-mit-puremvc/</link>
		<comments>http://www.flexughh.de/2007/12/27/10-tips-fur-das-arbeiten-mit-puremvc/#comments</comments>
		<pubDate>Thu, 27 Dec 2007 09:57:06 +0000</pubDate>
		<dc:creator>Jens Krause</dc:creator>
				<category><![CDATA[PureMVC]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.flexughh.de/2007/12/27/10-tips-fur-das-arbeiten-mit-puremvc/</guid>
		<description><![CDATA[Jesse Warden&#8217;s großartiger Artikel &#8220;10 Tips Working With Cairngorm&#8221; gab mir die Idee, ebenfalls 10 Tips für PureMVC zu veröffentlichen. Ich arbeite seit über einem halben Jahr sehr intensiv mit PureMVC und &#8211; das ist kein Geheimnis &#8211; mir gefällt das Framework außerordentlich. Denke in (Pure)MVC Wie starte ich mit PureMVC? Kurze Antwort: Denke in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.jessewarden.com/">Jesse Warden&#8217;s</a> großartiger Artikel <a href="http://www.jessewarden.com/2007/08/10-tips-for-working-with-cairngorm.html">&#8220;10 Tips Working With Cairngorm&#8221;</a> gab mir die Idee, ebenfalls 10 Tips für <a href="http://www.puremvc.org/">PureMVC</a> zu veröffentlichen. Ich arbeite seit über einem halben Jahr sehr intensiv mit PureMVC und &#8211; das ist kein Geheimnis &#8211; mir gefällt das Framework außerordentlich.</p>
<p><span id="more-11"></span></p>
<ol>
<li>
<h3>Denke in (Pure)MVC</h3>
<p>Wie starte ich mit PureMVC? Kurze Antwort: Denke in (Pure)MVC! Denn wie der Name schon sagt, PureMVC basiert auf das klassische <a href="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Conroller</a> Meta-Design-Pattern. Zwar werden die Core-Akteure nicht direkt instanziiert, sondern über das <a href="http://en.wikipedia.org/wiki/Fa%C3%A7ade_pattern">Facade-Pattern</a> gehandelt, aber jedes Mitglied von PureMVC hat seine eigene und klar definiert Rolle innerhalb der drei Bereiche Model, View und Controller:<br />
- Proxies = Model<br />
- Mediatoren und ihre View Components = View<br />
- Commands = Controller</li>
<li>
<h3>Erstelle API&#8217;s für die View Components</h3>
<p>Eine View Component kann eine Standard UI Komponente (z.B. DataGrid) oder auch eine eigene Komponente (wie z.B. eine Welt in einem Spiel) oder irgendetwas anderes sein. Um ihren Status oder Verhalten zu ändern, rufe von einem Mediator nicht ihre &#8220;public&#8221; Methoden auf, sondern erstelle dafür eine eigene API.</p>
<p>Denn einer der Vorteile von PureMVC ist es, neutral gegenüber den verwendeten Technologien zu sein. Ein Beispiel: Vor kurzem habe ich habe eine &#8220;reine&#8221; Flash-Applikation gebaut, welche nicht das Flex Framework nutzt. Nun soll diese Applikation als AIR Anwendung zum Einsatz kommen, um auch die geniale File system API von AIR zu nutzen. Dafür müssen zwar die vorhandenen View Components das Flex Framework nutzen und dementsprechend erweitert bzw. &#8220;getauscht&#8221; werden, allerdings nicht ihre Mediatoren oder irgendwelche anderen Akteure von PureMVC.</li>
<li>
<h3>Nutze einen Mediator für mehrere View Components</h3>
<p>Um mehrere View Components zu steuern, reicht oft ein Mediator aus. Mit anderen Worten: Nicht alle View Components brauchen einen eigenen Mediator.</p>
<p>Zum Beispiel: Stelle Dir eine ApplicationControllBar vor, welche einen TextInput, einen Button und möglicherweise noch weitere Komponenten beinhaltet. Erstelle für alle diese Komponenten nur einen Mediator, genant &#8220;ApplicationControlBarMediator&#8221;, und referenziere und caste darin alle notwendigen Komponenten so, wie Du es mit der &#8220;Haupt&#8221;-View Component machen würdest.</li>
<li>
<h3>Lass&#8217; Events bubbeln</h3>
<p>Was aber, wenn Du nicht mehrere View Components innerhalb eines Mediators referenzieren und dennoch auf User-Interaktionen reagieren möchtest? Dann erstelle eigene Events und lasse sie bis zur &#8220;Haupt&#8221;-View Component bubbeln, welche dann der Mediator abfängt.</p>
<p>Zum Beispiel: Klickt der User einen Button, welcher sich innheralb der &#8220;Haupt&#8221;-View Component befindet, wird ein eigener Event abgefeuert. Auf diesen hört der Mediator, ohne jedoch irgendein Child innerhalb der &#8220;Haupt&#8221;-View Component kennen zu müssen.</li>
<li>
<h3>Kommuniziere über Notifications so oft wie möglich</h3>
<p>Notification sind die &#8220;Events&#8221; von PureMVC. Zur Kommunikation zwischen den drei Bereichen Model, View und Controller benutze Notification so oft wie möglich. Dazu gehören folgende Szenarien:<br />
(Kommunikation von -&gt; zu)<br />
- Mediator -&gt; Proxy (über gemappte Commands)<br />
- Proxy -&gt; Mediator<br />
- Proxy -&gt; Command<br />
- Command -&gt;Mediator</p>
<p>Auch wenn die Möglichkeit besteht, einen Proxy direkt von einem Mediator anzusprechen, ändere keinen Proxy von einem Mediator aus. Es ist eine schlechte Praktik den Status eines Proxy (Model) von einem Mediator (View) aus zu ändern, ohne einen Command (Controller) zu verwenden.</li>
<li>
<h3>Benutze Commands / MacroCommands so oft wie möglich</h3>
<p>Commands erledigen innerhalb von PureMVC den Job auf der Controller-Seite. Dazu zählen: Aufrufen und Interaktion mit Proxies, Kommunikation mit Mediators oder das Ausführen weiterer Commands.</p>
<p>Auch wenn ein Command nur einmal benutzt wird oder auch nur zwei Zeilen Code beinhaltet, nutze ihn so oft wie möglich. Denn um diesen Command irgendwann oder irgendwo noch einmal in Deiner Applikation aufzurufen, reicht das Versenden einer einzigen Notification. Auch ist es in Zukunft leicht, den Command mit weiteren Aufgaben zu versehen. Und so &#8211; das ist besonders wichtig &#8211; weißt Du immer, wer den State der Proxies (Model) ändert.</p>
<p>Frage: Musstest Du schon einmal mehrere Commands in einer bestimmten Reihenfolge ausführen? Dann nutze in PureMVC die MacroCommands, welche SubCommands (&#8220;normale&#8221; Commands) sequenziell ausführen.</li>
<li>
<h3>Nutze RemoteProxies zum Versenden und Empfangen von Daten</h3>
<p>Um Daten zwischen Client- und Server-Seite auszutauschen, nutze RemoteProxies. Diese basieren auf den &#8220;normalen&#8221; Proxies von PureMVC und organisieren die Serveraufrufe wie z.B. HTTPServices, RemoteObjects usw.</p>
<p>Ein Beispiel: Um ein serverseitiges RemoteObject für den Login eines Users aufzurufen, erstelle ein (Remote-) Proxy genannt &#8220;LoginProxy&#8221;. Dieser &#8220;LoginProxy&#8221; führt den gesamten Job für das Versenden und Empfangen der Daten aus. Falls einmal die serverseitige Implementation für den Loginprozess geändert werden sollte, brauchst Du nur einen Ort Deiner Applikation anpassen &#8211; den &#8220;LoginProxy&#8221;.</li>
<li>
<h3>Entferne nicht benutzte Mediators</h3>
<p>In bestimmten Fällen werden Mediators und ihre View Components nicht mehr verwendet. Entferne dann den Mediator über <span style="font-style: italic">facade.removeMediator(MyMediator.NAME);</span> und verbinde diesen Vorgang mit einer selbst erstellten <span style="font-style: italic">destroy();</span> Methode, um gleichzeitig die an den Mediator gekoppelten View Components mit all&#8217; ihren Listeners, Timer, Referenzen usw. für eine erfolgreiche <a href="http://www.adobe.com/devnet/flashplayer/articles/garbage_collection.html">Garbage Collection</a> zu entfernen.</li>
<li>
<h3>Die Kraft der VO&#8217;s (Value Objects)</h3>
<p>Es ist richtig, dass bei PureMVC der Ort zum Halten der Model Daten die Proxies sind. Und es ist ebenfalls richtig, dass die View Components nichts über die Facade und den Rest der PureMVC Applikation wissen brauchen. Das bedeutet allerdings, das keine View Component einen direkten Zugang zum Model hat.</p>
<p>Um dieses Problem zu lösen, halte die Daten in VO&#8217;s und erstelle in den View Components eine Referenz zu diesen her. Mit Hilfe des genialen Data Binding Features in Flex können die View Components sehr leicht auf Änderungen im Model reagieren. Auch werden damit keine Regeln gebrochen, da die VO&#8217;s keine Hauptakteure von PureMVC sind und so bedenkenlos in View Components eingesetzt werden können.</li>
<li>
<h3>Studium-Unterlagen erhältlich</h3>
<p><a href="http://content.futurescale.com/">Cliff Hall</a> hat einen absolut genialen Job gemacht: Du findest nicht nur exzellente Dokumentationen wie &#8220;<a href="http://puremvc.org/component/option,com_wrapper/Itemid,35/">Framework Overview</a>&#8220;, &#8220;<a href="http://puremvc.org/component/option,com_wrapper/Itemid,30/">Best Practices</a>&#8221; oder &#8220;<a href="http://puremvc.org/component/option,com_wrapper/Itemid,34/">Conceptual Diagram</a>&#8220;, sondern auch super hilfreiche <a href="http://puremvc.org/component/option,com_wrapper/Itemid,139/">Studium-Unterlagen</a> zu PureMVC. Teste sie aus!</li>
</ol>
<p>P.S.: Dieser Beitrag ist eine Übersetzung des englischen Artikels &#8220;<a href="http://www.websector.de/blog/2007/12/25/10-tips-for-working-with-puremvc/">10 tips for working with PureMVC</a>&#8221; zu finden auf meinem <a href="http://www.websector.de/blog/">WS-Blog</a>. Fachbegriffe sind bewusst nicht mit übersetzt <img src='http://www.flexughh.de/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>-Jens</p>
]]></content:encoded>
			<wfw:commentRss>http://www.flexughh.de/2007/12/27/10-tips-fur-das-arbeiten-mit-puremvc/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Vor- und Nachteile von Adobe Flex</title>
		<link>http://www.flexughh.de/2007/08/16/vor-und-nachteile-von-adobe-flex/</link>
		<comments>http://www.flexughh.de/2007/08/16/vor-und-nachteile-von-adobe-flex/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 09:40:04 +0000</pubDate>
		<dc:creator>Ralf Sczepan</dc:creator>
				<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.flexughh.de/2007/08/16/vor-und-nachteile-von-adobe-flex/</guid>
		<description><![CDATA[Adobe Flex ist nicht die einzige Technologie, mit der Rich Internet Clients erstellt werden können und wie jede Technologie hat Adobe Flex Vor- und Nachteile. Adobe Flex Vorteile: Die Darstellungschicht wird komplett auf den Client geladen. Es werden nur noch Businessdaten über das Netzwerk transportiert. Geringere Netzwerklast. Ausgereifte Backendtechnologie (Adobe LiveCycle Data Service). Ausgereifte Entwicklungsumgebung [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe Flex ist nicht die einzige Technologie, mit der Rich Internet Clients erstellt werden können und wie jede Technologie hat Adobe Flex Vor- und Nachteile.</p>
<p><span id="more-4"></span></p>
<p><strong>Adobe Flex</strong><br />
<em>Vorteile:</em></p>
<ul>
<li>Die Darstellungschicht wird komplett auf den Client geladen.</li>
<li>Es werden nur noch Businessdaten über das Netzwerk transportiert.</li>
<li>Geringere Netzwerklast.</li>
<li>Ausgereifte Backendtechnologie (Adobe LiveCycle Data Service).</li>
<li>Ausgereifte Entwicklungsumgebung Flexbuilder.</li>
<li>Flex steht nun unter der Mozilla Public License.</li>
<li>Weite Verbreitung des Flash Plugins für Standardbrowser.</li>
</ul>
<p><em>Nachteile:</em></p>
<ul>
<li>Der erstmalige Upload auf den Client (Browser) kann etwas Zeit in Anspruch nehmen.</li>
<li>Das Flash Plugin (Version 9) für den jeweiligen Browser ist nötig.</li>
<li>Der Flexbuilder ist kostenpflichtig.</li>
<li>Der LiveCycle Data Service ist für mehr als ein CPU (Cluster) kostenpflichtig.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.flexughh.de/2007/08/16/vor-und-nachteile-von-adobe-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.261 seconds -->

