For people working with .NET there seems to be always a struggle between using tools provided by Microsoft or using other competitive tools that are usually free of charge. In almost all of these cases you have a "good enough" product from Microsoft and on the other hand you have a superior alternative product that as stated above will usually be open source and free of charge. For example,
NUnit v.s. VSTS tests,
Subsonic v.s.
BLINQ, ASP.NET Ajax v.s.
Ajax.NET Pro. or
Gaia and the list goes on. Even the mere existence of such products motivates Microsoft to work a little harder to produce its "good enough" solution. We would have to imagine how the quality of these Microsoft tools would be without the existence of such competition.
So if these
alternatives are usually really better, open source and in most cases free of charge, why does this struggle even exists inside the mind of a .NET developer? I believe it is for one reason and one reason only, it's the expectation and fear that a day will come where this alternative product will be abandoned and cease to grow and cater to the needs of its users. We all just had a similar experience with
Michael Schwarz announcement that he will stop development in Ajax.NET Professional; because, as he stated, he has his eyes on other technologies (not Ajax) that will change client application development.
Before this came along, I read a lot of blog posts from developers who wanted and loved to use amazing products like Ajax.NET Professional, but simply didn't; because of anticipation of such moment. Now for the users who actually did use Ajax.NET Professional, and specially in commercial applications, they are in a tough spot now. Although Michael recommended to his users that they migrate to ASP.NET Ajax because it has a way of invoking server methods from the client, ASP.NET Ajax will hardly provide them with similar experience to what they had with Ajax.NET Professional.
Now with a product such as Gaia Ajax Widgets, it is very unlikely that you will ever experience such thing. Not just because of our strong commitment to Gaia and our passion about working on it, but simply because we make money selling Gaia. Of course we offer a free GPL version to developers working on open source applications. But we have a good revenue from selling a commercial license of Gaia to others working on closed source solutions. This simply ensures that we will always have bread and butter, hence we can afford to spend our time working on Gaia without worrying about how we will feed our kids for example. This also ensures that we are not vulnerable to temptations from other competitive companies to abandon Gaia in return for money or job opportunities.
Let's take a look at the feedback form example provided on the Ajax.NET Professional website and see how that can be done in Gaia. First of all the philosophy behind Gaia is that you (as an ASP.NET developer) should work on a high level with C#, VB.NET or your favorite .NET language using the server controls and the event driven model, just as you are used to in regular ASP.NET applications, and get Ajax functionality out of the box without worrying about how the server and client communicate or how to pass data between them. Thus allowing you to focus on the bigger problem (creating your application) without the need to spend your time on plumbing code that should be done automatically for you.
So with Gaia, you don't need to modify the web.config to add a custom configurations. All you need to do is to reference the Gaia library dll and start using the Gaia controls, and work with the event driven model you are familiar with.
This is the regular example in ASP.NET for the feedback form:
And here is the event handler for the image button click event:
And to ajaxify that example using Ajax.NET Professional you would do the following:
1. Reference the Ajax.NET Professional dll.
2. Add a custom HTTP handler verb to your web.config.
3. Change the ASP.NET ImageButton control to a regular HTML img element and add the following script to be used instead of the btnSubmit_Click event handler:
4. Decorate the Send Method in the Mailer class with the [AjaxMethod] attribute.
5. Register the Mailer class for Ajax functionality in the Page_Load event.
And although you can use the same pattern with Gaia by invoking a method on the server from the client as described
here. You can be 100 times more productive if you work with server controls instead of HTML elements and with C# or your favorite .NET language instead of Javascript to write event handlers for your controls' events. So the steps you need to take to Ajaxify the same application using Gaia this time is as follows:
1. Add a reference to the Gaia.WebWidgets.dll and a register directive for the Gaia assembly in the top of your aspx page.
2. Modify the controls from regular ASP.NET controls to Gaia controls instead (simply search for each <asp: and replace it with <gaia:, it is that easy):
And that's it. Now you have full Ajax functionality. Check out our
samples to see what you can do with Gaia.If you have any thoughts, questions or want our help in porting your project to use Gaia instead
just ask.