.NET Framework Library

53
.NET Framework Library A language independent universe of classes and components for your applications

description

A language independent universe of classes and components for your applications. .NET Framework Library. Objectives. Provide an overview about various aspects of the .NET framework libraries not covered elsewhere in the Microsoft .NET Developer Tools Readiness Kit. Contents. - PowerPoint PPT Presentation

Transcript of .NET Framework Library

Page 1: .NET Framework Library

.NET Framework Library

A language independent universe of classes and components for your applications

Page 2: .NET Framework Library

Objectives

Provide an overview about various aspects of the .NET framework libraries not covered elsewhere in the Microsoft .NET Developer Tools Readiness Kit

Page 3: .NET Framework Library

Contents

Section 1: Introduction

Section 2: The System Namespace

Section 3: Collection Classes

Section 4: I/O and Networking

Section 5: Process Management

Section 6: Miscelleaneous Services

Summary

Page 4: .NET Framework Library

Section 1: Introduction

Looking Back

The Microsoft .NET Framework Library

Page 5: .NET Framework Library

Looking Back

Language Dependent Runtime Libraries C-Runtime library C++ Standard Template Library Visual Basic Runtime

API holes plugged with ActiveX controls

Discriminatory access to functionality Many APIs unsupported by Visual Basic Advanced tasks often require C/C++

Core functionality scattered all over Windows ActiveX controls, System DLLs, SDKs, IE

Page 6: .NET Framework Library

The .NET Framework Library

One-stop, well-organized class framework OS-independent subset submitted to ECMA

Standardization backed by Microsoft, HP, Intel

Subset includes most things covered here http://msdn.microsoft.com/net/ecma

Integrates all current Windows technologies Everything in one place – for all languages Windows Forms, GDI+, Printing for Windows Dev Web Forms, Web Services, Networking for Net Dev Supports Active Directory, WMI, MSMQ, Services

Page 7: .NET Framework Library

Section 2: The System Namespace

System.Object

The not-so-primitive "primitive" types

String and text classes

Dates, times and calendars

System console support

Page 8: .NET Framework Library

The Root of Everything .NET: Object

Base class for each and every type Inheritance from System.Object is typically implicit All simple and complex types share the same base

Single base-class makes framework consistent Collection classes can be used for everything Intrinsic model for handling variant types Strongly typed. No pointers, no structures

Much less error prone than COM's VARIANT type

System.Object is a reference type

Value types (internally) inherit from ValueType Special class derived from Object

Page 9: .NET Framework Library

System.Object's Methods 1/2

bool System.Object.Equals(Object o) Reference identity for reference types (default) Overridden for value types to test value identity

void System.Object.Finalize() To be overridden by subclasses Called when object is garbage collected

int System.Object.GetHashCode() i.e. used with System.Collections.HashTable Should be overriden to return good hashes

Good hash distribution speeds up hash tables

Default implementation: Identity-based hash

Page 10: .NET Framework Library

System.Object's Methods 2/2

System.Type System.Object.GetType() Retrieves the type object for the object's class GetType() is the entry point for .NET Reflection

System.Object System.Object.MemberwiseClone() Creates a exact clone of "this" object Works through Reflection with any class

System.String ToString() To be overriden; Returns text representation Default returns qualified name of "this" class Not designed for user messages (use IFormattable)

Page 11: .NET Framework Library

The "Primitive" Types Traditionally perceived as "magic" or "special"

There is no primitive-type magic-ness in .NET! Very SmallTalk-like model "Primitive" types are regular framework types

However, still exposed as language-intrinsic types C#: bool, int, long, string, double, float Visual Basic.NET: Boolean, Integer, String

"Primitives" are mostly value-types Exception: System.String is reference type

"Primitive" Types are not so primitive anymore Full featured classes, rich functionality

Page 12: .NET Framework Library

Integer Numerics

System.Int16, System.Int32, System.Int64 Standard integer (whole number) types 16,32 and 64 bit wide. Highest bit is sign Int32 is typically default language-mapped Integer Implemented framework interfaces

IFormattable: locale specific text formatting

IConvertible: standard conversion into other core types

IComparable: standard value-comparison with other objects

Parse() method provides rich from-text conversions

System.UInt16, System.UInt32, System.UInt64 Unsigned equivalents

Page 13: .NET Framework Library

Floating Point Numerics 1/3

System.Single, System.Double IEEE 754 floating point numbers

As used in most common programming languages

Values internally represented as fractions (narrowed values)

Good for scientific/technical use, not for business numerals

System.Single: single precision, 32-bit System.Double: double precision, 64-bit IFormattable, IComparable, IConvertible

Page 14: .NET Framework Library

Floating Point Numerics 2/3

System.Decimal 128 bit, 28 significant and precise digits Good for business numerals, monetary amounts IFormattable, IComparable, IConvertible

System.Double, System.Single specials Support positive and negative infinity

PositiveInfinity and NegativeInfinity constants on class

Can represent not-a-number (NaN) values NaN constant on class. NaN always compares false

Page 15: .NET Framework Library

Floating Point Numerics 3/3

System.Decimal specials Static value manipulation methods

Abs(d), Negate(d) – Positive/Negative sign

Truncate(d), Floor(d), Round(d,n) – Fractional part

Static arithmetic methods Add(d,d), Multiply(d,d), Subtract(d,d),Divide(d,d),Mod(d,d)

All equivalent operators are defined for the class

Page 16: .NET Framework Library

Doing Numerics: System.Math

System.Math class mainly supports IEEE types

Some operations for all numerics Abs(), Log(), Max(), Min(), Round(), Sign()

Operations Trigonometry: Sin(),Cos(), Tan(), Acos(), Asin() Powers and Logarithms: Pow(), Log(), Sqrt() Extremes: Min(), Max() Rouning: Floor(), Ceil(), Rint(), Round()

Page 17: .NET Framework Library

System.String System.String is the cross-language string

One storage method, one API, unified handling Locale-aware, always Unicode

Fully-featured string handling capabilities Forward and reverse substring searches

IndexOf(), LastIndexOf(), StartsWith(), EndsWith()

Whitespace stripping and padding Trim(), PadLeft(), PadRight()

Range manipulation and extraction Insert(), Remove(), Replace(), Substring(), Join(), Split()

Character casing and advanced formatting ToLower(), ToUpper() and

Format() much like C's printf but safe

Page 18: .NET Framework Library

More Strings: System.Text Namespace

StringBuilder Super-efficient for assembling large strings

Encoders and Decoders Support character encoding and conversions ASCII, UTF-8, UTF-7, Windows Codepages Unicode encoder for full UTF-16 compliant streams

Encoder can write and decoder detect byte-order marks

Supports big-endian and little-endian Unicode encoding

Page 19: .NET Framework Library

Other Core Types System.Byte, System.SByte – Single byte numeric

System.Char – Single Unicode character

System.Boolean – True or False logical value

System.Guid 128-bit, universally unique identifier Built-in generator: System.Guid.NewGuid() Intrinsic conversions from and to strings

The "Nothings" System.DBNull – database-equivalent NULL type System.Empty – like COM's VT_EMPTY System.Missing – used with optional args

Page 20: .NET Framework Library

Date and Time Support

System.DateTime class for dates and times Virtually unlimited date values (100 AD to 9999 AD) Date and Time arithmetics built-in

AddDays(), AddSeconds()

Sophisticated, locale-aware formatting and parsing

System.TimeSpan for durations Can represent arbitrary timespans Can express span in arbitary units by conversion

System.TimeZone for time-zone support

Page 21: .NET Framework Library

Date and Time to the Max

System.Globalization.Calendar namespace

Correct date expressions based on local calendars GregorianCalendar – standard western calendar JulianCalendar HebrewCalendar JapaneseCalendar KoreanCalendar ThaiBuddhistCalendar HijriCalendar

Two-way 2/4 digit-year windowed conversion

Page 22: .NET Framework Library

The Console

System.Console class for console I/O

Supports standard in, standard out, standard error

Writing to the console Write() or WriteLine() Supports String.Format syntax

Console.Write("Snowwhite and the {0} dwarfs", 7)

Reading from the console Read() reads on characters ReadLine() reads one full line

Page 23: .NET Framework Library

Other System Goodies

System.URI class Two-way parsing and construction of URIs

System.Random class Random number generator

System.Radix class Numeric base-system conversions (eg. Dec/Hex)

System.Convert class One-stop place for core type conversions

Page 24: .NET Framework Library

Section 3: Collection Classes

Arrays

Collection Interfaces

The Collection Classes

Page 25: .NET Framework Library

The Array Only collection outside Collections namespace

System.Array class Mapped to language-intrinsic arrays

Polymorphic, stores System.Object elements

Arbitrary number of dimensions, lengths Specified at creation time (CreateInstance) After construction, array dimensions are fixed

Supports sorting Self-comparing IComparable objects External comparisons with IComparer

Supports binary searches on sorted arrays

Page 26: .NET Framework Library

Collection Interfaces 1/2

IEnumerable Implements enumerable value set GetEnumerator() returns IEnumerator iterator

IEnumerator: Current, MoveNext(), Reset()

