Friday, March 24, 2006

Six pillars of AJAX application design

AJAX and ATLAS are two hot topics in the arena of web application development.

In this blog entry
, RickSP covers a talk he presented at Mix'06 on how to "Design a Better User Experience with AJAX and ATLAS", and in particular, six "lessons from the trenches". My take is that these should really be "Six pillars of AJAX application design".

The two sites he references on AJAX Design Patterns and AJAX (XMLHttpRequest) Usability are an excellent read too.

Enterprise Library 2.0 extensions.

In his blog, Tom Hollander highlights some "bloody cool Enterprise Library v2 Extensions".

Whilst mostly related to the configuration of EntLib (but including a package that integrates the config tool with VS2005), one of the comments provides a link to a Data Teir Generator for EntLib.

I think that this could be a really simple way of getting started with the EntLib - bringing it closer to the data teir functionality of Castle ActiveRecord (and its associated generator) or IdeaBlade DevForce.

YET ANOTHER toolkit to evaluate! *sigh*

Thursday, March 23, 2006

ASP.Net on Rails

There's been a lot of excitement recently in the Open Source community about Ruby on Rails. This web development framework makes developing web applications much easier by providing a well structured Model/View/Controller framework in which to develop.

Of course, having this kind of framework available to ASP.Net would be even more exciting, the MonoRail project was a great find. Part of the wider Castle Project, it provides a true separation of presentation from business logic and persistance of data.

There's a nice database persistance layer as part of the project, too - ActiveRecord. Great for .Net 1.1, but possibly with some issues under .Net 2.0 as it relies on untyped collections. But I've found that there's a good article on implementing nicely typed collections for related objects tho, here, so I'm now less worried about using ActiveRecord as the persistance layer.

I'm going to try implementing a test with this later today, but it looks good from the documentation. There's even a stud for documentation about implementing the Inversion of Control pattern using the Windsor Container within the framework - all very interesting stuff.

Whether I manage to integrate MonoRail with AJAX (maybe using ATLAS) will be the real kicker, of course, but if it can be done, I think this could be an extremely powerful development framework.

More later.

Friday, March 10, 2006

The Provider pattern... in .Net 2.0 AND .Net 1.1

The ASP.Net Developer Center on MSDN has thrown up another useful article - or actually a pair of articles - on the Provider pattern.

In this first article, Rob Howard describes how the Provider model is implemented in .Net 2.0, along with a worked example.

Providers are, to my mind, absolutely central in developing flexible software architectures - being able to "unplug" a default provider and/or "plug-in" your own replacement/extension is central to role management in .Net 2.0. But it's also a very useful pattern in it's own right. The Search engine I wrote as part of the Mando Common Platform uses exactly this pattern (although partly configured via a database as well as via the web.config) to allow "pluggable" search handlers to operate across a variety of data sources.

But what's more interesting is that in the second article, Rob provides a parallel implementation of the provider pattern in .Net 1.1 - in the process clearly explaining how the pattern can be implemented in .Net 1.1.

This pair of articles really should be required reading at Mando for the programming team!

An Alan Partridge moment - VS2005 Web Application Projects

Ah-ha!

I just found this page on MSDN - a Beta version of an add-in for Visual Studio 2005 that allows it to work with web projects the way it used to in VS2003.

Looking at it, this should make migrating existing ASP.Net 1.1 projects to .Net 2.0 a tad easier by removing all the faffy refactoring that was needed to match the new coding model.

Actually, pretty much every posting on the ASP.Net Developer Centre: Infrastructure page is relevant right now - from the Web Standards support to the new Web Deployment projects. The use of the former is obvious, whilst the latter seems to take the Publish Web Project idea to the next level with web.config customisations and all sorts of goodness.

Time to find a simple ASP.Net 1.1 project and try converting it...

Wednesday, March 08, 2006

I have seen the future... and it is LINQ

I'm astounded... Really gobsmacked...

I've just watched this Video interview on Channel 9. In it, Anders Hejlsberg describes LINQ (Language INtegrated Query). A part of C#3, but already available as a technical preview, this brings SQL type querying to ANY object that implements IEnumerable.

That means pretty much EVERYTHING! I'm still trying to get my head around it all, but Anders' demo of iterating the instance methods of the string type using the syntax was the epiphany moment for me - a simple, elegant way of accessing complex real-world data. Wow!

The LINQ Project home page is available here:
http://msdn.microsoft.com/netframework/future/linq/

The technical preview is available here:
http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4b09-8912-69f6c38d3a56/LINQ%20Preview.msi

Tuesday, March 07, 2006

Unit Testing snippets for VS2005

Having just touched on NUnit testing in a training presentation at Mando Group Ltd, it was perfect timing that I ran across this article posted to TheServerSide.Net.

Snippets seem to be a great addition to VS2005, allowing templates for common code to be pulled from a common store - great for implementing coding standards and best practices.

These snippets provide the framework for generating unit test classes running under both NUnit and Microsoft Visual Studio Team Server.

This is one set of snippets that I'm definitely going to be installing.

Saxon - providing an exciting " Hello World" implementation?

This post by M. David Peterson on the O'Reilly weblogs (and cross-posted to both XML.com and the Windows DevCentre) provides a fully-commented ASP.Net "Hello World" implementation.

Nothing exciting there, except that it's demonstrating using the Saxon 8.x XSLT processor to transform XML and XSLT into XHTML. What caught my attention was that Saxon provides XSLT 2.0 support, unlike the System.Xml.Xsl classes in .Net 1.1.

I've not tried this myself yet, but given the grief I've had with managing namespaces in XSLT 1.1, I'm hoping that Saxon might make using XSLT for the generation of dynamic content rather easier. Certainly, it would provide a stop-gap implementation until full XSLT 2.0 support is provided out of the box in .Net.

Saxon is available as a basic (non schema aware) version as OpenSource from SourceForge, or as a schema-aware version from Saxonica. Priced at £250 / workstation or server, it's reasonably cheap too.

Another item for the research list!

Monday, March 06, 2006

WSCF 0.6 Released

Thinktecture's Christian Weyer and Buddhike de Silva have released the latest version of this excellent toolkit. Now for .Net 2.0 and VS2005 only, in my mind this really is the optimum way of defining and coding web services across corporate boundaries.

The Web Services Contract First methodology is really a return to the original spirit of web services - that of an interface driven service oriented architecture. By providing all the tools to let you generate the WSDL contact first, this toolset makes you think about the interface between services, rather than the traditional VS driven way of just exposing your existing classes through a webservice.

I blogged about this before after going to a presentation on this by Christian, and am still as impressed - I just can't believe I missed the 0.6 release until now!

More information and the download links can be found at http://www.thinktecture.com/Resources/Software/WSContractFirst/default.html.

Thursday, March 02, 2006

Open Source vs "Commercial Reality"

In this OnLAMP article, Andrew Stellman, Jennifer Greene, authors of Applied Software Project Management, make some interesting comparisons between the corporate software development process and that of the Open Source community.

Whilst the article is unashamedly a plug for their book, it does highlight deficiencies that seem to be prevalent in the corporate world, where commercial constraints often put pressure on a project team to deliver "the product", causing other deliverables - in particular things like documentation, testing, architecture, etc - to be given less weight than they perhaps otherwise should. The practices and patterns that should be applied across the project getting subverted by the commercial "realities".

In the article, they detail five
principles for successfully delivering a project, namely:
  • Tell the truth all the time
  • Trust the team
  • Review everything, test everything
  • All developers are created equal
  • The fastest way through the project is to do it right
In my opinion, as an Architect and Developer, the two that get least weight are the "Review everything, test everything" and "The fastest way through the project is to do it right".

These, particularly the latter, should be championed much more. Time and again, I've found I've had to argue in favour of a bit more complexity and cost for a feature in order to future proof it or provide a foundation for future work, against the drive to deliver "just what's needed as soon as possible and as cheaply as possible".

Inevitably, if the product in question is going to have a future beyond its first release, then thinking about that future, and the possible changes or extensions to its functionality, and putting foundations in place to support that future give long-term cost benefits that far outweigh the short-term savings that a "sub-optimal" solution would bring.

The article can be found here:
http://www.onlamp.com/pub/a/onlamp/2006/02/27/what-corp-projects-learn-from-open-source.html

Service Oriented Archictecure - The City Metaphor

In this article on MSDN, Pat Helland provides an interesting metaphor "for the evolution of information technology into the world of service-oriented architectures".

In it he compares the evolution of cities and the real-world systems that exist within them (transport, manufacturing, etc) with that of SOA, in the process providing a pretty good introduction to the subject. From the summary:
Explores the idea that information technology is evolving in a fashion similar to how American cities have evolved over the last two centuries. The opportunities and pressures of the technological revolution have driven our metropolises to adopt new frameworks, models, and patterns for commerce and communication. Recent developments in IT are analogous. What can we learn about the present and future directions of IT by studying the recent history of our urban centers.
Well worth 10 minutes of your time to read.

The full article can be found at http://msdn.microsoft.com/library/en-us/dnmaj/html/aj2metrop.asp.

Patterns & Practices Summit

I've been going on about Patterns & Practices for a while now, so I was greatly interested to discover the day-by-day coverage of the Patterns & Practices Summit West 2005 on TheServerSide.NET.

Paul Ballard and Gregory Hoyt give a good account of each of the three days (1, 2, 3), including relevant resource links. The Enterprise Library 2.0 powerpoint is well worth a look, particularly if, as I do, you think that a community-driven best-practice library can significantly reduce development effort.

Would I want to go to an event like this? Certainly. Should there be something like this in the UK? Definitely.

Now, I just have to work out how to get to go to the Oslo event in May!