Expert guidance from well-known programming author Jeff Richter about the CLR and the .NET Framework 2.0. Your hands-on guide to developing applications with the common language runtime (CLR) and Microsoft .NET Framework 2.0, with examples in Microsoft Visual C# 2005.
Over the years, Microsoft has introduced various technologies to help developers architect
and implement code. Many of these technologies offer abstractions that allow developers to
think about solving their problems more and think about the machine and operating system
less. Here are some examples:
• The Microsoft Foundation Class library (MFC) offered a C++ abstraction over GUI
programming. Using MFC, developers could focus more on what their program should
do and they can focus less on message loops, window procedures, window classes, and
• With Microsoft Visual Basic 6 and earlier, developers also had an abstraction that made
it easier to build GUI applications. This abstraction technology served a purpose similar
to MFC but was geared towards developers programming in Basic, and it gave different
emphasis to the various parts of GUI programming.
• Microsoft's ASP technology offered an abstraction allowing developers to build active and dynamic Web sites by using Visual Basic Script or JScript. ASP allowed developers to focus more on the Web page content and less on the network communications.
• Microsoft's Active Template Library (ATL) offered an abstraction allowing developers to more easily create components that could be used by developers working in multiple programming languages.
You'll notice that each of these abstraction technologies was designed to make it easier for developers focusing on a particular scenario such as GUI applications, Web applications, or components. If a developer wanted to build a Web site that used a component, the developer would have to learn multiple abstraction technologies: ASP and ATL. Furthermore, the developer would have to be proficient in multiple programming languages since ASP required either Visual Basic Script or JScript, and ATL required C++. So while these abstraction technologies were created to help us, they were still requiring developers to learn a lot. And frequently, the various abstraction technologies weren't originally designed to work together, so developers fought integration issues.
Microsoft's goal for the .NET Framework is to fix all of this. You'll notice that each of the aforementioned abstraction technologies was designed to make a particular application scenario easier. With the .NET Framework, Microsoft's goal is not to provide an abstraction technology for developers building a particular kind of application, Microsoft's goal is to provide an abstraction technology for the platform or Microsoft Windows operating system itself. In other words, the .NET Framework raises the abstraction level for any and all kinds of applications. This means that there is a single programming model and set of APIs that developers will use regardless of whether they are building a console application, graphical application, Web site, or even components for use by any of these application types.