<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: MVC design philosophy</title>
	<atom:link href="http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/</link>
	<description>Flash, Flex and ActionScript talking.</description>
	<lastBuildDate>Tue, 07 Sep 2010 09:16:32 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>By: Romuald</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-694</link>
		<dc:creator>Romuald</dc:creator>
		<pubDate>Wed, 27 Jan 2010 15:17:12 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-694</guid>
		<description>The idea was to have only one IEventDispatcher, the stage, without having to create a Singleton or whatever, so it is accessible from anything and especially the view (to keep the view free of framework code).

Doing that, yes a command will drive two Soma instances. The good thing about that is you can use the same event from modules (like a loaded swf that would dispatch those events), or from other Soma instances. I thought you could easily use a &quot;selector&quot; in the the events to know which Soma instance you want to drive. I believe having more than one Soma instance is aspecial need, right?

Now, I&#039;ve done it this way. I had to make choices but I&#039;m not pretty sure what would be the best.

The problem with passing something else than the stage is, if your IEventDispatcher/component is not on the display list, you won&#039;t get events dispatched from another view. But, is that a problem or a capability? I&#039;m not sure either.

Your input is definitely interesting. Could you put you demo and code online somewhere? or send it to me so I can see what you&#039;ve done more precisely?

Feel free to create a post on the forum, maybe it will be easier to push the conversation further if you&#039;re interested, if you don&#039;t mind registering!

http://www.soundstep.com/forum/

I&#039;ll think about that anyway.

Thanks

Romu</description>
		<content:encoded><![CDATA[<p>The idea was to have only one IEventDispatcher, the stage, without having to create a Singleton or whatever, so it is accessible from anything and especially the view (to keep the view free of framework code).</p>
<p>Doing that, yes a command will drive two Soma instances. The good thing about that is you can use the same event from modules (like a loaded swf that would dispatch those events), or from other Soma instances. I thought you could easily use a &#8220;selector&#8221; in the the events to know which Soma instance you want to drive. I believe having more than one Soma instance is aspecial need, right?</p>
<p>Now, I&#8217;ve done it this way. I had to make choices but I&#8217;m not pretty sure what would be the best.</p>
<p>The problem with passing something else than the stage is, if your IEventDispatcher/component is not on the display list, you won&#8217;t get events dispatched from another view. But, is that a problem or a capability? I&#8217;m not sure either.</p>
<p>Your input is definitely interesting. Could you put you demo and code online somewhere? or send it to me so I can see what you&#8217;ve done more precisely?</p>
<p>Feel free to create a post on the forum, maybe it will be easier to push the conversation further if you&#8217;re interested, if you don&#8217;t mind registering!</p>
<p><a href="http://www.soundstep.com/forum/" rel="nofollow">http://www.soundstep.com/forum/</a></p>
<p>I&#8217;ll think about that anyway.</p>
<p>Thanks</p>
<p>Romu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: warappa</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-693</link>
		<dc:creator>warappa</dc:creator>
		<pubDate>Wed, 27 Jan 2010 14:53:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-693</guid>
		<description>Looks interesting! But one Question: Why does Soma require &quot;stage&quot; to be Stage (exept for the name ;)) and not only an IEventDispatcher or DisplayObject. If you try to host more than one &quot;Somas&quot; of the same type in your application, those instances just react to the SAME events and do literally the same (which is kinda funny watching ;)).

I modified your SomaCafeTownSend example to support the situation described above by turning stage into an IEventDispatcher and not passing the Application itself to the SomaApplication constructor but an instance of an component which hosts the navigation-ViewStack. I also modified the SomaApplication constructor to call super() and not super(.stage). Now I can edit the user data of the 2 instances independently.

What do you think about it? Did I miss something obvious?

