Flash RFC
Sean still disconnects on some issues, but at least we do agree on some things....
1. Remoting, Latency & Facades
Why is remoting bad? Because for each property get and set you need to make a call to the remote object. Very bad from a performance standpoint. So, we do something to eliminate the amount of remoting we do, like build a facade and pass entire objects or datasets back and forth. I think we agree here.
The issue is why should the facade be written in ActionScript? Well, for some apps it might not be an issue. But when you have a lot of developers that are going to be interfacing with your application or you spend your time building frameworks (like me), then a simple auto-gen'd class aint going to cut it. To truely reduce the penalty of RPC calls, you need to make as few as possible. When you have a lot of logic going on, you are going to have to cache some things (like security credentials) to eliminate the number of calls you make. This has to be done on the side of the client, since the client is the one that initiates the calls in the first place. If you are going to provide rich functionality some name value pairs or simple structures aint going to cut it (ok, it was the other article that was emphasizing the name value pairs as the value object pattern...I guess you don't agree with Brandon Hall's article that originally pointed me to yours?).
I think the situation is similar to what MS does with the Primary Interop Assemblies and legacy COM components. If I was building a flash based eCommerce framework, I would definately want to include some type of equivalent functionality for the very same reasons you would create a PIA. Let's get this straight though. I would much rather just create a .NET assembly that the people using my framework could use and end it at that. This is possible with ASP.NET or a Windows Forms Rich Client, but with Flash it isn't an option (this is again why I say some type of better integration with .NET inside of Flash would be a lot better than remoting). Right now, I would have to write my PIA in Javascript, which is definately not a fun thing to do.
3. Multiple Languages
"So it appears we agree here that in larger applications, using multiple languages is the way to create the best result"
Only given the precondition that you have developers that are predisposed toward seperate languages. This is something of the past though, the trend is consolidation (like MS SQL allowing C# stored procs). Developers don't have time to master a ton of different languages and Javascript is definately a dying language. A couple years ago, you could throw a stone and hit a Javascipt "guru," now they are already much harder to find. Soon, they will have gone the way of the COBOL guru...especially considering the increase of alternative methods of creating internet based Rich Clients (ie. Java, .NET). 5 years ago, everyone was learning Javascript (heck, I even met a rough looking homeless guy last week who learned javascript in the .COM days and was pretty proud of it), but that isn't the case today. I don't know any developers who could say to me with a straight face that they would rather use JavaScript for their next enterprise level application than a real language like C# or Java. If anything, the perception issues alone are going to be a major hurdle for the take-up of Flash development.
4. IDEs
I assume from your comments you conceed that the VS.NET experience is a lot friendlier :-).
I am well aware of the Macromedia Exchange. Lots of cool toys in there, but flash is still majorly lacking in the Component Based Development arena.
5. Spagetti
Yes, everyone can write bad code in any language, and that is one of the things that VS.NET attempts to limit by defaulting to code behind and including support for enterprise templates. The MX team would do well to take note.
However, you still have the problem that the IDEs aren't integrated enough to provide the level of support that a truely productive IDE would require, but Flash 7 is due out soon and 8 on its heels so we will see (I've heard some cool rumors at least that Macromedia is seriously looking at the development market and there are plenty of smart guys over there, so we will see, I just might be suprised...but VS.NET 2004 is also coming out soon and I have heard about a ton of very cool stuff in that area which Macromedia definately isn't going to be able to match any time soon...so by the time MM Studio 7 comes out there will still be plenty more catch-up to play). But, I digress, this was point 4, not 5 :-).
In any case, this still leaves me at the point where I don't see enough benefits to justify using MX for a rich client as opposed to a fancy WinForms client or a vanilla ASP.NET application...and this, of course, is exactly the point. So, using MX may not be a horrible solution for a rich client, but, IMO, the .NET value proposition is still a heck of a lot better.