I’ve finished documentation for my UI project and there are only two or three small tasks remaining before it can be released. They are related to the publishing process. The most important one is a website for the project. I could use sourceforge.net or something similar, but I'm planning to work on commercial projects as well and I would like to have a single place to manage and publish all projects.
Several technologies can be used today to create a website , from simple HTML to PHP, ASP, ASP.Net, JSP, etc. I decided to use .NET, which narrows it down to ASP.Net 1.1, ASP.Net 2.0 (still in beta) and Monorail.
I’ve had some experience working with ASP.Net 1.1 in the past. It is a relatively new generation web development technology and it still has some problems. For example creating master pages (a common template for all pages) is not trivial. Another problem is communication between pages, but I recently found out about Page Methods that make it simple. ASP.Net 2.0 solves some of those problems (master pages mentioned above is one), but several fundamental flaws in the design of the framework that I wasn’t able to work around remain. ASP.Net makes it a complicated task to create simple, cohesive and loosely coupled classes in the web application because it’s so easy to put parts of the business logic into the presentation layer. There’s also a problem due to the fact HTML is a state-less environment. From what I’ve read online, I’m not the only one who is struggling.
Not long ago, I found out about Monorail via this Code Project article. It’s based on Ruby on Rails and it attempts to solve often-encountered problems in web programming. Everything I’ve read about Ruby on Rails had only good things to say about it, but it doesn’t mean that Rails is the silver bullet of web development.
So far Monorail looks interesting, but it’s still in beta (although looks stable). The main advantage of the framework is that it enforces programmer to separate code into Models, Views and Controllers (MVC pattern). It’s still possible to screw up and have bad design, but it’s not going to be as easy as in ASP.NET.
Monorail can use either nVelocity (simple HTML templates engine) or ASP.Net for the views. So in theory it should be possible to reuse ASP.NET controls, but I haven’t tested it yet. Monorail developers recommend using nVelocity to keep the views simple, but I’m not sure it is always suitable. I also have concerns about necessaty to go through all the trouble of using a beta framework (ASP.Net 2.0 is in beta too, so I’m just as reluctant). Maybe the same concepts could be implemented in ASP.Net. I doubt it will be easy though. Also ASP.Net is a more widely supported framework. There are more developers writing it in Microsoft than Monorail, more tools and extensions come out for it, etc. Chances are if I need to do something in ASP.Net there’s a control for it somewhere in existence. In Monorail I might have to reinvent the wheel and write my own extensions.
I’m leaning towards Monorail at this moment. I like that it promotes good design, but there are still some more experiments to do before I can completely justify using it over ASP.Net. Expect more posts on the subject.