net architecture albrecht wöß institute for system software johannes kepler university linz ©...

46
.NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz University of Linz, Institute for System Software, 2004 blished under the Microsoft Curriculum License

Post on 21-Dec-2015

227 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET Architecture

Albrecht WößInstitute for System Software Johannes Kepler University Linz

© University of Linz, Institute for System Software, 2004published under the Microsoft Curriculum License

Page 2: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET-Architecture

Terms, Features, General Considerations, ...

Virtual Execution System (VES)

Multi-Language Interoperability

.NET Security

Application Domains

Appendix:

directories and configuration files source code and IL disassembler view of example program

Page 3: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 4

CLI - Common Language Infrastructure

• CLI defines the basic platform for the .NET architecture• described by ECMA Standard 335

http://www.ecma-international.org/publications/standards/ecma-335.htm

• Microsoft's .NET Framework– contains Common Language Runtime (CLR)

= Microsoft's implementation of the CLI standard

– completely fulfills the standard

– and offers still more, e.g.

• ASP.NET

• ADO.NET

• Web Services

• extended class library

• ...

Page 4: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 5

CLI Features(buzzwords and acronyms )

• common intermediate language CILCIL

• common type system CTSCTS

• special deployment unit AssemblyAssembly

• extensible type information MetadataMetadata

• integration of many programming languages CLSCLS

• code-based security model CASCAS

• automatic memory management GCGC

• just-in-time compilation (NEVER interpretation!) JITJIT

• dynamic type loading VESVES

Page 5: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 6

Platforms & Implementations

• Microsoft Windows (95, 2000, XP, ...):– Microsoft .NET-Framework:

http://msdn.microsoft.com/netframework

• Microsoft Windows XP, FreeBSD, Mac OS X 10.2:– SSCLI (a.k.a. Rotor): Shared Source Common Language Infrastructure

http://msdn.microsoft.com/net/ssclihttp://www.sscli.net (Rotor Community Site)

• Linux:– Project Mono by Ximian (Gnome):

http://www.go-mono.org

– DotGNU:http://www.gnu.org/projects/dotgnu

Page 6: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 7

System web (ASP.NET)

Components of the SSCLI

Simple web services

VS.NET

JScript

C#

VB

Debugger

Designers

VC/MC++Description

Discovery

Protocols

WebControls

UI

ConfigurationSecurity HtmlControlsCaching

Session State

System.Data (ADO.NET)

System.Drawing

System.WinForms

AdaptersDesign

SQLADO

ComponentModel

Design

Imaging

Drawing2D Printing

Text

System.XMLSerialization

XPathXSLTSDK Tools

Platform Adaption Layer (PAL)FilesystemTimersSyncThreadsBoot Loader

PEVerify

MetaInfo

SN

ILDbDump

ILDAsm

ILAsm

CorDBGSystem

Common Language Infrastructure

IOConfiguration

CollectionsServiceProcess

Reflection

Net

RuntimeInteropServices

Remoting

SerializationDiagnostics

Globalization

Security Threading

Resources Text

Memory mgmtStacks & Threads

Metadata mgmtDomains & Loaders

CTSJIT compiler (CIL)

additional Rotor features additional CLR featuresECMA Standard

Sou

rce:

Stu

tz, N

ewar

d, S

hill

ing:

Sha

red

Sour

ce C

LI

Ess

enti

als,

O'R

eill

y, 2

003

Page 7: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 8

