Where's the Right Way to Ajax?

by Stian Solberg 20. April 2009 10:59

Dino Esposito has written an article on DotNetSlackers with an oveview of different Ajax Web Architectures. The article covers how Gaia Ajax fits into a "Active Server Pages" pattern, and why Gaia is a solid architecture for your next web application.

Gaia Ajax is an Ajax toolbox for ASP.NET and Mono. The library is dual licensed, where you can use the GPL license for building open source projects, and for your proprietary projects you can obtain a commercial license.

Read the complete article on DotNetSlackers

Gaia and Ajax on Mobile Devices

by Jan Blomquist 25. February 2009 10:28

More and more Ajax Web applications are targeting the mobile browser. The age of dull and slow web experiences are long gone and the demand for high response and high interactivity on the mobile phone is here. At the end we present the 10 key tenets for building these next generation mobile web applications. 

Gaia Ajax on Mobile Devices in the Real World

Recently we delivered an Ajax Web Application with a Dual UI using templating techniques spiced with inspiration from Model View Presenter. The result was a single codebase with simple multi-device targeting. All built with open source technologies like Gaia Ajax, Castle ActiveRecord, Nhibernate, ZedGraph, NUnit and MySQL. And of course the solution worked nicely on Mono too :-)

We've tested Gaia Ajax on the following devices

All of them worked nicely with Gaia Ajax, except a few customizations for Opera Mobile. Let's have a look at how you can enable Gaia Ajax for this wonderful browser too, which by coincidence happens to be developed here in Norway too.

Fix for Opera Mobile

We use Prototype.js under the hood on the client side and unfortunately there's a small bug in Prototype that makes the Ajax engine break down on Opera Mobile. There are two ways to work around this problem.

  1. Embed the code snippet below somewhere on your ASP.NET page to override the Ajax.Request prototype implementation.
  2. Overwrite prototype.js in the Gaia.WebWidgets project and rebuild.


   1:  <script type="text/javascript">
   2:      Element.observe(window, 'load', function() {
   3:          Ajax.Request.prototype.initialize = function(url, options) {
   4:              this.options = {
   5:                  method:       'post',
   6:                  asynchronous: true,
   7:                  contentType:  'application/x-www-form-urlencoded',
   8:                  encoding:     'UTF-8',
   9:                  parameters:   '',
  10:                  evalJSON:     true,
  11:                  evalJS:       true
  12:              };
  13:              Object.extend(this.options, options || { });
  15:              this.options.method = this.options.method.toLowerCase();
  16:              if (Object.isString(this.options.parameters))
  17:                  this.options.parameters = this.options.parameters.toQueryParams();
  18:              else if (Object.isHash(this.options.parameters))
  19:                  this.options.parameters = this.options.parameters.toObject();
  21:              this.transport = Ajax.getTransport();
  22:              this.request(url);
  23:          }
  24:      });
  25:  </script>

It's worth mentioning that this patch is only valid for Gaia Ajax since we know what we use.

Note! This is not a patch that should be applied to Prototype.js overall.  

Another 10 Key Reasons to use Gaia Ajax for Mobile Web Development

  1. Unified codebase
  2. Multi device targeting for broad reach
  3. No need to expose biz logic to client
  4. Single point of deployment
  5. Based on open standards
  6. Write applications in managed code (C#, VB.NET, Ruby.NET, IronPython, etc)
  7. No sync issues
  8. Minimal maintenance costs
  9. Rich user experience without the need for javascript
  10. No security hazards/breaches
Don't surrender to binary code distributions, but embrace open standards.

Suite, best of breed or in-house development

by Jan Blomquist 22. August 2008 19:49

In this blog I want to write about the pros and cons when choosing between suite, best of breed or in-house development when setting up the infrastructure of a developer shop. I will reason why we chose best of breed and the argumentation that lead to this conclusion.This blog will contain most references an examples to products on the Microsoft .NET platform, but the content was written to be read by anyone including non-developers. 

So what are the differences between the three alternatives. 

 Re-inventing the wheel


  • A Suite can be thought of as a collection of applications from a specific vendor. It doesn't have to be a commercial alternative and DotNetNuke is one example of a suite where all the major components are delivered in a single box (wiki, forum, blogs, cms, etc).
  • Best of breed are standalone applications that work isolated and doesn't rely on being part of different ecosystems. For these systems to be efficient they should provide a mechanism to be integrated with other systems. An example of a good best-of-breed system is YetAnotherForum which only focuses on delivering a good forum solution
  • In-House Development is building the stuff you need yourself. Skilled developers can rapidly build the desired functionality on an on-going basis and usually you build what you need as you go. 

"Personally I've experience with all three of the approaches and there are clear benefits and downsides to all of them. " More...