1 / 28

.NET Framework & C#

.NET Framework & C#. .NET Framework Problem background Solution Common Language Runtime (CLR) MS Intermediate Language MSIL Structure MSIL and Java bytecode Introduction to C# language C# Structure C# Features. Problems Background. Good code is hard to write

hoai
Download Presentation

.NET Framework & C#

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. .NET Framework&C#

  2. .NET Framework • Problem background • Solution • Common Language Runtime (CLR) • MS Intermediate Language • MSIL Structure • MSIL and Java bytecode • Introduction to C# language • C# Structure • C# Features

  3. Problems Background • Good code is hard to write • All system features in any language • COM problems • Platform Interoperability • Automatic memory management • Object-Oriented features in and between all PLs • Safety & Security • Better Access to OS functions • Interoperate with COM (both as client & server)

  4. Solution (Common Language Runtime) Managed Code in Common Language Runtime Managed Code Common Language Runtime Requests for existing feature New CLR-Only Feature Win 32 OS

  5. Solution (Microsoft Intermediate Language)Different Languages are Compiled into MSIL Just-In-Time compiler Development tools Source code : Any languages MS Intermediate Language Platform specific code

  6. .Net platform features • Automatic memory management • Explicit Versioning • OO features in any languages • Accessing system functionality throw a hierarchical namespace • Code security • Interoperability with COM

  7. Costs: • OS got harder to write • More memory and CPU time

  8. CLR structure

  9. Compare with traditional ways C# VB C++ J-script other Compiler Intermediate Language C++ Compiler JIT econoJIT PreJIT Executable Executables .NET CLR Existing OS Machine hardware

  10. A simple example

  11. TimeComponent.vb Imports Microsoft.VisualBasic ' Declare the namespace that clients will use to access ' the classes in this component Namespace TimeComponentNS Public Class TimeComponent Public Function GetTime(ByVal ShowSeconds As Boolean) As String If (ShowSeconds = True) Then Return Now.ToLongTimeString Else Return Now.ToShortTimeString End If End Function End Class End Namespace

  12. // Import the namespaces that this program uses, thereby allowing // us to use the short names of the functions inside them. using System ; using TimeComponentNS ; class MainApp { // The static method "Main" is an application's entry point public static void Main() { // Declare and create a new component of the class // provided by the VB server we wrote TimeComponent tc = new TimeComponent ( ) ; // Call the server's GetTime method. Write its // resulting string to a console window. Console.Write (tc.GetTime (true)) ; } } Timeclient.cs using System ; using TimeComponentNS ; class MainApp { public static void Main() { // Declare and create a new component of the class // provided by the VB server we wrote TimeComponent tc = new TimeComponent ( ) ; // Call the server's GetTime method. Write its // resulting string to a console window. Console.Write (tc.GetTime (true)) ; } }

  13. Assembly A logical collection of one or more exe and dll file containing an application’s code and resources It contains 1-Codes in MSIL 2-Manifest A metadata description of the code and resources

  14. Metadata • What classes and method it contains • What external objects it requires • What version of code it represents

  15. Manifest example (TimeComponent.dll) .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 1:0:2411:0 } .assembly extern Microsoft.VisualBasic { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 7:0:0:0 } .assembly TimeComponent { .hash algorithm 0x00008004 .ver 0:0:0:0 } .module TimeComponent.dll // MVID: {144ACC38-E825-45C4-83A6-C2A9E5A901DD} .imagebase 0x00400000 .subsystem 0x00000002 .file alignment 512 .corflags 0x00000001 // Image base: 0x032a0000

  16. Private or Public • Private In client directory • Public (shared) In Global Assembly Cache (GAC) \\winnt\assembly

  17. Namespaces • A logical division within which a name need to be unique • The best way to handle a large list of system objects and functions • System namespace (implemented in several separated DLLs • We can import a namespace • Your code can have its own namespace

  18. Versioning DLL Hell Replacing a DLL used by an existing client, with a newer version (or vice versa) • .NET provides a standard way to specify version • Each client assembly uses its own specified versions of related assemblies

  19. Object oriented programming • Whether to smarten up non-object oriented languages or dump down OO languages • .NET provides all languages with inheritance and constructors features • Virtual Object Model

  20. All .NET classes inherit from the base class System.Object • Equals • GetHashCode • GetType • ToString

  21. Cross-language inheritance Because of the standardized IL architecture you can inherit form a class in another language For example: System.Object

  22. .NET memory management • .NET CLR provides all languages with automatic memory management. • Garbage collector automatically removes unreferenced objects • You can force a garbage collection manually

  23. Interoperability with COM objects • .NET Supports interoperation with COM object as client or server via a runtime callable wrapper or a COM Callable Wrapper

  24. Using COM objects from .NET objects

  25. Using .NET objects from COM objects

  26. Transaction in .NET • Transaction ensure the integrity of databases during complex operations • Native .NET objects can also participate in transactions with a simple attribute

  27. Structured exception handling • .NET provides structured exception handling as a fundamental feature available in and between all languages • The exception handler can tell exactly where the exception originated by using a stack trace

  28. Code access security • Most software comes from web • A user doesn’t know whether a Web code is safe or not • .NET allows an administrator to specify privileges that each managed code has. • You can specify these privileges in three level by modifying XML-based files • Enterprise • Machine • User \\winnt\microsoft.net\framework\[c.v.]\config\

More Related