programs (Z#, C#, C++, ...)

Architecture of the CLR

What is a virtual machine (VM)?

• a CPU implemented in Software• Befehle werden interpretiert / JIT-übersetzt• other examples: Java-VM, Smalltalk-VM, Pascal P-Code e.g. Intel processor

CLR

The CLR is a stack machine• no registers• instead it has an expression stack (onto which values are loaded)

esp

estack

max. size is stored in metadata of each method

esp ... expression stack pointer

The CLR executes JIT-compiled bytecode

• each method is compiled right before the first execution (= just-in-time)• operands are addressed symbolically in IL (informationen is stored in the metadata)

Page 8: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 9

Advantages of a Virtual Machine

• portability (platform and language independence)

C# VB.NET Oberon Eiffel

Windows MacOS PalmOSLinux

CIL

C# VB.NET Oberon Eiffel

Windows MacOS PalmOSLinux

... compiler

• compactness of intermediate code• better optimizations for native code at JIT compile time

– w/ VM: translation into intermediate language (with .NET: CIL)one compiler per language and one CLR (JIT compiler) per platform

– w/o VM: compilers for each language on each platform

e.g. 4 4 = 1616

e.g. 4 + 4 = 88

Page 9: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 10

Comparing VMs: CLR vs. JVM

• What's in the CLR that is not in the JVM?– objects on the stack (records, unions), custom value types– reference parameters (CALL-BY-REFERENCE)

– varargs– function pointers– block matrices– overflow checking– tail calls– "native size" data types– boxing of value types– ...

CLR better suited for use with numerousdifferent programming languages

Page 10: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET-Architecture

Terms, Features, General Considerations, ...

Virtual Execution System (VES)

Multi-Language Interoperability

.NET Security

Application Domains

Appendix:

directories and configuration files source code and IL disassembler view of example program

Page 11: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 12

Virtual Execution System (VES)

• Type safety

• Memory management (memory layout of objects, GC, …)

• JIT compilation

• Exception handling

• Security

class loaderSecurityManager

AppDomain

assembly info:module- & typelist

Securitypolicy

assemblypermissions

verifier +JIT compiler

type info,method tables

original diagram by Jim Miller, MSTalk at SSCLI Launch, Cambridge, UK, March 2002

native code,GC & EH tables

new methodnew type

new assembly

Page 12: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 13

Assemblies and Modules

• Managed module =– physical unit: 1 .NET module = 1 .NET PE-file– contains type definitions with Metadata & CIL-code– is generated by a .NET compiler

• Assembly =– logical unit for:

deployment, encapsulation, versioning, security– component (in terms of component-oriented software development)

– combines modules and resource files (see ManifestManifest)– is generated by a .NET compiler or the assembly linker (al.exe)

• Manifest– holds information about all the parts of an assembly

e.g. which files it consists of, where to find these files, which types get exported outside the assembly, ...

Page 13: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 14

The Example: Hello, .NET-World! HelloWorld.cs: class HelloWorldApp { static void Main () { System.Console.WriteLine("Hello, .NET-World!"); } }

Compile and create assembly (w/ C# compiler): > csc HelloWorld.cs

View metadata and CIL code(w/ IL disassembler): > ildasm HelloWorld.exe

Assembly: HelloWorld.exe (3072 Byte!)

Page 14: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 15

CIL and Metadata

manifest of HelloWorld.exe: .assembly extern mscorlib { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) .ver 1:0:3300:0 } .assembly HelloWorld { .hash algorithm 0x00008004 .ver 0:0:0:0 } .module HelloWorld.exe

IL assembler code (= Metadata + CIL) of method Main: .method private hidebysig static void Main() cil managed { .entrypoint .maxstack 1 ldstr "Hello, .NET-World!" call void [mscorlib]System.Console::WriteLine(string) ret }

Page 15: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET-Architecture

Terms, Features, General Considerations, ...

Virtual Execution System (VES)

Multi-Language Interoperability

.NET Security

Application Domains

Appendix:

directories and configuration files source code and IL disassembler view of example program

Page 16: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 17

Multi-Language Interoperability

• Demo: Visualization of a bar chart– button click toggles between unsorted and sorted view

• Implementation with different programming languages– C# Windows Control (Chart)

– Visual Basic .NET Windows Form (connecting Chart Button)

– J# Application (set window size, Main method)

Page 17: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 18

Modules, Libraries, and Applications

• .NET compiler can produce each of the following:– modules (*.netmodule): not an assembly, not executable

– dynamic link libraries (*.dll): not executable assembly

– application (*.exe): executable assembly

BarChartControl.cs is compiled into a .NET module:csc /out:bar.mod /target:module /debug BarChartControl.cs

BarChartGUI.vb is compiled into a .NET library and uses bar.mod:vbc /out:gui.dll /target:library /addmodule:bar.mod /r:System.dll,System.Drawing.dll,System.Windows.Forms.dll /debug BarChartGui.vb

BarChartApp.jsl is compiled into a .NET Windows application and uses gui.dll:vjc /out:view.exe /target:winexe /reference:gui.dll /r:System.Windows.Forms.dll /debug BarChartApp.jsl

Page 18: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 19

CIL and Metadata - Exported Types

Manifest of gui.dll: .assembly gui { . . . } .module gui.dll .module extern bar.mod .file bar.mod .hash = ... .class extern public BarChartControl { .file bar.mod .class 0x02000002 }

IL-Assembler-Code of main method of view.exe:.method public hidebysig static void main (string[] args) cil managed { .entrypoint .locals init ( class BarChartApp app, int32 nVals, int32[] values, . . . ) . . . ldloc.0 ldfld class [gui]BarChartControl [gui]BarChartGui::Chart ldloc.2 callvirt instance void [gui]BarChartControl::set_Values(int32[]) . . .}

local variable 2

local variable 0

Page 19: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 20

GUI-Debugger (1)

• start GUI-Debugger– .NET-SDK*\GuiDebug\DbgCLR.exe

• select program to debug

*) see Appendix A: Important Directories

