Deconstructing .NET Framework 3.0
In 2000, Microsoft released the first beta of a product called .NET 1.0. The product, a framework of classes, was the answer to problems that Microsoft faced from the developer community, particularly the Java community. Microsoft was seen as old-fashioned and behind the times. The .NET Framework convinced many, and now developers embrace .NET.
Now, several years later, a third release of the .NET Framework is coming. In this release, tied to the release of Windows Vista, comes a mature framework. The focus of the third framework is to broaden the scope of the .NET solutions. But, as with the previous versions, .NET 3.0 is large and complex.
How Does .NET 3.0 Differ from 1.x and 2.0?
.NET 3.0 is somewhat different from the 1.x and 2.0 .NET Framework. The first two frameworks focused on allowing many different languages to communicate with a common set of libraries translated through the Common Language Runtime (CLR). Introduced with .NET 1.0 and enhanced with .NET 2.0, the CLR works on a relatively simple concept: A common runtime model executes code for any system running the .NET Framework. What this means to you as a developer is that you don’t need to keep relearning languages for different technologies. For instance, a C# developer who writes Windows Forms applications take the knowledge used for building forms and apply it to writing web pages. Similarly, a Visual Basic .NET developer can switch from writing mobile applications to writing web services. The CLR acts as an arbitrator and communicates back and forth.
Version 3.0 of the .NET Framework is the first release that doesn’t improve on the Common Language Runtime. Many have cried foul at Microsoft for this lack, but my take is that you don’t need to improve the CLR with every release. The focus for this release of the framework is to broaden the technological appeal of the language.
Extending the .NET Framework has been demonstrated in previous releases. The first two frameworks released a new way of building web applications with ASP.NET. The Mobile.NET release, with the 1.1 .NET Framework, made it much easier for developers to build applications for smart phones and other smart devices. The frameworks were always designed to be extensible. Figure 1illustrates the stack formation of the frameworks in .NET 3.0.
Figure 1 Frameworks in .NET 3.0.
The .NET 3.0 Framework isn’t improving upon existing technologies but rather introducing four new foundation technologies:
- Windows Presentation Foundation (WPF)
- Windows Communication Foundation (WCF)
- Windows Workflow Foundation (WWF)
- Windows CardSpace (WCS)
Each of these technologies is a new cornerstone that developers can leverage for new solutions.
Windows Presentation Foundation
Windows Presentation Foundation (WPF) is arguably the most well-known of the four new foundation class sets. This is largely because of two things:
- You can actually see a WPF solution.
- WPF has been compared frequently to Adobe’s Flash.
ASP.NET garnered a lot of attention for the first two versions of the .NET Framework because you could see what you were working with. Similarly, WPF is a consistent programming model for building solutions, and enables the use of richer controls, design, and development in Windows programs. A WPF program can be developed and released to desktops, the Web, and devices.
Once interesting aspect of WPF is the XML standard programming language called XAML (pronounced "Zammel") that controls the layout of objects. This language is causing the comparisons with Flash. On the surface, both seem similar, but the WPF and Flash differ significantly. Flash is a mature, controlled, sandboxed framework that’s independent of the operating system. WPF allows you to integrate with the operating system and other .NET Framework technologies. Flash and WPF are essentially two very different technologies that will serve different markets, with marginal crossover.
WPF already has some tools that you can use for building solutions. The Microsoft Expression family of tools consists of new designer tools that allow you to create illustrations, web sites, and interactive presentations.
Windows Communication Foundation
The core purpose of the Windows Communication Foundation (WCF) is to allow programs to talk to other programs on the same computer or network, or across the Internet. The WCF programming model unifies web services, .NET Remoting, distributed transactions, and message queues into a single service-oriented programming model for distributed computing.
WCF is designed in accordance with service-oriented architecture principles to support distributed computing, in which services are used by consumers, clients can consume multiple services, and services can be consumed by multiple clients. Services typically have a WSDL interface that any WCF client can use to consume the service, irrespective of the platform on which the service is hosted. WCF implements many advanced web services standards, such as WS-Addressing, WS-Reliability, and WS-Security. While Microsoft is a board member of the Web Services Interoperability Organization (WS-I), it’s unclear how many WS-I profiles Microsoft will commit to supporting fully.
Windows Workflow Foundation
Windows Workflow Foundation (WWF) is a Microsoft technology for defining, executing, and managing workflows. Workflows are composed of activities; developers can write their own domain-specific activities and then use them in workflows. The .NET Framework 3.0/Windows Workflow Foundation also provides a set of general-purpose activities that cover several control-flow constructs.
Windows Workflow Foundation also includes Visual Studio 2005 extensions. These extensions contain a visual workflow designer that allows users to design workflows, a visual debugger that enables users to debug the workflow, and a project system that enables the user to compile workflows inside Visual Studio 2005.
An early example of WWF will be seen in the release of Windows SharePoint Server 2007 Portal.
Who are you? It’s a reasonable question—and one that developers wrestle with every day. Currently, we have solutions such as Active Directory, Passport, and Windows Membership Services that can be used to identify a person by username and password. The problem with these solutions is that they’re inherently very loose and insecure. How often have you heard people sharing usernames and passwords? When this occurs, you don’t know who the person authenticating really is.
The new Windows CardSpace is a step toward changing this situation. Unlike previous attempts at managing security, Microsoft took a bold step with CardSpace and did something almost unprecedented—asking security experts outside Microsoft what security should really look like.
The response was simple: Any user can create and share his or her unique identity. Windows CardSpace is Microsoft’s version of this new solution. The good news is that CardSpace works on the same principles being developed by other companies. Microsoft may be first, but many companies are building on this technology. For instance, Microsoft has released code that demonstrates CardSpace integrated into a PHP application. (It only took 200 lines of code.)
CardSpace and the new supporting technologies will change how you authenticate into an application, whether it sits on the Web, your phone, or your desktop. The service will really know you are, versus who you claim to be. For the privacy of your data, that’s a very good thing.
Building .NET 3.0 Solutions
As you might expect, the main tool for building .NET 3.0 solutions will be Visual Studio. The next release of Visual Studio, currently in CTP under the code name "Orcas," is slated for 2007. In addition to the development tools, a new set of designer tools to support Windows Presentation Foundation are being released, under the family name Expression.
Microsoft is putting a lot of muscle behind .NET 3.0, and I would expect many niche tools to be released or announced during 2007.