.NET Framework & C#. .NET Framework Problem background Solution Common Language Runtime (CLR) MS...
-
Upload
joel-montgomery -
Category
Documents
-
view
235 -
download
7
Transcript of .NET Framework & C#. .NET Framework Problem background Solution Common Language Runtime (CLR) MS...
.NET FrameworkProblem backgroundSolutionCommon Language Runtime (CLR)
MS Intermediate LanguageMSIL StructureMSIL and Java bytecode
Introduction to C# languageC# StructureC# Features
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)
Solution (Common Language Runtime) Managed Code in Common Language Runtime
Requests for existing feature New CLR-Only Feature
Common Language Runtime
Managed Code
Win 32 OS
Solution (Microsoft Intermediate Language)Different Languages are Compiled into MSIL
Source code :Any languages
MS IntermediateLanguage
Platform specificcode
Development tools
Just-In-Time
compiler
.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
Compare with traditional waysC# VB C++ J-script other
Compiler
Intermediate Language
JIT econoJIT PreJIT
Executables
.NET CLR
Compiler
C++
Executable
Existing OS
Machine hardware
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 StringIf (ShowSeconds = True) Then
Return Now.ToLongTimeString Else Return Now.ToShortTimeString End If End Function End ClassEnd Namespace
TimeComponent.vb
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)) ; }}
Timeclient.cs
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
Metadata
What classes and method it contains What external objects it requires What version of code it represents
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
Private or Public
Private
In client directory Public (shared)
In Global Assembly Cache (GAC)
\\winnt\assembly
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
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
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
Cross-language inheritance
Because of the standardized IL architecture
you can inherit form a class in another
language
For example:
System.Object
.NET memory management
.NET CLR provides all languages with automatic memory management.
Garbage collector automatically removesunreferenced objects
You can force a garbage collection manually
Interoperability with COM objects
.NET Supports interoperation with COM object as client or server via a runtime callable wrapper or a COM Callable Wrapper
Transaction in .NET
Transaction ensure the integrity of databases during complex operations
Native .NET objects can also participate in transactions with a simple attribute
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
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\