The .NET Framework
The .NET Framework continues to evolve. This latest version layers on top of the many earlier versions that brought us support for generics, AJAX web extensions, LINQ, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF), SQL Synch Services, and more. Version 4.0 added to this list to include support for parallel computing, improved security, better performance, the Dynamic Language Runtime (DLR), and improvements in web, WPF, and WCF applications. And finally, version 4.5 of the .NET Framework brought asynchronous programming capabilities to Visual Basic and C#, the concept of portable class libraries, and a multitude of core improvements to the compiler and runtime.
A Map to the .NET Framework
We cannot begin to cover all the features of the .NET Framework in this limited space. Therefore, we simply highlight some of the key areas that fuel the current version of the .NET Framework. Think of this section as a high-level map to help guide you when exploring the Framework. Many of these items are also covered in more depth throughout the book:
- System.AddIn (add-in framework)—Provides classes and methods for developers looking to build applications that can be extended based on a common add-in framework. For example, the AddInStore class allows for the discovery and management of add-ins. The framework also provides versioning, isolation, activation, and sandboxing. If you are building a new application and hope to allow for add-ins, you should dig deeper on this namespace.
- System.CodeDom —Includes the classes used to represent the structure of a code file. The classes in this namespace can be used to generate and compile code.
- System.Collections —Provides the collection classes inside the Framework, including ArrayList, HashTable, SortedList, and others. Use the System.Collections.Generic namespace to get generic type-safe equivalent collections.
- System.ComponentModel —Provides classes used to help with the runtime and design time execution of .NET controls including data-binding and progress monitoring.
- System.Configuration —Provides classes for reading, writing, and managing application configuration information.
- System.Data (ADO.NET)—Provides the classes required to work with data and databases. This includes the DataTable and DataSet. There is also the namespace System.Data.SqlClient for working with SQL databases. For more information on working with ADO.NET, see Chapter 21.
- System.Diagnostics —Contains classes for working with diagnostic information about your application. This includes and EventLog and Process class. There is also the EventSchemaTraceListener class to allow for cross-domain, cross-thread, cross-computer, end-to-end, lock-free logging, and tracing.
- System.Diagnostics.Contracts —Provides support for code contracts, including preconditions and other data that is not typically defined inside a method signature.
- System.Drawing —Provides classes (like Pen, Brush, and Graphics) related to drawing with GDI+.
- System.Dynamic —Provides support for dynamic objects that get their members are runtime. (See content earlier in this chapter for more details.)
- System.EnterpriseServices —Provides the services architecture for creating serviced components that run under COM+.
- System.Globalization —Used to define language and culture information for writing multilingual, multicultural applications.
- System.IO —Provides classes for reading and writing file and data streams. This includes classes such as File, Directory, and Stream. Note there is also the System.IO.Pipes namespace that provides support for writing code that communicates at the pipe level across processes and across computers.
- System.Linq (LINQ)—Defines standard LINQ query operators and types. The System.Data.Linq namespace holds the connection between databases and the LINQ subsystem. There are more LINQ-related namespaces, too. These include System.Data.Linq.Mapping for handling the O/R mapping between SQL and LINQ and System.Xml.Linq for working between XML and the LINQ subsystem.
- System.Media —Used for accessing and playing sounds and music.
- System.Messaging —Provides support for working with message queues.
- System.Net —Provides support for programming with network protocols, including the HTTP, FTP, and TCP/IP. It also includes peer-to-peer networking support found in the System.Net.PeerToPeer namespace.
- System.Security —Provides the classes used to implement security inside the .NET runtime.
- System.ServiceModel (WCF)—Encapsulates what is known as WCF. With it you can easily create service-based applications that work across multiple protocols, transports, and message types. WCF is covered more in Chapter 21, “Service-Oriented Applications.”
- System.Threading —Provides support for writing muultithreaded applications. This includes System.Threading.Tasks, which provides support for parallel computing on multiple threads and multiple cores. This namespace simplifies the task of writing for these environments.
- System.Web (ASP.NET)—Includes many classes and controls. For example, the framework directly supports AJAX programming with the ScriptManager and UpdatePanel controls. There are also controls for displaying data, such as ListView. For more on the ASP.NET framework, see Chapter 16, “Creating ASP.NET Applications.”
- System.Windows (WPF)—Provides the WPF presentation technology for Windows applications. This technology is spread throughout the namespace and includes support for creating Windows applications based on XAML, XBAP, vector graphics, and both 2D and 3D scenarios. For more information, see Chapter 19, “Creating Richer, Smarter User Interfaces.”
- System.Workflow.Activities and System.Activities (WF)—Provides classes for writing workflow applications and the custom activities found inside a workflow application. For more on WF, see Chapter 22, “Embedding Workflow in Your Applications.”
- System.Xml —Provides support for working with XML and XSL.