Page 20: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 21

GUI-Debugger (2)

start debugging• Step Into (F11)

set breakpoint• click into left border

run to breakpoint

Page 21: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 22

Cross-Language Debugging

Step Into

Page 22: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET-Architecture

Terms, Features, General Considerations, ...

Virtual Execution System (VES)

Multi-Language Interoperability

.NET Security

Application Domains

Appendix:

directories and configuration files source code and IL disassembler view of example program

Page 23: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 24

.NET Security

• role-based security– exists on most operation systems

– permissions are assigned to a user

– based on group affiliation

– namespace System.Security.Principal has supporting interfaces• System.Security.Principal.IPrincipal role, group

• System.Security.Principal.IIdentity user

• code-based security (Code Access Security (CAS))– permissions are assigned to assemblies

– based on assembly information (evidence) and security policy

Page 24: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 25

Code Access Security (CAS)

Assembly A

Evidence

URL

ZoneStrongName

Publis

her

Sit

e

AppDir

. . .

Policy LevelsEnterprise

Machine

User

AppDomain

PermissionSet (PS)

Isol

ate

dSto

rage

Registry

CodeAccess

FileIO

. . .SecurityManager

PSE

PSM

PSU

PSAD

Page 25: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 26

Code Groups & Permission Sets

Condition:

Zone: InternetName of PermissionSet:

Internet

s u b g r o u p s

CodeGroup

InternetFileDialogPermission: OpenIsolatedStoragePermission: DomainIsolationByUserSecurityPermission: ExecutionUIPermission: SaveTopLevelWindowsPrintingPermission: SavePrinting

NamedPermissionSet

Page 26: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 27

Levels of Security Policy

all codeNothing

Publisher: MicrosoftSomeTrust

URL: file:///c:/TrustedApps/*FullTrust

Publisher: MicrosoftMicrosoft

Zone: InternetInternet

URL: http://dotnet.jku.at/*SSW

Zone: MyComputerMoreTrust

c:\TrustedApps\MSApp.exe

Nothing MoreTrust Microsoft FullTrust

Page 27: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 28

Security Stack Walk

• CLR checks permissions of all callers

• only if all callers have the required permissions perm,the resource may be accessed

Assembly A

Assembly B

Assembly C

Assembly D

