1 / 53

.NET Framework Library

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.

bond
Download Presentation

.NET Framework Library

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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

  4. Section 1: Introduction • Looking Back • The Microsoft .NET Framework Library

  5. 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

  6. 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

  7. Section 2: The System Namespace • System.Object • The not-so-primitive "primitive" types • String and text classes • Dates, times and calendars • System console support

  8. 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

  9. 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

  10. 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)

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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()

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. Section 3: Collection Classes • Arrays • Collection Interfaces • The Collection Classes

  25. 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

  26. 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()

  27. 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

  28. 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

  29. 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

  30. 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

  31. Section 4: I/O and Networking • Directories and Files • Streams, Stream Readers and Stream Writers • Isolated Storage • Networking Support

  32. 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()

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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()

  40. 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

  41. 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

  42. Section 5: Process Management • Process control • Threading support

  43. 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()

  44. 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

  45. Creating Threads // instantiate class that will execute on threadPulsar pulsar = new Pulsar();// create delegate for entry point on instance ThreadStart threadStart = newThreadStart(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();

  46. 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 action internalState = SomeAction( );// release lock Monitor.Exit(this); // C# intrinsic equivalentlock (this) { internalState = SomeAction( );}

  47. 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 )

  48. Section 6: Advanced Services • Windows 2000 Services • Diagnostics and Profiling

  49. 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

  50. 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()

More Related