architecture

Views:
 
Category: Entertainment
     
 

Presentation Description

architecture of .net

Comments

Presentation Transcript

Lecture 1: The .NET Architecture:

Lecture 1: The .NET Architecture

Objectives:

Objectives “Microsoft .NET is based on the .NET Framework, which consists of two major components: the Common Language Runtime (CLR) and an extensive set of Framework Class Libraries (FCL). The CLR defines a common programming model and a standard type system for cross-platform, multi-language development.” CLR-based execution Application designs

Part 1:

Part 1 CLR-based execution…

Influences:

Influences .NET is the result of many influences… .NET OOP JVM GUI Web component-based design n-tier design

.NET is multi-language:

.NET is multi-language .NET supports VB, C# (C-sharp), C++, J# (Java 1.2), Eiffel, etc. code.vb code.cs code.cpp ... Development Tools app.exe FCL

.NET is cross-platform:

.NET is cross-platform Compiled .NET apps run on any supported platform: APP.exe ? Win64 Win32 ( XP,2K,98) WinCE

How is cross-platform achieved?:

How is cross-platform achieved? Cross-platform execution realized in two ways: apps are written against Framework Class Library (FCL), not underlying OS compilers generate generic assembly language which must be executed by the Common Language Runtime (CLR)

(1) FCL:

(1) FCL Framework Class Library 1000's of predefined classes common subset across all platforms & languages networking, database access, XML processing, GUI, Web, etc. Goal? FCL is a portable operating system

(2) CLR-based execution:

(2) CLR-based execution Common Language Runtime must be present to execute code: APP.exe other FCL components CLR JIT Compiler obj code OS Process Underlying OS and HW Core FCL

Implications of .NET's execution model:

Implications of .NET's execution model Clients need CLR & FCL to run .NET apps available via Redistributable .NET Framework 20MB download runs on 98 and above, NT (sp6a) and above Design trade-off… managed execution (memory protection, verifiable code, etc.) portability: slower execution?

Part 2:

Part 2 Application design…

Monolithic:

Monolithic Monolithic app: all source code compiled into one .EXE *not* the norm on Windows… APP.exe

Component-based:

Component-based Component-based app: .EXE + 1 or more .DLLs standard practice on Windows… compute.dll data.dll GUI.exe

Why component-based?:

Why component-based? Many motivations: team programming multi-language development (I like VB, you like C#) code reuse (e.g. across different .EXEs) independent updating (update just component X) FCL ships as a set of components!

Assemblies:

Assemblies .NET packages components into assemblies 1 assembly = 1 or more compiled classes .EXE represents an assembly with classes + Main program .DLL represents an assembly with classes Development Tools assembly code.vb code.vb code.cs .EXE / .DLL

CLR-based execution revisted:

CLR-based execution revisted CLR must be able to locate all assemblies: .EXE other FCL assemblies CLR JIT Compiler obj code OS Process Underlying OS and HW Core FCL assembly .DLL .DLL .DLL obj code obj code obj code

Assembly resolution:

Assembly resolution How does CLR find assemblies? For now, simple answer is sufficient: our DLLs must reside in same directory as our EXE FCL assemblies reside in GAC CLR looks in GAC first, then EXE's directory…

GAC?:

GAC? GAC = Global Assembly Cache C:\Windows or C:\WinNT directory Observations: explorer yields a flat view of GAC command-shell yields actual representation GAC can hold different versions of the same assembly some assemblies have been pre-JIT ("native image") tamper proof via digital signatures…

Summary:

Summary .NET architecture is: multi-language cross-platform based on the CLR, FCL, and JIT technology Application designs are typically multi-tier Application designs yield component-based development .NET components are packaged as assemblies

Resources:

Resources Books: J. Richter, "Applied Microsoft .NET Framework Programming" (C#) J. Richter and F. Balena, "Applied Microsoft .NET Framework Programming in Microsoft Visual Basic .NET" (VB) T. Thai and H. Lam, ".NET Framework Essentials" Web sites: http://msdn.microsoft.com/net http://www.gotdotnet.com/ Linux port ( Mono ): http://www.go-mono.com/ MS source ( Rotor / SSCLI): http://msdn.microsoft.com/net/sscli