With the first major project that I worked on .NET for a private company, I realize that we would have benefited from having richer, deeper patterns for doing the development that would have served as a guideline when trying to tackle such important issues as testability and maintainability. In .NET, many programmers are coming aboard from the Visual Basic camp and are therefore using the same programming methods as before, without the advantage of patterns-based design with specific, goal orientated designs (testability, componentization, ease of configuration, for example).
This leads to VB6-style programming in the modern environment of .NET 2.0; the quick and dirty apps, some simple and fast data-binding vis a vis a few clicks, and then done. This works fine, up until a certain point, which is usually the dividing line between a small project with a short life span and a large one. Visual Studio for .NET started off better than Java’s initial offerings and has offered better WSIWYG graphical builder, which is a real seller for doing quick work, part of the reason VB6 became so popular. On the other hand, Java has a head start design-wise on .NET with their Swing toolkit, and the accomplished programmer steeped in more enterprise-grade development will probably find themselves more at home in a Java environment than in a .NET one, at least as far as User Application programming is concerned.
The Microsoft Patterns and Practices group has developed Application Blocks which provide exactly this type of rich, deep functionality that provides the basis for enterprise-class applications. Furthermore, the application Guidance Explorer brings enterprise-level intelligence to a small software firm that most shops would never have access to “in build”, along with the rest of their Visual Studio development tools. It is a great package, and freely available.
Since I’ve been working with, I’m going to be writing several articles about using different components from Patterns and Practices to create applications, and discuss implementation and design questions when using these frameworks.
You can find the home page for Patterns and Practices here: