Big Picture of .NET Framework 3.5

Each release of .NET Framework adds to previous releases of .NET. And as features come out, they are slowly evolving the architecture for new applications and for updating applications in production. It's no longer about stitching together a set of libraries together to build an application. It's about choosing what features to incorporate in order to declare the intent of your application in a way that is quicker to build and provides more flexibility.

This means providing your applications with ways to interoperate with themselves and other applications in the enterprise. And that means using more and more declarative techniques to make programs more customizable or configurable to your customers. It also means that your applications have ways of connecting together to form future products. And, as some of my ISVs are doing, growing an ecosystem of partners to provide customizations on your products.

In .NET Framework 3.5 several important features have been shipping since November 2007. .NET Framework 3.5 builds incrementally on the new features added in .NET Framework 3.0. For example, feature sets in Windows Workflow Foundation (WF), Windows Communication Foundation (WCF), Windows Presentation Foundation (WPF) and Windows CardSpace. In addition, .NET Framework 3.5 contains a number of new features in several technology areas which have been added as new assemblies to avoid breaking changes.

I wanted to call out several .NET 3.5 technologies that are changing the Big Picture of application development. And to provide one or two key links on where to get more details.

ASP.NET AJAX

ASP.NET AJAX is one of the most popular additions to .NET. It provides the ability to refresh part of the page without having to resort to tons of raw JavaScript code. It makes AJAX programming affordable and approachable. It's a set of libraries, source code. But at its heart, ASP.NET AJAX provides a way to declare your application in ASP.NET and have each part of the page respond as if it is its own application.

You can create next-generation interfaces that work across all modern broswers. You can enhance existing pages with powerful AJAX controls. You can access remote services and data from the browser without complicated script. You can take advantage of the improved efficiency and ease of use in Visual Studio 2008, with its built-in support for ASP.NET AJAX, improved JavaScript support, and a new Web page designer interface.

You choose your preferred method of AJAX development, whether it is server-side programming, client-side programming, or a combination of both.

ASP.NET Extensions are coming too. More on that in a later blog posting.

ASP.NET AJAX shines in its ability to combine the best of server-side and client-side AJAX programming, providing Web applications with a user experience similar to the richness of traditional desktop applications.

To get started, see the Official Microsoft ASP.NET Site for materials, videos, downloads, and more.

LINQ

LINQ provides you with the flexibility with your data. The idea is that you can declare the data you want to use and then access it as you would any other object. And that data can be expressed as XML, as SQL, as your own collections, or anything else you're willing to write a provider for. And you can mix and match. LINQ gives you the ability to access data in the same ways without you having to know how its stored. You can get an detailed overview at LINQ: .NET Language-Integrated Query.

One of the questions though, is what are the scenarios that each kind of LINQ is for. Introducing LINQ to Relational Data introduces two implementations of LINQ, LINQ to SQL and LINQ to Entities, and the key scenarios for which each was designed.

One of my partners, Stuart Celarier, and I put together a 17-minute screencast that shows how you can use LINQ and how it works as a feature of the C# language. He shows how it compares with other ways you access data in applications. You can view it at Whirlwind 8: LINQ on Channel 9.

Workflow Services

Workflow Services combines the strengths of both Windows Communications Foundation and Windows Workflow Foundation. It provides you with a way to expose workflows as a Web service. This integration means that workflows can now more easily consume and coordinate services and be exposed through service endpoints. And you can use workflows to describe configurable business logic for your users.

By providing your workflows as services, you can now roll up data in your application so several things. You can have more than one user interface interact with a common set of configurable business logic. You can pull together information from other applications that expose Web Services. You can provide application scalability but either hosting the application on a single system or by separating the logic from the consumers of that logic on separate computers.

An excellent article named Foundations: Workflow Services on MSDN Magazine. The article describes what is required, how you can model communications between your applications, how to host workflows as services, how you can host the Service on IIS or Windows Activation Services, and how to use a context to maintain state over long running services.

Protocol Support in WCF

.NET 3.5 includes new Web protocol support for building WCF services including AJAX, JSON, REST, POX, RSS, ATOM, and several new WS-* standards. Mike Taulty provides a short 15 minute video to introduce you to the concepts at Using HTTP, XML, and JSON in WCF 3.5. To get the support for your WCF services you need to do two things. First, expose the functionality of your application through WCF. Second, encable your WCF host to support the protocols you want.

One good article that explains how to do this is Creating JSON-enabled WCF Services in .NET 3.5.