Lg
warappa</description>
		<content:encoded><![CDATA[<p>Looks interesting! But one Question: Why does Soma require &#8220;stage&#8221; to be Stage (exept for the name <img src='http://www.soundstep.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) and not only an IEventDispatcher or DisplayObject. If you try to host more than one &#8220;Somas&#8221; of the same type in your application, those instances just react to the SAME events and do literally the same (which is kinda funny watching <img src='http://www.soundstep.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>I modified your SomaCafeTownSend example to support the situation described above by turning stage into an IEventDispatcher and not passing the Application itself to the SomaApplication constructor but an instance of an component which hosts the navigation-ViewStack. I also modified the SomaApplication constructor to call super() and not super(.stage). Now I can edit the user data of the 2 instances independently.</p>
<p>What do you think about it? Did I miss something obvious?</p>
<p>Lg<br />
warappa</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Buck</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-535</link>
		<dc:creator>Buck</dc:creator>
		<pubDate>Sun, 29 Nov 2009 00:02:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-535</guid>
		<description>Thanks for this. I share your sentiments about the verbosity and boilerplating that DI and PureMVC tend to bring, and would like to find an option that makes this an unconscious process. Will be looking at this and RobotLegs for future projects.

Thank you.</description>
		<content:encoded><![CDATA[<p>Thanks for this. I share your sentiments about the verbosity and boilerplating that DI and PureMVC tend to bring, and would like to find an option that makes this an unconscious process. Will be looking at this and RobotLegs for future projects.</p>
<p>Thank you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: gongli_zeng的博客 : FLEX开发技巧</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-529</link>
		<dc:creator>gongli_zeng的博客 : FLEX开发技巧</dc:creator>
		<pubDate>Wed, 25 Nov 2009 01:26:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-529</guid>
		<description>[...] 者思想和Mate事件系统的优点的充分发挥Flash体系的超轻量级框架。在这里， [...]</description>
		<content:encoded><![CDATA[<p>[...] 者思想和Mate事件系统的优点的充分发挥Flash体系的超轻量级框架。在这里， [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romuald</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-472</link>
		<dc:creator>Romuald</dc:creator>
		<pubDate>Fri, 23 Oct 2009 10:48:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-472</guid>
		<description>Sure feel free, let&#039;s just call it SomaCore as it is only an experiment for now. Soma MVC is another framework released on this blog (www.soundstep.com/somaprotest) and it has nothing to do with SomaCore, both in terms of purpose and code.

Soma MVC is not really good for loose-coupling coding, that&#039;s why I&#039;m experimenting with SomaCore. Soma MVC has been built upon Cairngorm while I&#039;ve built SomaCore from scratch.

Please feedback if you test SomaCore.

Romu</description>
		<content:encoded><![CDATA[<p>Sure feel free, let&#8217;s just call it SomaCore as it is only an experiment for now. Soma MVC is another framework released on this blog (www.soundstep.com/somaprotest) and it has nothing to do with SomaCore, both in terms of purpose and code.</p>
<p>Soma MVC is not really good for loose-coupling coding, that&#8217;s why I&#8217;m experimenting with SomaCore. Soma MVC has been built upon Cairngorm while I&#8217;ve built SomaCore from scratch.</p>
<p>Please feedback if you test SomaCore.</p>
<p>Romu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matus</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-471</link>
		<dc:creator>Matus</dc:creator>
		<pubDate>Fri, 23 Oct 2009 10:36:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-471</guid>
		<description>Just stumbled upon this post. I was using PureMVC/Fabrication for my last project and wandered  how much code is needed for a modular application. I will definitely take a look on SomaMVC.</description>
		<content:encoded><![CDATA[<p>Just stumbled upon this post. I was using PureMVC/Fabrication for my last project and wandered  how much code is needed for a modular application. I will definitely take a look on SomaMVC.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John McCormack</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-441</link>
		<dc:creator>John McCormack</dc:creator>
		<pubDate>Thu, 08 Oct 2009 07:29:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-441</guid>
		<description>Romu,

You are very brave to take this on and I wish you good luck. You say you are trying to avoid hundreds of classes. That&#039;s got to be good. MVC is something I would very much like to do but finding the time to is a problem.

I like your drawing and, as a visual learner, I would encourage you to provide some diagrams and SWFs of those &quot;Wires&quot; (I do like that name) so that we can find an easier way to understand the interactions that occur between elements.</description>
		<content:encoded><![CDATA[<p>Romu,</p>
<p>You are very brave to take this on and I wish you good luck. You say you are trying to avoid hundreds of classes. That&#8217;s got to be good. MVC is something I would very much like to do but finding the time to is a problem.</p>
<p>I like your drawing and, as a visual learner, I would encourage you to provide some diagrams and SWFs of those &#8220;Wires&#8221; (I do like that name) so that we can find an easier way to understand the interactions that occur between elements.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Romuald</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-436</link>
		<dc:creator>Romuald</dc:creator>
		<pubDate>Tue, 06 Oct 2009 21:41:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-436</guid>
		<description>There&#039;s no direct relation to PureMVC. But if you need one, I can make an analogy for you :)
I&#039;ve updated the post above but I paste there the additional information as well:

So far I saw two ways to inject/update information into views without having framework code inside:

- Dependency Injection
- Buffer classes (such as Mediators and Proxies in PureMVC for the analogy, respectively for Views and Models). I mean &quot;buffer&quot; by classes that act as steward of other classes.

I&#039;ve chosen the second way, and I&#039;ve created a &quot;buffer&quot; class that I called a Wire.

Wires are completely free classes. I won&#039;t tell you how to use them (because that&#039;s up to you) but I can tell what you can do with them. Wires can be used to update views and models but they are not tight to anything. They are not even only tight to one tier. To create a wire class you extend Wire and implements IWire, and here are the roles they can take:

- a wire can act as steward of a view (such as Mediator in PureMVC)
- a wire can act as steward of a model (such as Proxies in PureMVC)
- a wire can manage both a view and a model
- a wire can manage multiple views and/or multiple models
- a wire can be considered as a subdivision of the framework and create its own views, create its own models and register its own commands. Much like you would create a specific package to hold a specific matter.

When I build something, I always try to keep a good level of freedom to handle problems how I like but most importantly, how they should be. If you like to have the framework telling you (or forcing you) how to build your application, fair enough but you won&#039;t like it.

The wires are the free elements that will let you built your application the way you like or the way it is required to be. They can make your application rigid, segmented, flexible or centralized, depending of the role you are going to give them. They are so free that I believe remove (or lesser) what I call &quot;Framework Fight&quot;.

Let&#039;s take an example, the Cafe TownSend above.

There are 2 wires: the LoginWire and the Employee Wire. They both register their own commands to control their views and models.

The Login Wire only handles a Login View.

The EmployeeWire handles 2 views: a list of employees view and an employee details view. But also 1 model (the employees data), all of them only related to employees matter.

I hope it is giving you some lights on what I&#039;m trying to do, or at least, on how I&#039;m trying remove the problems I encounter.

Romu</description>
		<content:encoded><![CDATA[<p>There&#8217;s no direct relation to PureMVC. But if you need one, I can make an analogy for you <img src='http://www.soundstep.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
I&#8217;ve updated the post above but I paste there the additional information as well:</p>
<p>So far I saw two ways to inject/update information into views without having framework code inside:</p>
<p>- Dependency Injection<br />
- Buffer classes (such as Mediators and Proxies in PureMVC for the analogy, respectively for Views and Models). I mean &#8220;buffer&#8221; by classes that act as steward of other classes.</p>
<p>I&#8217;ve chosen the second way, and I&#8217;ve created a &#8220;buffer&#8221; class that I called a Wire.</p>
<p>Wires are completely free classes. I won&#8217;t tell you how to use them (because that&#8217;s up to you) but I can tell what you can do with them. Wires can be used to update views and models but they are not tight to anything. They are not even only tight to one tier. To create a wire class you extend Wire and implements IWire, and here are the roles they can take:</p>
<p>- a wire can act as steward of a view (such as Mediator in PureMVC)<br />
- a wire can act as steward of a model (such as Proxies in PureMVC)<br />
- a wire can manage both a view and a model<br />
- a wire can manage multiple views and/or multiple models<br />
- a wire can be considered as a subdivision of the framework and create its own views, create its own models and register its own commands. Much like you would create a specific package to hold a specific matter.</p>
<p>When I build something, I always try to keep a good level of freedom to handle problems how I like but most importantly, how they should be. If you like to have the framework telling you (or forcing you) how to build your application, fair enough but you won&#8217;t like it.</p>
<p>The wires are the free elements that will let you built your application the way you like or the way it is required to be. They can make your application rigid, segmented, flexible or centralized, depending of the role you are going to give them. They are so free that I believe remove (or lesser) what I call &#8220;Framework Fight&#8221;.</p>
<p>Let&#8217;s take an example, the Cafe TownSend above.</p>
<p>There are 2 wires: the LoginWire and the Employee Wire. They both register their own commands to control their views and models.</p>
<p>The Login Wire only handles a Login View.</p>
<p>The EmployeeWire handles 2 views: a list of employees view and an employee details view. But also 1 model (the employees data), all of them only related to employees matter.</p>
<p>I hope it is giving you some lights on what I&#8217;m trying to do, or at least, on how I&#8217;m trying remove the problems I encounter.</p>
<p>Romu</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark A.</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-435</link>
		<dc:creator>Mark A.</dc:creator>
		<pubDate>Tue, 06 Oct 2009 18:32:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-435</guid>
		<description>why don&#039;t you explain the idea a bit further? What makes Wires and how do they relate to PureMVC? You cannot think the people to look though all your code to find the needle. But best wishes for your framework - why not?</description>
		<content:encoded><![CDATA[<p>why don&#8217;t you explain the idea a bit further? What makes Wires and how do they relate to PureMVC? You cannot think the people to look though all your code to find the needle. But best wishes for your framework &#8211; why not?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tweets that mention MVC design philosophy &#124; Soundstep, daily ActionScript. -- Topsy.com</title>
		<link>http://www.soundstep.com/blog/2009/10/06/mvc-design-philosophy/comment-page-1/#comment-433</link>
		<dc:creator>Tweets that mention MVC design philosophy &#124; Soundstep, daily ActionScript. -- Topsy.com</dc:creator>
		<pubDate>Tue, 06 Oct 2009 11:51:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.soundstep.com/blog/?p=371#comment-433</guid>
		<description>[...] This post was mentioned on Twitter by Romuald Quantin. Romuald Quantin said: sorry wrong link, here the direct one http://is.gd/40bM9 Flash MVC AS3 framework experiment, need comments on the concept #as3 #flash #mvc [...]</description>
		<content:encoded><![CDATA[<p>[...] This post was mentioned on Twitter by Romuald Quantin. Romuald Quantin said: sorry wrong link, here the direct one <a href="http://is.gd/40bM9" rel="nofollow">http://is.gd/40bM9</a> Flash MVC AS3 framework experiment, need comments on the concept #as3 #flash #mvc [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
