Q. What is the rationale for SynergyFLEX?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Good Question, one not answered easily as it has so many reasons.
My rationale? well to develop a FLEX application with training wheels on. hehe.
The concept came about after wanting a clean MVC/MVP approach to my
application, while allowing me to build / maintain an application in a
manner that allows co-developers to focus separately on the independent
parts (services, views, connecting logic, effects etc).
In order to understand how/why SynergyFLEX you kind of have to take a
glance at either Mach-II (cfmx/php) or right to the source, Implicit
Invocation.
SynergyFLEX in a nutshell simply promotes code-reuse as much as
possible, even in parts where its not obvious. It also allows the
developer(s) to build applications in a way that if requirements
change (lets face it, brainstrust tend to have a mind of a child at
times) you can do so with minimal effort / ripple effects.
The way it carries out this holy grail of a dream, is via the use of
XML. Now, using XML inside MXML seems such a waste, and that's why
i've abstracted that portion into its own class now - for those who
prefer a command syntax approach can do so.
The XML approach does have its perks, in that you could really build
an XML config on the fly via server-side languages like CFMX - which
FLEX could use to assemble the parts required for a persons FLEX
application.
The really nice positive associated with the XML config, is that it
transparently does a bunch of "import clasXYZ" automatically - without
most realizing it. That then in many ways negates a lot of the
creationPolicy hurdles. (ie depending on context, creationPolicies can
vary).
I initially did not want to use XML config, but i realistically cannot
see an alternative to what I hoped SynergyFLEX would do - that is,
provide you the developer a birds-eye approach to assembling your
application(s) in a effortless way.
Q. How does it compare to other frameworks, such as Cairngorm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In certain lights they share a similar goal, but in the end they
really aren't easily compared. I liked Cairngorm from a "cleaner"
standpoint in terms of code storage, but found it a tedious exercise
in terms of file management to simply get the ball rolling on tasks.
I'm a fan of automation, in that i find that a framework should in
many ways hide complexity while at the same time assist rather then
impose. To get started with the current frameworks out there, you kind
of have to study them intimately, then hope for the best.
I hope SynergyFLEX can allow you to not entirely focus on the innards,
more the higher level of "follow the XML layout and anything you don't
understand, you have the room to simply adhoc your way through until
you do".
An example is binding and servicelocation? If i have 8 view pods and
all feed off 3 independent services, i kind of want to create a basic
link from ServiceA.methodX Result to viewpodE.tree.dataProvider. THen
if another viewpod (say viewpodF) makes a data change to that result
stack, the two can be automatically updated by the initial link and
vice versa.
Stuff like that is trivial task in SynergyFLEX as its a matter of
stating what resultKey you want your viewpod to watch/listen to, then
simply using a notify node in XML, make such a request.
eg:
<event context="showDefault">
<viewpod name="demoapp.DemoTreeContainer"
mappingKey="myUniqueID" refresh="{false}" flush="{false}">
<binding source="model_MyTreeData" destination="treeDP"
bindingfilter="customFilter"/
</viewpod>
<notifyservice name="MyAliasToMyCFMXFacade"
method="getMyTreesData" resultKey="model_MyTreeData"/>
</event>
<event context="showOther">
<notifyservice name="MyAliasToMyCFMXFacade"
method="getMyTreeNewData" resultKey="model_MyTreeData"/>
</event>
In a nutshell what happens here, is when the user triggers the event
showDefault, it basically creates the viewpod in question, which is a
container with a Tree control in it, which feeds off an empty model
called "treeDP".
Then once its created, it basically setups a binding to the alias
"model_MyTreeData' - which at this point is empty.
The framework then automatically invokes a service called
MyAliasToMyCFMXFacade, stores that result against the alias
(resultKey) within BindManager. This then triggers a ripple effect,
which in the end updates the mx:Tree control via populating its model.
Stuff like that, in comparison to other frameworks? For me, i'm yet to
see that as simplistic. Now if you wanted to filter that data before
handing it to the mx:Tree you can do so by attaching a custom filter..
a custom filter is simply extended from a pre-made one, which you
over-ride certain methods if you want, and carry out filtering logic.
In the end, its up to you and the framework has that agile approach to
common tasks.
So not sure how it compares, but simply highlights tasks that should
for my mind be automated to a certain point.
Q. What are some advantages of SynergyFLEX?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Maintainable code base
- Promotion of re-use.
- Multi-tiered applications all using same logic, yet have different contexts.
- Tailormade Flex Applications to suite end-users (if need be).
- Loosely coupled parts/components in the overall equation.
- Large amount of Abstraction.
- Easy Learning Curve (well I hope anyway, so far its been positive).
- IDE Integration capabilities (ie down the track you could use an IDE
to build your application via UI).
There is more I could probably peel off if i really sat down and
thought about it, but to me the ultimate question still remains
un-answered... what is it you want out of a framework?
what appeals to you? what's your "wouldn't't it be cool list"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Now, I'm ready to do another release soon but first I am currently
rebuilding all the FLEX Sample apps that come default with FLEX in
SynergyFLEX (rebuild isn't the word really re-organising) to
illustrate
a comparison with hand-rolled code like Flexstore against maybe a
SynergyFLEX version?
Hopefully that will connect the dots some more for folks - its hard to
explain the whole framework in a small email, really needs a walk
through presentation of some sort. I've also
been busy building the help docs in RoboHelp *damn fine product*
aswell as update code documentation, so yeah its getting closer to
prime time.. still early days but
i hope its available before FLEX 2.0 hehehehe.
Hope that helps?
--
Regards,
Scott Barnes
http://www.mossyblog.com
http://www.flexcoder.com (Coming Soon - Waiting on NCL to arrive *groan*)
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/flexcoders/
<*> To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/