Flash Remoting
Following the link John Dowell left in his great comments about PPT -> SWF conversion, I eventually stumbled upon this article about using remoting in Flash MX (for those who are not aware, you can actually use remoted J2EE and .NET components from the Flash player starting with MX). Turns out that the Macromedia community's interest in design patterns is increasing as well. The difference is that it is a really new thing in the Flash community, and you generally are dealing with simpler patterns, not enterprise level patterns (still pretty cool nonetheless).
In any case, I think any .NET developer who reads the
article will quickly realize why the pure .NET value
proposition (ASP.NET) beats the Flash hybrid (Flash+.NET
remoting) approach hands down (for example, moving all your
remoted object's fields into a dictionary and using that
dictionary for your get and set operations kind of defeats
the point of using objects in the first place, doesn't it?).
Network Latency
When using
remoting in any environment, this quickly becomes an issue.
It can be bad enough when you are remoting within the
confines of your own server room, but remoting across the
web brings an entirely new set of latency issues. The
solution here would be to build an actionscript based facade
(NOT a Cold Fusion based facade like the article suggests),
but that could be quite a bit of extra work. Additionally,
ECMAScript isn't exactly a true OO language, so that brings
its own issues.
Multiple Languages Required
So, you
solve the network latency issue, but now you have a
matinence headache. The number of developers on the planet
who are fluent in both C# / VB.NET and ActionScript is very
small. Yes, ActionScript is just JavaScript inside of the
flash player, but because it runs inside of the Flash player
and not in an HTML page, there is a lot of stuff going on
that the avg. C# / VB.NET developer isn't going to recognize
/ understand at first glance. Additionally, just about any
developer can lay out some WebForms pages, add his even
handlers, set some properties, do some databinding, etc. and
have a complete app ready to go. Creating the equivilent app
in Flash is a bit more involved. As a result, you are
probably going to need a team of ActionScript gurus to do
the UI layer and a team of .NET junkies on the back end. Not
to bad as long as the worlds don't collide, but if the UI
team has a problem with one of the .NET components, the two
teams are going to have a hell of a time trying to
communicate (can't just "send over the source code" on this
one).
Multiple IDEs Required
In addition to
needing to deal with multiple languages, you now have a
project that is split across two entirely different IDEs.
One of which has no Source Control support and doesn't
exactly support team development. This, again, limits the
ability of teams to communicate because of the same issues.
Even if you're backend team did understand ActionScript
enough to take a look at some source code, you can't just
tell them take a look at "AccountDetails.aspx lines 20-50"
or even send them the source file that is causing the
problem, because if you send the FLA they can't read it
unless they have Flash (and know how to use it... flash
files are timeline based, not file based, so a VS.NET dev
could have a boatload of fun trying to track down the line
of code that the dev was referring him do), if you send the
SWF file, it is like sending a DLL, it doesn't really do any
good unless you really enjoy decompiling things.
If Macromedia could find a way to integrate Flash support into the VS.NET IDE, this would be very cool and eliminate a lot of issues.
ActionScript UI Layer
Creating your
entire UI layer in ActionScript is like going back to ASP
and COM+. Yah, you get to compile your business logic.
Great, but you still have spagetti code all over the place
because UI layer is a mess. Some support for something like
ASP.NET's code behind would be great (put your logic in a C#
dll on the server). I admit, this would probably be fairly
difficult for the Flash team to accomplish, but it could at
least provide a door into the .NET world and would be a very
cool utility.
Limitations of Flash
No nead to go over these again, but we are definately
spoiled with all the power that the .NET framework gives us,
suffice to say you can find plenty of discussion about this
in previous posts on this blog.
Anyone know if Macromedia is doing anything do address any of these issues? John?