.NET Framework Class Library (FCL)
The Framework Class Library or FCL provides the system functionality in the .NET Framework as it has various classes, data types, interfaces, etc. to perform multiple functions and build different types of applications such as desktop applications, web applications, mobile applications, etc. The Framework Class Library is integrated with the Common Language Runtime (CLR) of the .NET framework and is used by all the .NET languages such as C#, F#, Visual Basic .NET, etc.
Categories in the Framework Class Library
The functionality of the Framework Class Library can be broadly divided into three categories i.e utility features written in .NET, wrappers around the OS functionality and frameworks. These categories are not rigidly defined and there are many classes that may fit into more than one category.
Details about the Categories in the Framework Class Library are given as follows:
- Utility Features: The utility features in the FCL includes various collection classes such as list, stack, queue, dictionary, etc. and also classes for more varied manipulations such as Regex class for regular expressions.
- Wrappers Around OS functionality: Some of the features in the FCL are wrappers around the underlying Windows OS functionality. These include the classes for using the file system, the classes to handle the network features, the classes to handle I/O for console applications, etc.
- Frameworks: There are various frameworks available in the FCL to develop certain applications. For example, ASP.NET is used to develop web applications, Windows Presentation Foundation (WPF) is used to render user interfaces in Windows applications, and so on.
Namespaces in the Framework Class Library
Namespaces in the Framework Class Library are a group of related classes and interfaces that can be used by all the .NET framework languages. Some of the namespaces in the FCL along with their description is given as follows:
Namespace Description Accessibility The Accessibility namespace is a part of the managed wrapper for the COM accessibility interface. Microsoft.Activities The Microsoft.Activities namespace provides support for Windows Workflow Foundation applications. Microsoft.CSharp The Microsoft.CSharp namespace has support for compilation and code generation for the C# source code. Microsoft.JScript The Microsoft.JScript namespace has support for compilation and code generation for the JScript source code. Microsoft.VisualBasic The Microsoft.VisualBasic namespace has support for compilation and code generation for the VisualBasic source code. System The System namespace has base classes for definition of interfaces, data types, events, event handlers, attributes, processing exceptions etc. System.Activities The System.Activities namespace handles the creation and working with activities in the Window Workflow Foundation using various classes. System.Collections The System.Collections namespace has multiple standard, specialized, and generic collection objects that are defined using various types. System.Configuration The System.Configuration namespace handles configuration data using various types. This may include data in machine or application configuration files. System.Data The System.Data namespace accesses and manages data from various sources using different classes. System.Drawing The System.Drawing namespace handles GDI+ basic graphics functionality. Various child namespaces also handle vector graphics functionality, advanced imaging functionality, etc. System.Globalization The System.Globalization namespace handles language, country, calendars used, format patterns for dates, etc. using various classes. System.IO The System.IO namespaces support IO like data read/write into streams, data compression, communicate using named pipes etc. using various types. System.Linq The System.Linq namespace supports Language-Integrated Query (LINQ) using various types. System.Media The System.Media namespace handles sound files and accessing the sounds provided by the system using various classes. System.Net The System.Net namespace provides an interface for network protocols, cache policies for web resources, composing and sending e-mail etc. using various classes. System.Reflection The System.Reflection namespace gives a managed view of loaded methods, types, fields, etc. It can also create and invoke types dynamically. System.Security The System.Security namespace has the .NET security system and permissions. Child namespaces provide authentication, cryptographic services etc. System.Threading The System.Threading namespace allows multithreaded programming using various types. XamlGeneratedNamespace The XamlGeneratedNamespace has compiler-generated types that are not used directly from the code.