The Menu
“Too many changes spoil the broth”. Does this aphorism perfectly apply to the deluge of hastened .NET framework releases? Today, .NET is deliberated as the most successful and consented development platform in the programming world. But now, with the advent of yet another framework release at the door step, awaiting to be embraced by the tech community, most of us may possibly have qualms regarding its worthiness. Aren’t a lot of us already too satisfied and comfortable with the existing .NET framework 2.0? Are we not apprehensive about accepting anything newer, especially if that is going to deprecate the existing one? Isn’t the short shelf life of .NET releases leading to a loss of its followership?
Certainly not! ".NET is an evolving revolution". I, being a die-hard fan of .NET (and of other Microsoft technologies), thought of serving the hot new framework, offering and discussing its ingredients in an oversimplified manner to catalyze its acceptability and reduce the acrophobia related to the higher version. So please pickup the unseasoned cuisine dishes one by one and start munching, the .NET framework 3.0 buffet is already served..
Starters
“New technologies and dishes have one characteristic in common: you cannot form an authentic opinion until you actually try them”.
.NET Framework 3.0, the latest hyped version of .NET, is well equipped to take the Windows programming model many leaps ahead. It’s built upon (and also extends) the strong .NET framework 2.0, and is all set to bring in a paradigm shift in the way we write our applications today. Its goal, like many other MS products, is: "to allow creating the best possible in the least amount of time, but of course with added simplicity". The new framework is available for the Vista, Server 2003, and XP flavors of Windows and new applications can be impetuously broiled in the Visual Studio 2005 oven.
Sizzlers
Quite surprisingly, the new framework was earlier named as WinFx! It probably got renamed because its maiden name did not clearly manifest the intent of what the new release meant to be (i.e., the next version of Microsoft’s development framework). The re-branding, however, did not affect the overall vision of the product or the ingredient technologies. The new framework thus comprises of familiar .NET Framework 2.0 components (ASP.NET, WinForms, ADO.NET, etc.), BCL and CLR, as well as four new ground breaking technologies: Windows Workflow Foundation (WF), Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and Windows CardSpace (WCS). These new complementary technologies were added to address some of the most arduous challenges of contemporary software development.
The Main Course
We are now getting closer to the meat of the matter. So stimulate your gustatory buds with slices of the following ingredient dishes of the new framework release:
Dish 1 - .NET Framework 2.0
Well, it’s the same old dish with some new toppings (quite literally). As mentioned earlier, the new .NET framework builds on the previous release. In fact, nothing in version 2.0 of the .NET Framework has been deprecated at all! So all the existing applications created (and of course, the valuable expertise gained) will remain worthwhile, at least for a while : )
While the .NET Framework 2.0 class library is partially superseded by the new components (WF, WCF, and WPF) added in version 3.0, many portions of the original class library are still crucial to developers. The technologies of version 2.0 (ASP.NET, WinForms, ADO.NET, XML etc.) largely remain the elementary part of the new release; however, .NET framework 3.0 developers may now prefer using WPF over Windows Forms for writing a native Windows GUI.
Figure 1: .NET Framework 3.0 components
Dish 2 - Windows Workflow Foundation (WF)
In the traditional software development approach (excluding the likes of BizTalk), the business process was deeply engraved into the program's logic, thus making that process rather difficult to configure or change. A process-oriented design, driven by a workflow, can be the right approach for a significant pie of such Windows software.
A workflow is nothing but a sequence of activities performed in a specific order. WF provides such a common workflow technology for Windows, by virtue of which each step in a process can be explicitly defined (rather than intertwining its logic in code) and then executed by a workflow engine. Each activity can be represented by a class, and can per se contain any work that the workflow's creator wants. Activities can thus also be reused across different workflows, making it easier to create automated solutions to new problems.
WF broadly comprises of the following assorted components:
- Activity: A unit of work ranging from very simple to quite complex.
- Workflow: A group of activities that partially or completely implements a business process.
- WF Designers: The graphical tools to create and modify workflows and activities.
- WF Base Activity Library: A fundamental group of activities (IfElse, While, Listen etc. design constructs) used to create workflows. These are quite similar to the BizTalk Orchestration shapes.
- WF Runtime Engine: A library that executes workflows. It also provides other services, such as communicating with software outside the workflow.
- Host process: A Windows application that hosts the Windows Workflow Foundation runtime engine, workflows, and runtime services for persisting a workflow's state, handling transactions, etc.
WF provides the Workflow Designer, a Visual Studio-hosted graphical tool for creating workflows. The activities in a workflow can be drawn using the Base Activity Library (BAL) provided with WF.
Figure 2: Workflow Designer hosted in Visual Studio 2005
By providing such a simplified workflow technology for Windows, the .NET Framework 3.0 has mustered up a useful paradigm for building software. So as the process-oriented view of software will eventually gain popularity, the use of workflow will keep growing as well.
Dish 3 - Windows Communication Foundation (WCF)
However applications are built (using workflow or otherwise), most of them need to communicate with each other. This inter-application communication has taken a big leap forward in the last few years. After a perpetual era of disagreement, all of the major vendors agreed to support SOAP based Web services which makes interoperability between applications built on different technology platforms, such as J2EE and the .NET Framework, significantly simpler. So, this also makes the idea of service-oriented architecture much more plausible for most organizations.
A lot of communication approaches exist in the .NET Framework 2.0 such as ASP.NET Web Services, .NET Remoting, System.Messaging supporting queued messaging through MSMQ, Web Services Enhancements (WSE) - an extension to ASP.NET Web Services that supports WS-Security etc. However, instead of requiring developers to use a different technology with a different application programming interface for each kind of communication, WCF provides a common approach and API. "WCF is actually an old wine in new bottle", and was previously called as Indigo. In the .NET Framework 3.0 environment, most applications that might have used one of the communication technologies listed above will instead use WCF.
WCF provides strong support for interoperable communication through SOAP. This includes support for several specifications, including WS-Security, WS-ReliableMessaging, and WS-AtomicTransaction. WCF doesn't itself require SOAP, so other approaches can also be used, including optimized binary protocol and queued messaging using MSMQ. WCF also takes an explicit service-oriented approach to communication, and loosens some of the tight couplings that can exist in distributed object systems, making interaction less error-prone and easier to change. Thus, WCF addresses a range of communication problems for applications. Three of its most important aspects that clearly stand out are:
- Unification of Microsoft’s communication technologies.
- Support for cross-vendor interoperability, including reliability, security, and transactions.
- Rich support for service orientation development.
To sum up, communication between applications, whether within an organization or across, is a fundamental part of any modern software. The .NET Framework 3.0 attempts to address enduring communication challenges by using the service-oriented approach of WCF.
Dish 4 - Windows CardSpace (WCS)
Digital identities are the way how people electronically represent themselves today on the Internet. In the majority of cases, a person's digital identity is expressed as a simple username, and when its combined with a password, it is used to access web sites, email servers, e-merchants, online banks etc. Yet, despite their simplicity and popularity, usernames and passwords haunt people. Many of us have a hard time remembering all of the usernames and passwords of different sites. Thus, some people use the same values for different sites, easing the memory problem but increasing the security risk.
Usernames, passwords, and other personal information can be stolen by phishers. By sending delusory emails, phishers entice their victims to log in to their Web site that looks just like, say, the site of the victim's bank. So once the victim enters his username and password, the phisher can use this information to masquerade as the user on the real site.
Reducing occurrences and severity of these problems requires an entirely new approach to managing digital identities. WCS (originally called InfoCard) provides this. It helps people keep track of their digital identities as distinct information cards. If a Web site accepts WCS logins, users attempting to log in to that site will see a WCS selection. By choosing a card, users also choose a digital identity that will be used to access this site. Rather than remembering a plethora of usernames and passwords, users need only recognize the card they wish to use.
The identities represented by these cards are created by one or more identity providers. These identities will typically use stronger cryptographic mechanisms to allow users to prove their identity. WCS itself also includes a self-issued identity provider that runs on client machines. With this provider, users can create their own identities that don't rely on passwords for authentication.
So if passwords aren't used to log in to a site, phishers can inflict no harm either. Well, not really! Phishers, if somehow, can trick a user to log into a bogus site, might be still able to acquire personal information of the user, such as sensitive medical information etc. Preventing this requires that users be able to distinguish real sites from the look-alike fakes created by phishers. To allow this, the organization that owns a Web site can get a high-assurance certificate. Unlike today's simple SSL certificates, acquiring this new kind of certificate involves a much more rigorous process, including stronger proof that the organization applying for it actually is who it claims to be. A high-assurance certificate can also carry a company's logo and other information to help the user correctly determine whether a site using this certificate is legitimate. When a user accesses a new site, WCS always displays the information in that site's certificate using a standard screen. Based on the strength of the certificate received, this screen will indicate different levels of assurance of the site's identity.
Dish 5 - Windows Presentation Foundation (WPF)
User interfaces are an important part of most Windows applications. No matter how much software evolves, traditional menu-driven GUIs are here to stay for some more time. Similarly, the need to display video, run animations, use 2/3D graphics, and work with different document formats also cannot be superseded. And all of this must be possible whether the application is a stand-alone desktop client or is accessed through a Web browser.
So far, all of these aspects of the user interface have been provided in different ways on Windows. For example, a developer needs to use Windows Forms to build a Windows GUI, or HTML/ASPX/Applets/JavaScript etc. to build a web interface, Windows Media Player or software such as Adobe's Flash Player for displaying video etc. The challenge for developers is certainly clear: building a coherent user interface for different kinds of clients using diverse technologies isn't a simple job.
A primary goal of WPF (originally called Avalon) is to address this challenge! By offering a consistent platform for these entire user interface aspects, WPF makes life simpler for developers. By taking a more modern approach, including support for video, animation, 2/3D graphics, and various kinds of documents, WPF can let users work with information in new ways. And by providing a common foundation for desktop clients and browser clients, WPF makes it easier to build applications that address both.
Another challenge that has long faced the creators of user interfaces stems from the different roles required for building effective interfaces. Software developers are needed to create the logic behind the interface, and Designers are required to define the interface's look and feel. Yet older technologies such as Windows Forms are focused entirely on the developer. There's no truly effective way for developers and designers to collaborate. To address this issue, WPF relies on the eXtensible Application Markup Language (XAML). An XML-based language, XAML allows specifying a user interface declaratively rather than in code. This makes it much easier for user interface design tools like MS Expression Blend (originally branded as MS Expression Interactive Designer and code named as Sparkle) to generate and work with an interface specification based on the visual representation created by a designer. Designers will be able to use such tools to create the look of an interface and then have a XAML definition of that interface generated for them. The developer imports this definition into Visual Studio, then creates the logic the interface requires.
Developers can also build a XAML browser application (XBAP) to create a remote client that runs inside a Web browser. Built on the same foundation as a stand-alone WPF application, an XBAP allows presenting the same style of user interface within a downloadable browser application. The best part is that the same code can potentially be used for both kinds of applications, which means that developers no longer need different skill sets for desktop and browser clients. The downloaded XBAP from the Internet runs in a secure sandbox (like Java applets), and thus it limits what the downloaded application can do.
Burp, GUI is a complex but an important part of the modern applications. Through WPF, the .NET Framework 3.0 presents a more complete and consistent solution to the challenges these interfaces present. The goal is to let people who create user interfaces (both developers and designers) effectively collaborate and do their jobs more expeditiously. So beware, because when your boss hears all this, she/he will certainly start expecting more from you.. : ( But I guess, that is the flip side of adopting any new technology.
Cocktails
“As an ideal meal cannot conclude without cocktails, so cannot a technology review without addressing criticism”.
Of late, I have came across some criticism of .NET 3.0 release and its branding on grounds that the new release doesn't accommodate .Net 2.0 bugs or language enhancements (like LINQ). It is also said that it does not add up anything substantial (other than WinFx lib) and that there shall be no performance gains too. Some even envisage the .Net 3.0 release as an improvised marketing ploy to hype up the forthcoming Vista release.
On the contrary, the re-branding from WinFx to .NET Framework and regrouping of the various technologies, "now", under a unified .NET Framework 3.0 banner, is a far better measure than it can be any later. This will not only avert another round of marketing confusion in future but also prevent the ever expanding branding namespace from getting further convoluted. After all, haven't we long forgotten the Longhorn for Vista (even though there was so much of brick-batting initially over it)? Plausibly, forgetting demands lesser efforts or time than remembering does.
The fact that .Net framework 3.0 is not introducing anything sour at this stage that will require redesigning or recoding the existing applications, is ostensibly welcome. It, otherwise, could have stirred the development community and their trust. Now that our lives are simplified (or at least are less complicated); bug fixes and fancy enhancements can shortly arrive (as patches/SPs). Similarly, major performance gains can be targeted with every new CPU/architecture release.
The aforesaid concerns and the resultant inertia, to a certain extent, were predictable at the time of announcement of the .Net release 3.0!! So, the ensuing confusion is obvious and is owing to the fact that from the very first release, till thus far; the .Net Framework has primarily grown vertically upwards and its now (with the new 3.0 release) attempting to expand horizontally outwards. This, however, indicates the overall maturity of the platform and is by far a healthy sign. So, instead of remaining dubious anymore, lets wisely step forward to accept the new version as an "additive" release (or more simply put the "production" release of WPF, WCF, WF, and WCS technologies), which is veritably colossal enough to be understated.
Desserts
"Come what may, .NET framework 3.0 is here to stay, and rule". So promotion or justification of its cause by petty missionaries (like me), is grossly inconsequential. The new framework is here to profoundly instill a substantial impact on how applications are build today in the world of Windows software. For anyone in the software industry who wants to change the way things currently are, the best time to start understanding how to derive benefits from the new .NET framework is now. Visit Microsoft for further learning, NetFx3 for latest news/announcements, and WF and WCS for exhaustive studies.