Get stuck in to Visual Studio 2008
LINQ big, better teamwork needed
Further, Microsoft itself has muddied the waters by declaring that WPF is not suitable for line-of-business applications. According to Microsoft technical product planner Glenn Block: “Win Forms is the recommended breadth solution for LOB application development for the foreseeable future.”
Issues include maturity, the range of available controls, and the difficulty in migrating from Windows Forums to WPF. Honesty is commendable in this business, especially from Microsoft, but - really - this is not a great way to sell your new technology.
Peter Lindsey, managing director of Infragistics Europe, a partner selling components for both WPF and Windows Forms, told me recently at TechEd Barcelona that Microsoft’s caution is slowing WPF adoption. “Microsoft, in trying to capture credibility within the media market, has poorly represented the value of WPF to business application developers.”
The risk is that with attention shifting to cross-platform, internet applications, WPF will never achieve mainstream adoption. Silverlight, a lightweight cross-platform implementation of WPF as a browser plug-in, is attracting more attention. Unfortunately with Silverlight we are back in the world of preview bits. The release of most interest to developers, which includes a cross-platform .NET runtime, is not expected until late 2008.
Still, now we have a proper XAML designer in Visual Studio and it is an impressive piece of work, especially when combined with Expression Blend.
Visual Studio 2008 also offers support for language innovations in C# and Visual Basic. The headline feature is LINQ - Language Integrated Query - but there are several other changes that are part of the plumbing behind LINQ and that are also more useful in general. One example is type inference, where the type of a variable is inferred from the value to which it is initialized.
In C#, you use the var keyword:
var s = "Reg Developer";
gets you a strongly-typed String variable.
The Visual Studio editor fully understands var, and gives you IntelliSense features like word completion and so on. Type inference is addictive, if only because it saves typing and de-clutters your code. Another neat feature is extension methods, which let you extend types with static methods that are called like instance methods. The value of the instance is passed to the static method, so it has some knowledge of the instance but does not break encapsulation. Other additions include anonymous types and Lambda Expressions, used heavily by LINQ.