Xamlon vs. NeoSwf: Initial Impressions
So, I've had a chance to play with both the Xamlon and GlobFX (NeoSwf) C#->SWF compilers. Here are my thoughts:
Xamlon
http://www.xamlon.com
Xamlon's compiler is the most ambitious of the two, sporting XAML support, direct mapping from the native .NET class libraries to its own libraries, and heavy duty VS integration. You can even take advantage of the built-in windows designers to drag and drop controls on your forms. In practice, however, this product is still very much a beta. In fact, I would go so far as to say it should still be alpha. First off, it isn't uncommon to find that the class or method that you were wanting to use has not been mapped / implemented by Xamlon. The worst part about this is that you aren't informed when you are actually typing the code, only when you compile. As long as you compile often, this isn't so much of a problem, but designing something only to find out that the method doesn't really even exist (even though autocomplete told you it did) is really annoying. Secondly, a lot of times you might get something that "works", but does nothing. For instance, the default project setup did not include the windows forms mapping dlls, even though it created forms based classes. I didn't get any errors about them not being included, it just compiled as if they were and it took me quite some time to realize that the code I had written was fine, it was just a linking problem. Additionally, some times the code you write will compile, but just not work when it should. Things like resource embedding for extra fonts also see a bit more clumsy than they should be. Lastly, the apps that it generates look like Flash apps. Maybe there is another skin, or maybe you like the way Flash apps look, but personally i do not. I like something a bit more crisp.I'm sure that most of these types of things will be smoothed out before they launch the product, but my initial impression is that it still has a long way to go before you can use it on a daily basis.
NeoSwf
http://www.globfx.com/products/neoswiff/
NeoSwf is the less known C# compiler. Xalmon seems to be getting all the attention lately, probably because of the XAML hype. However, if I had to choose one of the two, I would chose NeoSwf in a heartbeat. Unlike Xamlon's compiler, everything I built with NeoSwf just plain worked. NeoSwf does not map calls from the standard BCL into their own commands, they actually have their own version of the BCL which only includes the calls that you will be able to use. This makes the auto-complete a lot more useful. No guesswork is involved when determining if something is actually included. Most of the stuff you use on a regular basis (like Forms / Buttons / etc.) all retain the same names, properties, and methods that you are used to, so it is a breeze to just pick up and start coding with. When there are changes, like in the WebRequest object, which just doesn't match well to Flash due to the differences between the Flash and .NET core, you can pretty much figure out the changes without having to launch a web help page to figure out what you need to do. The IDE integration isn't quite as advanced as Xamlon's. For example, there is currently no designer support. However, I'd be suprised if that didn't come along at a later date. If you really need the designers, you could just create a standard C# forms app and then cut/paste your form definitions for now. The control skins included with NeoSwf are really top notch. The Windows XP skinned controls look and feel like Windows XP controls down to the little things like mouseover feedback on buttons. This is a great touch and really makes the apps it creates stand out. As you can probably tell, I was extremely impressed by NeoSwf. The GlobFX guys have a lot of top notch SWF tools, and this looks like it is going to be the most impressive yet. Hopefully, GlobFX will add some designer support soon and then this product will really rock.
C#->SWF is definately shaping up to be a nice competitor to AJAX. I can already tell you that if I had to create some rich UI features for an ASP.NET app today, I would seriously consider using NeoSwf over something like AJAX.NET. What would be nice to see is some ASP.NET additions to NeoSwf which would make the communication between NeoSwf and my ASP.NET apps easier. Maybe now that there is a decent C# compiler that outputs Flash, someone can build some C# based WS-* support on top of one of these? WSE/Indigo for Flash? Coding apps with NeoSwf feels much more natural and is far easier to work than any AJAX library that I have seen to date. It is an amazing feeling to be able to fully use C# for the client tier of a web application. No javascript errors to debug. No more Netscape / IE incompatibilities to worry about. It just works.