Resource

perm.Demand()

Page 28: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 29

Security Policy Configuration (1)

• Microsoft .NET Framework Configuration Tool– MMC (Microsoft Management Console) Snap-In

– Start with• Start | Control Panel | Administrative Tools |

Microsoft .NET Framework Configuration or • mscorcfg.msc at the command line

– supports (with wizards)• creating/editing of code groups

• creating/editing of of permission sets

• determines permissions/code groups of an assemblies

• Code Access Security Policy Tool (caspol.exe)– command line tool

• e.g. activate/deactivate security checks caspol -security ( on | off )

Page 29: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 30

Security Policy Configuration (2)

Page 30: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET-Architecture

Terms, Features, General Considerations, ...

Virtual Execution System (VES)

Multi-Language Interoperability

.NET Security

Application Domains

Appendix:

directories and configuration files source code and IL disassembler view of example program

Page 31: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 32

Application Domains (AppDomains) (1)

• isolated memory areas in the CLR process(lightweight subprocesses, but Threads)

• protect applications from each other• embrace (and isolate)

– assemblies, modules and types of an application– method tables of the loaded types– static fields and objects of the loaded types

AppDomain 1 AppDomain 2 AppDomain 3

Thread A

Thread B

Thread C

Page 32: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 33

Application Domains (AppDomains) (2)

execution engine, heap, thread pool, ...

Windows Process

domain-neutral area

assemblies & modules types & methodsmscorlib.dll System.Object

default AppDomain

System.Int32

AppDomain 2

assemblies & modules assemblies & modules

types & methodstypen & methods

System.dllSystem.Drawing.dll

System.dll

System.Windows.Forms.dllview.exe

gui.dllbar.mod

App2.exe

System.Windows.Forms.UserControl

SSW.MyControl

SSW.App2BarChartControl

BarChartGuiBarChartApp

System.Windows.Forms.UserControl

System.Windows.Forms.dll

Page 33: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 34

AppLauncher: creating AppDomains (1)

AppLauncher.cs:using System; using System.Threading;

class AppLauncher { static void Main () { for (;;) { string appURI = Console.ReadLine();

if (appURI == "exit") break;

try { AppThread at = new AppThread(appURI); Thread t = new Thread(new ThreadStart(at.Execute)); t.Start(); } catch (Exception e) { . . . } } } . . .

Page 34: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 35

AppLauncher: creating AppDomains (2)

AppLauncher.cs: . . .

class AppThread { AppDomain domain; string uri;

public AppThread (string appURI) { uri = appURI; domain = AppDomain.CreateDomain(uri); }

public void Execute () { try { domain.ExecuteAssembly(uri); } catch (Exception e) { . . . } } }}

Page 35: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

Thank you for your attention!

http://dotnet.jku.at

Questions?

Page 36: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

.NET-Architecture

Terms, Features, General Considerations, ...

Virtual Execution System (VES)

Multi-Language Interoperability

.NET Security

Application Domains

Appendix:

directories and configuration files source code and IL disassembler view of example program

Page 37: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 38

Appendix A: Important Directories

• Windows-specific directories– WindowsWindows: e.g. c:\WINDOWS\ , c:\WINNT\

– ProgramsPrograms: e.g. c:\Program Files\

– UserUser: e.g. c:\Documents and Settings\UserName\

• .NET-specific directories– .NET-Runtime.NET-Runtime:

e.g. WindowsWindows\Microsoft.NET\Framework\v1.0.3705

– .NET-SDK.NET-SDK: e.g. ProgramsPrograms\Microsoft.NET\FrameworkSDK or

ProgramsPrograms\Microsoft Visual Studio .NET\FrameworkSDK

– GAC GAC (Global Assembly Cache): e.g. WindowsWindows\assembly\

Page 38: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 39

Appendix B: Configuration Files

• Machine configuration– .NET-Runtime.NET-Runtime\CONFIG\machine.config

