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, LINQ, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), Windows Workflow Foundation (WF), SQL Synch Services, parallel computing, Dynamic Language Runtime (DLR), asynchronous programming, and more. Version 4.6/5.0 adds features and enhancements to most classes in the framework. It also provides new capabilities.
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, Queue, Stack, SortedList, and others. It is recommended to use the generic type-safe collections from the System.Collections.Generic namespace instead. This not only gives you type safety but also better performance and memory usage. .
- 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, “Building WPF Applications.”
- System.Diagnostics—Contains classes for working with diagnostic information about your application. This includes an 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 Hypertext Transfer Protocol (HTTP), File Transfer Protocol (FTP), and Transmission Control Protocol/Internet Protocol (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.
- System.Threading—Provides support for writing multithreaded 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.Timers—Allows developers to raise an event on a specified interval.
- 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 17, “Building Modern Websites with ASP.NET 5.”
- 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 21.
- System.Workflow.Activities and System.Activities (WF)—Provides classes for writing workflow applications and the custom activities found inside a workflow application.
- System.Xml—Provides support for working with XML and XSL.