ICollection (inherits IEnumerable) Basic collection interface: Count(), CopyTo()

Page 27: .NET Framework Library

Collection Interfaces 2/2

IDictionary (inherits ICollection) Basic association container interface

Keys / Values table implementation

Add(), Remove(), Contains() and Clear() methods

IList (inherits ICollection) Basic list container interface

Add(), Remove(), Contains() and Clear() methods

Page 28: .NET Framework Library

Collection Classes 1/3

System.Collections.ArrayList / ObjectList Dynamic arrays implementing IList Can grow and shrink in size (unlike System.Array)

System.Collections.BitArray Super-compact array of bits

System.Collections.HashTable Fast hash-table implementing IDictionary There is no Dictionary class. Use HashTable

System.Collections.SortedList Auto-sorted, string-indexed collection

Page 29: .NET Framework Library

Collection Classes 2/3

System.Collections.Stack Stack implementation with Push() and Pop() Still, fully enumerable (IEnumerable)

System.Collections.Queue Queue with Dequeue() and Enqueue() Fully enumerable

Page 30: .NET Framework Library

Collection Classes 3/3

System.NameObjectCollectionBase Abstract class, indexed view on Hashtable Combines indexed order with Hashtable-speed Base for quite a few subsystem collections

System.NameValueCollection Comma separated string lists for same key entries

Page 31: .NET Framework Library

Section 4: I/O and Networking

Directories and Files

Streams, Stream Readers and Stream Writers

Isolated Storage

Networking Support

Page 32: .NET Framework Library

Directories and Files

Fully object-oriented way to explore the file system

System.IO.Directory represents a directory GetDirectories([mask]) gets subdirectories GetFiles([mask]) gets contained files

System.IO.File represents a file Can construct directly by providing a path Or returned from GetFiles() enumeration

Unifies file system entries and stream access!

All Open...() methods return System.IO.Stream Open(), OpenRead(), OpenWrite(), OpenText()

Page 33: .NET Framework Library

Streams

Abstract base-stream System.IO.Stream Read(), Write() for basic synchronous access Full asynchronous support

Call BeginRead() or BeginWrite() and pass callback

Callback is invoked as soon as data is received.

Asynchronous call completed with EndRead()/EndWrite()

System.IO.FileStream Can open and access files directly Actual type returned by File.Open()

System.IO.MemoryStream Constructs a stream in-memory

Page 34: .NET Framework Library

Stream Readers 1/2

Higher-Level access to Stream reading functions

System.IO.BinaryReader Designed for typed access to stream contents Read methods for most core data types ReadInt16(), ReadBoolean(), ReadDouble(), etc.

System.IO.TextReader Abstract base class for reading strings from streams

Page 35: .NET Framework Library

Stream Readers 2/2

System.IO.StreamReader (implements TextReader) ReadLine() reads to newline ReadToEnd() reads full stream into string

System.IO.StringReader (implements TextReader) Simulates stream input from string

Page 36: .NET Framework Library

Stream Writers High-level access to Stream writing functions

System.IO.BinaryWriter Designed for typed writes to streams >15 strongly typed overloads for Write() method

System.IO.TextWriter Abstract base class for writing strings to streams Includes placeholder-formatted strings

System.IO.StreamWriter (implements TextWriter) Writes strings to streams with encoding support

System.IO.StringWriter Simulates streams-writes on an output string

Page 37: .NET Framework Library

Isolated Storage

Scoped, isolated virtual file system Scoped to User, Assembly or Application Domain Great as temporary storage location Sandboxed environment

Storage location managed by runtime system

System.IO.IsolatedStorage.IsolatedStorageFile Container for virtual file system Static methods for access/creation of storages

[...] IsolatedStorageFileStream Stream implementation on isolated storage Behaves like any ordinary file

Page 38: .NET Framework Library

The Net in .NET: System.Net

System.Net contains all network protocol support

Low-level support for IP sockets and IPX

Application level protocol implementations (HTTP)

Authentication methods for HTTP Basic, Digest, NTLM Challenge/Reponse

Full cookie support for HTTP

Page 39: .NET Framework Library

Request and Response Classes

System.Net.WebRequest class Base class for network request/response protocols Abstract base for HttpWebRequest

Create requests through WebRequest.Create()

Plug in new protocol handlers with RegisterPrefix() System.Net natively supports HTTP and HTTPS

Request can be populated through stream WebRequest.GetRequestStream()

Request is executed on GetResponse() Data through WebResponse.GetReponseStream()

Page 40: .NET Framework Library

Protocol Support Classes

Manage connectivity through ServicePoint Connections managed by ServicePointManager Per-Endpoint configuration of connection params