• Application configuration– in the application directory– filename = application filename + .config

e.g. MyApp.exe MyApp.exe.config

• Security policy– level ENTERPRISE: .NET-Runtime.NET-Runtime\CONFIG\enterprisesec.config

– level MACHINE: .NET-Runtime.NET-Runtime\CONFIG\security.config

– level USER: e.g.UserUser\Application Data\Microsoft\CLR Security Config\v1.0.03705\security.config

– level APPDOMAIN:in program code with AppDomain.SetAppDomainPolicy ( ... )

Page 39: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 40

C#: BarChartControl (1)

BarChartControl.cs:

using System; using System.Drawing; using System.Windows.Forms;

public class BarChartControl : UserControl { int[] values = {}; // points to currently displayed list (original or sorted) int[] original = {}; // original (unsorted) list of the values int[] sorted= {}; // sorted representation of the original list

public int[] Values { set { values = original = value; sorted = (int[]) original.Clone(); Array.Sort(sorted); Refresh(); } }

public bool Sorted { get { return values == sorted; } } . . .

Page 40: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 41

C#: BarChartControl (2)

BarChartControl.cs (Forts.): . . .

public void ToggleSorted () { if (values == sorted) values = original; else values = sorted; Refresh(); }

protected override void OnPaint (PaintEventArgs e) { Brush b = new SolidBrush(ForeColor); // fill color for bars int w = DisplayRectangle.Width / (values.Length*2-1); // width of bars int x = 0; // starting position foreach (int i in values) { e.Graphics.FillRectangle(b, x, 0, w, i); x += w * 2; } }}

Page 41: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 42

Visual Basic .NET: BarChartGUI (1)

BarChartGUI.vb:Imports SystemImports System.DrawingImports System.Windows.Forms

Public Class BarChartGuiInherits Form

Private Dim WithEvents ToggleButton As New Button() Protected Dim Chart As New BarChartControl()

Public Sub New () ToggleButton.Location = New Point(10, 10) ToggleButton.Size = New Size(200, 30) ToggleButton.Text = "Sort" Controls.Add(ToggleButton)

Chart.Location = New Point(10, 50) Chart.Size = New Size(200, 150) Controls.Add(Chart) End Sub . . .

writing to a Property(source language C#)

writing to a Property(unknown source

language)

inherits from a class library type (unknown source language)

type of field is implemented in

C#

Page 42: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 43

Visual Basic .NET: BarChartGUI (2)

BarChartGUI.vb (Forts.):

. . .

Private Sub Toggle_Click (ByVal sender As Object, ByVal e As EventArgs) _ Handles ToggleButton.Click

Chart.ToggleSorted()

If Chart.Sorted Then ToggleButton.Text = "Restore" Else ToggleButton.Text = "Sort" End If End Sub

End Class

invocation of method (source

language C#)

reading of a Property

(source language C#)

Page 43: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 44

J#: BarChartAppBarChartApp.jsl:import System.*;

class BarChartApp extends BarChartGui { BarChartApp () { set_Text("Bar Chart Viewer"); set_Width(230); set_Height(245); }

public static void main (String[] args) { BarChartApp app = new BarChartApp(); int nVals = 8; if (args.length > 0) nVals = Convert.ToInt32(args[0]); int[] values = new int[nVals]; Random gen = new Random(); for (int i = 0; i < nVals; i++) values[i] = gen.Next(app.Chart.get_Height()); app.Chart.set_Values(values); System.Windows.Forms.Application.Run(app); }}

inherits from type

implemented in C#

J# does not support C#-like Properties use compiler-generated methods instead

Page 44: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 45

IL-Disassembler: view.exe

Page 45: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 46

IL-Disassembler: gui.dll

Page 46: NET Architecture Albrecht Wöß Institute for System Software Johannes Kepler University Linz © University of Linz, Institute for System Software, 2004

A. Woess .NET Architecture 47

IL-Disassembler: bar.mod