Category: Entertainment

Presentation Description

architecture of .net


Presentation Transcript

Lecture 1: The .NET Architecture:

Lecture 1: The .NET Architecture


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 .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 app: all source code compiled into one .EXE *not* the norm on Windows… APP.exe


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 .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 = 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 .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 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: Linux port ( Mono ): MS source ( Rotor / SSCLI):