Base Class Library

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The Base Class Library (BCL) is a Common Language Infrastructure (CLI) standard library available to all CLI languages. CLI includes the BCL in order to encapsulate a large number of common functions, such as file reading and writing, graphic rendering, database interaction, and XML document manipulation, which makes the programmer's job easier. It is much larger in scope than standard libraries for most other languages, including C++, and is comparable in scope and coverage to the standard libraries of Java. The .NET Framework, being the first implementation of CLI, is the origin of the BCL. It is sometimes incorrectly referred to as the Framework Class Library (FCL), but the FCL is actually a superset including Microsoft specific namespaces.

The BCL is updated with each version of the .NET Framework.

Contents

Namespaces [edit]

Some of the namespaces may or may not be officially considered part of the BCL by Microsoft, but all are included as part of the libraries that are provided with Microsoft's .NET Framework implementation of the CLI.

Standardized namespaces [edit]

These are the namespaces that are standardized as of the ECMA 335 and ISO/IEC 23271:2006 standards.[1][2]

System
This namespace includes the core needs for programming. It includes base types like String, DateTime, Boolean, and so forth, support for environments such as the console, math functions, and base classes for attributes, exceptions, and arrays.
System.Collections
Defines many common containers or collections used in programming, such as lists, queues, stacks, hashtables, and dictionaries. It includes support for generics.[3]
System.Diagnostics
Provides the ability to diagnose applications. It includes event logging, performance counters, tracing, and interaction with system processes.[4]
System.Globalization
Provides help for writing internationalized applications. "Culture-related information, including the language, the country/region, the calendars in use, [and] the format patterns for dates, currency, and numbers" can be defined.[5]
System.IO
Enables reading from and writing to different streams, such as files or other data streams. Also provides a connection to the file system.[6]
System.Net
Provides an interface "for many of the protocols used on networks today",[7] such as HTTP, FTP, and SMTP. Secure communication is supported by protocols such as SSL.
System.Reflection
Provides an object view of types, methods, and fields; and "the ability to dynamically create and invoke types".[8] It exposes the API to access the Reflective programming capabilities of CLR.
System.Runtime
Allows management of the runtime behavior of an application or the CLR. Some of the included abilities are interoperable with COM or other native code, writing distributed applications, and serializing objects into binary or SOAP.[9]
System.Security
"Provides the underlying structure of the common language runtime security system."[10] This namespace allows security to be built into applications based on policy and permissions. It provides services such as cryptography.
System.Text
Supports various encodings, regular expressions, and a more efficient mechanism for manipulating strings (StringBuilder).[11]
System.Threading
Helps facilitate multithreaded programming. It allows the synchronizing of "thread activities and access to data" and provides "a pool of system-supplied threads."[12]
System.Xml
"Provides standards-based support for processing XML,"[13] including reading, writing, schemas, serialization, searching, and transforming.
System.Diagnostics.CodeAnalysis
The System.Diagnostics.CodeAnalysis namespace contains classes for interaction with code analysis tools. These tools are used to analyze code for conformance to coding conventions such as naming or security rules.[14]
System.Diagnostics.Contracts
Contains static classes for representing program contracts such as preconditions, postconditions, and invariants.[15]
System.Diagnostics.Eventing
Contains the classes used to instrument your application. The instrumentation, when enabled, logs the event data to the Event Tracing for Windows (ETW) tracing subsystem. For a complete description of ETW, see Event Tracing for Windows.[16]
System.Diagnostics.PerformanceData
Use the classes in this namespace to provide counter data. The counters are used to expose performance metrics to consumers such as the Performance Monitor. The namespace does not contain classes for consuming the counter data. For a complete description of the performance counters architecture, see Performance Counters.[17]
System.Diagnostics.SymbolStore
The System.Diagnostics.SymbolStore namespace provides classes that allow you to read and write debug symbol information, such as source line to Microsoft intermediate language (MSIL) maps. Compilers targeting the.NET Framework can store the debug symbol information into programmer's database (PDB) files. Debuggers and code profiler tools can read the debug symbol information at run time.[18]

Non-standardized namespaces [edit]

These are the namespaces that are not standardized as of the ECMA and/or ISO standards and are specific to Microsoft implementation. However, even if implementing them is not mandatory, some of them may have been implemented completely or partially by other .NET implementations.