System.Net.EndPoint information in ServicePoint Base class for endpoints System.Net.IPEndPoint

Represents an IP endpoint with IPAdress and port

System.Net.IpxEndPoint Represents an IPX endpoint

System.Net.DNS Access to DNS nameservers and name resolution

Page 41: .NET Framework Library

IP Sockets

System.Net.Sockets.Socket for raw sockets send with Send(), receive with Receive()

Socket.Connect() connects to EndPoint Supports TCP, UDP, IP Multicast, IPX and others

Socket.Bind() and Socket.Listen() create listener

High-Level wrappers for TCP, UDP TcpClient, UdpClient provide NetworkStream

Usable with System.IO's stream readers/writers

TcpListener implements TCP listener Can pickup connection requests as Socket or TcpClient

Page 42: .NET Framework Library

Section 5: Process Management

Process control

Threading support

Page 43: .NET Framework Library

Processes System.Diagnostics.Process class

Allows creating/monitoring other processes Monitoring: All Task-Manager stats accessible

Process.Start() equivalent to Win32 ShellExecute Arguments are set via ProcessStartInfo class Supports shell verbs (print,open)

Supports waiting for termination (WaitForExit) Can register event handlers for "Exited" event

Explicit termination supported in two ways Rambo method: Kill() Nice-guy method: CloseMainWindow()

Page 44: .NET Framework Library

System.Threading.Thread

Every .NET application is fully multi-threaded No more haggling with threading models

Except in COM/Interop scenarios, of course

Trade-Off: Must take care of synchronization

System.Thread represents a system thread Threads are launched with entry point delegate Object-oriented threading model

No arguments passed to entry point

Thread launch-state is set on object hosting the delegate

ThreadPool implicitly created for each process

Page 45: .NET Framework Library

Creating Threads

// instantiate class that will execute on threadPulsar pulsar = new Pulsar();

// create delegate for entry point on instance ThreadStart threadStart = new ThreadStart(pulsar.Run);

// create new thread object and start the threadThread thread = new Thread(threadStart);

thread.Start();

// do other things ...

// wait for thread to complete thread.Join();

Page 46: .NET Framework Library

Thread Synchronization Monitor System.Threading.Monitor class

Supports Wait/Pulse coordination model One thread enters Wait()

Other thread calls Pulse() to release Wait() lock

Similar to Win32 critical sections model Can synchronize on every managed object

// enter critical section or waitMonitor.Enter(this);// perform guarded actioninternalState = SomeAction( );// release lockMonitor.Exit(this);

// C# intrinsic equivalentlock (this) { internalState = SomeAction( );}

Page 47: .NET Framework Library

More Threading

Synchronization with WaitHandle Mutex: Single synchronization point

Mutex.WaitOne() waits for Mutex to be available

Mutex.ReleaseMutex() releases mutex lock

AutoResetEvent, ManualResetEvent *.WaitOne() waits for event to be signaled

Set() sets event, Reset() resets event state

Static WaitAny() / WaitAll() for multiple waits

Threading Timers for timed callbacks

Interlocked class for lightweight locking Interlocked.Increment( ref i )

Page 48: .NET Framework Library

Section 6: Advanced Services

Windows 2000 Services

Diagnostics and Profiling

Page 49: .NET Framework Library

Windows 2000 Services System.Management

Windows Management Instrumentation (WMI)

System.Messaging Microsoft Message Queue

System.DirectoryServices Active Directory Services

System.ServiceProcess Expose .NET applications as Windows Services

Page 50: .NET Framework Library

Windows 2000 Event Log System.Diagnostics.EventLog class

Reading event logs Static EventLog.GetEventLogs() gets all machine logs EventLog.Log indicates the type of event log

Application, System, Security, etc.

EventLog.Entries retrieves all entries for a log EventLog.EventLogEntryCollection

Contains EventLogEntry elements

Can register event handler to monitor log continuously

Writing event logs Create new source with CreateEventSource() Write to log with WriteEntry()

Page 51: .NET Framework Library

Other Diagnostic Services

System.Diagnostics.PerformanceCounter Access and create performance counters

System.Diagnostics.StackTrace Creates call stack traces programmatically

System.Diagnostics.Trace Allows code instrumentation with diagnostic output Register listeners to receive trace events Visual Studio.NET automatically registers listeners Trace code can be conditionally disabled

No code is not generated, although calls remain

Page 52: .NET Framework Library

Summary

Everthing is based on System.Object

Rich set of foundation classes

Comprehensive set of general-purpose, object-oriented classes for Networking and I/O

Great access to Windows 2000 services

Rich diagnostic and monitoring facilities

Page 53: .NET Framework Library

Questions?