With the beta release of Windows 7, the announcements done at PDC in October 2008 around the Azure Services Platform, Oslo and others; Visual Studio 10 at TechEd EMEA and more in between you might start wondering what your focus should be. Chances are you currently work on a project that does not yet implement any of these new technologies, so what can you start using and learning today in order to have an advantage in the future? That’s what I try to identify for you so that you can invest your time in technologies that according to me will become even more used in the future (of course while evolving as well).
In this post I’m making a selection on technologies that according to me will be important in the future (when working with Microsoft products mainly). This is a personal view and not an official statement by Microsoft in which direction to evolve or invest. It’s based on my own assumptions and learnings of the past months.
If I look back at what I have learned about the most in 2008 I can see a distinct moment in the year where a lot of new things started getting clearer: with PDC in October you could clearly see a shift towards a new paradigm, cloud computing. I also see PDC as the confirmation of other technologies are here to stay.
This is a real favorite of mine, XAML is the markup language used in WPF and Silverlight. By using XAML for the UI layer, both developers and designers/integrators can work on the same project, each with their favorite tools and focus.
XAML also marks an evolution in Microsoft technologies with a stronger User Experience focus, and tools to enable designers/integrators and developers to work together on projects.
Because XAML is separate from the Designers/integrators can work on the layout, interaction and styling of applications by using Expression Blend. This tool generates XAML without the need to type in all XAML manually. However a good base knowledge of XAML for WPF and Silverlight is really a plus. Developers also produce some XAML but they will mainly add business logic in the “code-behind” files using C#, VB or even IronRuby and other dynamic languages using Visual Studio or other tools.
If we look at the evolution of WPF and the extensive use of XAML in devices such as the Surface we see this will still evolve quite a lot in the years to come. This means that with a single technology you can target multiple forms:
- Windows client (WPF)
- Web (Silverlight)
- Mobile (Silverlight)
- Surface (WPF with Surface SDK)
- Windowsclient.net – community site for Windows Presentation Foundation & Windows Forms
- Silverlight.net – community site for Silverlight, the best starting point for anything Silverlight (and XAML)
- Some sample WPF projects:
- Expression community site (tutorials, articles, videos about XAML and the related technologies WPF and Sivlerlight, mainly for integrators and designers)
I should also highlight that XAML is not only used for UI like in WPF and Silverlight but also as the declarative language for services (in WCF) or in Workflow Foundation.
Windows Communication Foundation was first introduced with the .NET Framework 3.0 version. WCF is Microsoft’s recommended framework for building distributed applications, using a typed programming model (service model). While previously you had to use different technologies to build services like ASP.NET Web services, Web Services Enhancements (WSE), or .NET Remoting, since .NET 3.0 the answer is WCF.
WCF continues to evolve, with a lot of new features foreseen for WCF 4.0: tighter integration of WF and WCF, declarative services (with XAML), just take a look at the new features announced for WCF 4.0 on this MSDN page.
REST (or Representational State Transfer, see Wikipedia) is becoming more widely used as the protocol for a lot of new services and the support for REST in the .NET framework is only increasing. The WCF REST Starter Kit was released to make it even easier to build RESTful services using WCF.
If we look at the Azure Services Platform, quite a lot of the services are accessible through REST, like the Live Services or Windows Azure storage. This is also one of the pointers to me in choosing this as one of the current technologies where you can focus on.
In this area we should also not forget ADO.NET Data Services, which allow you to expose and consume your data or objects easily through a RESTful interface. Again here the integration with Azure becomes important become some of Microsoft’s cloud services expose data using the same conventions as the ADO.NET Data Services. This means you can use ADO.NET Data Services client libraries when working with some of Azure Services’. Again more reasons proving that investing your time in learning REST and ADO.NET Data Services will most probably pay off in the future.
ADO.NET Entity Framework was released last year with .NET Framework 3.5 SP1. In short, Entity Framework is a ORM for the .NET framework but we would be doing it wrong by this abstraction. On one hand, it allows developers to program against a conceptual model of your data instead of programming directly against a relational storage schema. This is done through defining Entity Data Model (EDM) to map the model to the data store.
The model can then be programmed against by using different services:
- Object Services
- Entity Client
- Entity SQL
- LINQ to Entities
Check out this PDC video to learn about the future of ADO.NET Entity Framework, and see how it’s going to evolve.
A note on LINQ to SQL: I have read on several places on the web that LINQ to SQL is gone. Well, I could not really find any official Microsoft source stating it’s finished. Rather, most investments will be made in LINQ to Entities, which is part of Entity Framework. While I love LINQ to SQL for RAD development and data access it has its limitations if you need to build an object model that does not do 1:1 mapping to the database.
See this official post on the ADO.NET blog.
ASP.NET Ajax 4.0 promises to bring some very interesting capabilities like Client templates. Forget the extra postbacks and roundtrips to the server, you can now take advantage of Client templates and load your data exposed through JSON for example. But that’s just one of the features, check out latest preview on the CodePlex site.
These are the main areas that I have identified, based on events I attended, readings, and discussions with colleagues and fellow developers in the community. So, IMHO you cannot do wrong going further already today with the before mentioned technologies.