System.CodeDom
This library provides the ability to create code and run it, at runtime.[19]
System.ComponentModel
Provides the ability to implement the run-time and design-time behavior of components and controls. It contains the infrastructure "for implementing attributes and type converters, binding to data sources, and licensing components."[20]
System.Configuration
Provides the infrastructure for handling configuration data.[21]
System.Data
This namespace represents the ADO.NET architecture, which is a set of computer software components that can be used by programmers to access data and data services.[22]
System.Deployment
Allows customization of the way applications upgrade when using ClickOnce.[23][24]
System.DirectoryServices
Provides easy access to Active Directory from managed code.[25]
System.Drawing
Provides access to GDI+ graphics functionality, including support for 2D and vector graphics, imaging, printing, and text services.[26]
System.EnterpriseServices
"Provides .NET objects with access to COM+ services making the .NET Framework objects more practical for enterprise applications."[27]
System.Linq
Defines the IQueryable<T> interface and related methods, that lets LINQ providers to be plugged in.[28]
System.Linq.Expressions
Allows Delegates and Lambda expressions to be represented as expression trees, so that the high-level code can be examined and processed at runtime.[29]
System.Management
Allows querying for system information, "such as how much free space is left on the disk, what is the current CPU utilization, which database a certain application is connected to, and much more."[30]
System.Media
Provides the ability to play system sounds and WAV files.[31]
System.Messaging
Provides the ability "to connect to, monitor, and administer message queues on the network and send, receive, or peek messages."[32] .NET Remoting is another name for some of the functionality provided. This namespace is being superseded by Windows Communication Foundation.
System.Resources
Allows management of resources in the application in order to internationalize an application for different cultures and languages.[33]
System.ServiceProcess
Allows the creation of applications that run as a service within Windows.[34]
System.Timers
"Allows you to raise an event on a specified interval."[35]
System.Transactions
Provides support for local or distributed transactions.[36]
System.Web
Provides various web related functionality. It enables browser-server communication and the creating XML Web services. Most or all of these libraries are referred to as the ASP.NET architecture.[37]
System.Windows.Forms
This namespace contains the Windows Forms architecture which provides access to the native Windows interface elements by wrapping the existing Windows API. This allows for writing graphical applications for Windows from within managed code.[38] This system is being superseded by the Windows Presentation Foundation.

See also [edit]

Other capabilities of the .NET framework [edit]

References [edit]

  1. ^ "ECMA C# and Common Language Infrastructure Standards". Microsoft. 2009. Archived from the original on 26 February 2009. Retrieved 21 February 2009. 
  2. ^ "Common Language Infrastructure (CLI)". Ecma International. June 2006. Archived from the original on 31 January 2009. Retrieved 21 February 2009. 
  3. ^ MSDN Documentation - System.Collections Namespace
  4. ^ MSDN Documentation - System.Diagnostics Namespace
  5. ^ MSDN Documentation - System.Globalization Namespace
  6. ^ MSDN Documentation - System.IO Namespace
  7. ^ MSDN Documentation - System.Net Namespace
  8. ^ MSDN Documentation - System.Reflection Namespace
  9. ^ MSDN Documentation - System.Runtime Namespace
  10. ^ MSDN Documentation - System.Security Namespace
  11. ^ MSDN Documentation - System.Text Namespace
  12. ^ MSDN Documentation - System.Threading Namespace
  13. ^ MSDN Documentation - System.Xml Namespace
  14. ^ MSDN Documentation - System.Diagnostics.CodeAnalysis Namespace
  15. ^ MSDN Documentation - System.Diagnostics.Contracts Namespace
  16. ^ MSDN Documentation - System.Diagnostics.Eventing Namespace
  17. ^ MSDN Documentation - System.Diagnostics.PerformanceData Namespace
  18. ^ MSDN Documentation - System.Diagnostics.SymbolStore Namespace
  19. ^ MSDN Documentation - System.CodeDom Namespace
  20. ^ MSDN Documentation - System.ComponentModel Namespace
  21. ^ MSDN Documentation - System.Configuration Namespace
  22. ^ MSDN Documentation - System.Data Namespace
  23. ^ MSDN Documentation - System.Deployment.Application Namespace
  24. ^ MSDN Documentation - System.Deployment.Internal Namespace
  25. ^ MSDN Documentation - System.DirectoryServices Namespace
  26. ^ MSDN Documentation - System.Drawing Namespace
  27. ^ MSDN Documentation - System.EnterpriseServices Namespace
  28. ^ MSDN Documentation - System.Linq Namespace
  29. ^ MSDN Documentation - System.Linq.Expressions Namespace
  30. ^ MSDN Documentation - System.Management Namespace
  31. ^ MSDN Documentation - System.Media Namespace
  32. ^ MSDN Documentation - System.Messaging Namespace
  33. ^ MSDN Documentation - System.Resources Namespace
  34. ^ MSDN Documentation - System.ServiceProcess Namespace
  35. ^ MSDN Documentation - System.Timers Namespace
  36. ^ MSDN Documentation - System.Transactions Namespace
  37. ^ MSDN Documentation - System.Web Namespace
  38. ^ MSDN Documentation - System.Windows.Forms Namespace

External links [edit]