Het.NET framework in vogelvlucht



Vergelijkbare documenten
Een overzicht van het.net platform

XML Web Services of.net Remoting? W ANNEER GEBRUIK JE WELKE TECHNOLOGIE VOOR DE AANROEP VAN REMOTE SERVICES

Zelftest Java concepten

Dit voorbeeldproject beschrijft het gebruik van web services (open standaarden) voor de ontsluiting van kernregistraties bij de gemeente Den Haag.

Kleine cursus PHP5. Auteur: Raymond Moesker

UBC op Microsoft Windows 64-bits

ASRemote WebService. Via deze webservice kunt u:

Het ontwikkelen van webdiensten met SOAP

INLEIDING... 1 AFSPRAKEN... 2 INHOUDSOPGAVE...

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

The OSI Reference Model

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Les 11: systeemarchitectuur virtuele machines

Vakgroep CW KAHO Sint-Lieven

Om de libraries te kunnen gebruiken, moet de programmeur (een deel van) zijn programma in C/C++ schrijven.

Werken met ActiveX (COM) componenten in.net

Powerpoint presentatie College 5 Gilbert van Lierop & Farshad Salamat

DrICTVoip.dll v 2.1 Informatie en handleiding

Programming Content Management Server 2002

WCF claims-based authorization

Introductie.NET Framework 3.0 A N D R É O B E LIN K, M C S D, M V P

icafe Project Joeri Verdeyen Stefaan De Spiegeleer Ben Naim Tanfous

Mijn eerste ADO.NET applicatie

Technisch Ontwerp W e b s i t e W O S I

Dynamische webapplicaties in Java

Inhoudsopgave. Hoofdstuk 1.RMI...2

Klassen en interface worden gedeclareerd in een andere klasse/interface. Vermeiden Altijd static

Software Test Plan. Yannick Verschueren

Wat betekent XML voor software engineers?

RIVM rapport /2003. Reference Guide Microsoft.NET. M van der Zee, G Verspaij, S Rosbergen

Programmeren in C ++ met wxwidgets les 5

Zelftest Java EE Architectuur

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

Handleiding Publicatie Module Enquête Systeem

Managed extensions for C++

Analyse Programmeertalen

Zelftest XML Concepten

Java. Basissyllabus. Egon Pas

In de wereld van smart devices is platformonafhankelijkheid met

iprova Suite Systeemeisen iprova 5 Hosting

INHOUDSOPGAVE Het Boekenwinkeltje Registreer.aspx Opgaven... 97

Zelftest Inleiding Programmeren

Microsoft.NET: De toekomst is dichterbij dan u denkt

No part of this book may be reproduced in any form, by print, photoprint, microfilm or any other means without written permission of the publisher.

Software Factories. Toepassing van Domain Specific Languages. achtergrond

Systeemvereisten. Datum: Naam: Systeemvereisten versie 43 revisie 15 Status:

PictoWorks Netwerk infrastructuur

Nederlandse samenvatting (Dutch summary)

ECTS fiche. Module info. Evaluatie. Gespreide evaluatie OPLEIDING. Handelswetenschappen en bedrijfskunde HBO Informatica

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Tips & Tricks: Tip van de maand November Office Integratie

NHibernate als ORM oplossing

Tentamen Imperatief Programmeren

1.Noem de vijf categorieën waarin programmeertalen kunnen worden ingedeeld en geef van elke categorie één voorbeeld.

Vakinhoudelijke uitwerking Keuzevak Applicatieontwikkeling van het profiel MVI vmbo beroepsgericht

4 ASP.NET MVC. 4.1 Controllers

Smart client applicaties

Network Computing Architecture Toekomstige rol van Oracle Developer marginaal

IMP Uitwerking week 13

Teamhandleiding DOMjudge (versie 2.2.0muKP) 31 mei 2008

Technisch ontwerp. Projectteam 6. Project "Web Essentials" 02 april Versie 2.1.0

DigiD SSL. Versie Datum 16 augustus 2010 Status Definitief

Wat is JAVA? Peter van Rijn

Aquo Domeintabellen Services (Aquo DS) Handleiding Webservice

Informatie & Databases

SMART-Microsoft Software Factory

De clientkant van webapplicaties in het universitaire onderwijs

ChainWise server randvoorwaarden

Portability, Interoperability of toch maar Connectivity Portability, Interoperability of toch maar Connectivity.

Beknopte dienstbeschrijving beveiligen van Webapplicaties m.b.v. digitale certificaten en PKI

SQL Server Service Broker

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Dynamiek met VO-Script

Service Oriented Architecture

Technische architectuur Beschrijving

Capita Selecta Design Patterns voor administratieve applicaties

m.b.v. digitale certificaten en PKI Versie: mei 2002 Beknopte Dienstbeschrijving beveiligen van VPN s

SIMPLIFYSCAN. A sharp choice in intelligent scanning

DOMjudge teamhandleiding

m.b.v. digitale certificaten en PKI Versie: mei 2002 Beknopte Dienstbeschrijving beveiligen van

Software Test Plan. Yannick Verschueren

Stappenplannen MailPlus SOAP API

APPLICATIEBOUW 1E COLLEGE: INTRODUCTIE. Onderdeel van SmartProducts

Infrastructuur en platformen

Een suite van web applicaties om geografische informatie in de organisatie te presenteren

Programmeren in Java 3

Technische FAQ koppelvlak WUS 2.0 voor bedrijven

Technische implementatie De infrastructuur rondom Transit kent de volgende rollen:

Jaco Peeman en Casper de Lange November 2002 ABSTRACT... 2 INDEX... 2

MINIMALE SYSTEEMEISEN. Vakware 6

INFITT01 - Internettechnologie WEEK 8

ArcGIS Mobile ADF. Smart Client Applicaties voor ArcGIS Server Eva Dienske, Wim Ligtendag

Datastructuren en algoritmen

Werken op afstand via internet

Functionele beschrijving: Scannen naar AFAS Profit.

ManualMaster Systeem 6.1 (ManualMaster Administrator, ManualMaster WebAccess en ManualMaster WebEdit)

Inleiding Visual Basic en VBA. Karel Nijs 2009/01

Modelleren en Programmeren

Module 4 Hoofdstuk 1. Programmeertalen

React en React Native voor websites en apps

Transcriptie:

Het.NET framework in vogelvlucht De basis voor.net applicaties Danny Greefhorst Het.NET framework is de basis voor het.net platform en bestaat zowel uit een ontwikkel- als een runtime-omgeving. De ontwikkelomgeving bevat een grote hoeveelheid standaardbibliotheken waarmee vrijwel alle soorten applicaties kunnen worden ontwikkeld; van webdienst tot Windowsapplicatie. De runtime-omgeving biedt applicaties een object-georiënteerd model waarin allerlei standaard diensten worden geboden. Dit artikel geeft een overzicht van beide kanten van het.net framework. Inleiding Het eerste deel van het.net framework is een uitgebreid raamwerk van standaard klassen voor het ontwikkelen van allerlei soorten.net applicaties (zie figuur 1). Zo zijn er het nieuwe ASP.NET voor het ontwikkelen van webapplicaties en webdiensten,.net Remoting voor gedistribueerde componenten en de Windows Forms klassen voor applicaties die gebruik willen maken van Windows-specifieke eigenschappen. Voor al deze typen van applicaties kan gebruik gemaakt worden van veel basisklassen voor onder andere databasetoegang, XML, tekenen, security, netwerktoegang, stringmanipulaties, reflectie en COM-integratie. ASP.NET.NET Remoting Windows Forms ADO.NET XML Tekenen Basisklassen Common Language Runtime ontwikkelomgeving runtime omgeving Copyright 2001 Software Engineering Research Centre 1

Figuur 1.NET framework Het andere belangrijke deel van het.net framework is de Common Language Runtime (CLR); een omgeving voor het uitvoeren van.net applicaties. Het bijzondere van deze omgeving is dat hij gebaseerd is op een programmeertaal-onafhankelijk tussenformaat, de zogenaamde Intermediate Language (IL), waardoor integratie tussen programmeertalen eenvoudig wordt. Elke programmeertaal die.net begrijpt, en dat zijn niet alleen de door Microsoft geleverde talen zoals Visual Basic en C#, kan direct gebruik maken van klassen geschreven in andere talen. De speciaal voor.net ontwikkelde IL kan snel naar machineafhankelijke code worden vertaald door bijvoorbeeld een JIT-compiler waardoor de snelheid goed blijft. Naast een executieomgeving biedt de CLR een aantal toegevoegdewaarde diensten voor bijvoorbeeld het beheren van geheugen, processen en threads, excepties, beveiliging en metadata. In het bijzonder biedt de CLR garbage collection waarbij objecten die niet meer worden gebruikt automatisch worden opgeruimd..net applicaties kunnen executeren in elke omgeving waarvoor een CLR implementatie beschikbaar is, onafhankelijk van de onderliggende hardware en software. De ontwikkelomgeving Het eerste belangrijke deel van de.net ontwikkelomgeving is ASP.NET. Microsoft heeft met ASP.NET een geheel nieuwe implementatie van het ASP webserver raamwerk gemaakt waarmee naast webapplicaties ook webdiensten kunnen worden gemaakt. Webdiensten zijn componenten die via standaard protocollen over het Internet kunnen communiceren. Een belangrijk onderdeel van deze protocolstack is SOAP (Simple Object Access Protocol), een protocol voor het versturen van XML-gebaseerde berichten. In.NET is voluit ondersteuning voor SOAP en is het heel eenvoudig om een ASP.NET pagina te definiëren met daarin een webdienst (zie figuur 2). Deze webdienst kan in een willekeurige.net programmeertaal zijn geschreven en hoeft alleen met het speciale WebMethod attribuut aan te geven welke operaties via SOAP beschikbaar moeten zijn. <%@ WebService Language="C#" Class="Hello" %> using System.Web.Services; public class Hello : WebService { [ WebMethod ] public string helloworld() { return "Hello World"; } } Figuur 2 Voorbeeld SOAP-server, geschreven in C# met ASP.NET Natuurlijk is het ook nog gewoon mogelijk om webapplicaties in ASP.NET te definiëren; de daarvoor beschikbare gereedschapskist is alleen verder uitgebreid. Naast standaard HTML controls zijn er bijvoorbeeld speciale web- en validatiecontrols. Webcontrols zijn visuele componenten die zich automatisch aanpassen aan de gebruikte webbrowser. Een webpagina is hierdoor automatisch geschikt voor zowel desktop als handheld apparaten, zoals mobiele telefoons. Validatiecontrols geven de mogelijkheid om door de gebruiker Copyright 2001 Software Engineering Research Centre 2

ingevoerde gegevens snel en eenvoudig te kunnen valideren. Zo zijn er controls om te bepalen of een waarde in een bepaald bereik ligt, ingevuld is, aan een reguliere expressie voldoet of op een bepaalde manier is gerelateerd aan een andere control. Ook is er een speciaal control waarmee een samenvatting van de validatie wordt gegeven. Een verbetering ten opzichte van het oude ASP is dat web-pagina s nu worden gecompileerd waardoor ze een stuk sneller zijn geworden. Verder is er in ASP.NET beter nagedacht over caching, sessiebeheer en beveiliging. Zo wordt de toestand van een sessie bewaard als de server crashed en kan toestandsinformatie door meerdere machines worden gedeeld, waarvoor speciale synchronisatiemechanismen beschikbaar zijn. Windows Forms Als applicaties voluit gebruik willen maken van de grafische kracht van Windows dan is Windows Forms de aangewezen keuze. Windows Forms is een verzameling van klassen voor het maken van grafische gebruikersinterfaces. De geheel object-georiënteerde verzameling van formulieren en controls kunnen gebruik maken van specifieke GDI+ eigenschappen zoals die aanwezig zijn in Windows 2000. Handig is dat formulieren nu ook kunnen erven van andere formulieren waarbij basis-eigenschappen in algemene formulierklassen gedefinieerd kunnen worden. Controls zijn flexibel in formulieren te positioneren middels anchoring en docking waarbij ze zich automatisch aanpassen aan de grootte van het formulier..net Remoting Voor het ontwikkelen van gedistribueerde applicaties is.net Remoting het aangewezen ontwikkelgereedschap. Met.NET Remoting is het mogelijk om op een volwaardige manier met andere objecten in het netwerk te communiceren en kunnen zelfs hele objecten worden verstuurd. Objecten kunnen zowel synchroon als asynchroon communiceren en gebruik maken van verschillende transportkanalen en berichtformatteringen. Zo kan er gekozen worden voor een HTTP-kanaal met SOAP als formattering of het TCP-kanaal met een binaire formattering als snelheid echt van belang is. Objecten kunnen door de client of door de server worden geactiveerd. De levensduur van het eerste soort objecten wordt beheerd in de vorm van een lease die bij beëindiging zorgt voor het opruimen van het object. Server-geactiveerde objecten kunnen eenmalig of per aanroep worden geactiveerd. Bij het creëren van een object wordt er een lokaal proxy object gecreëerd dat zo slim is dat het voor lokale communicatie een directe aanroep doet en voor servergeactiveerde objecten pas over het netwerk communiceert bij het aanroepen van de eerste operatie. Communicatie is tenslotte in verre mate te beïnvloeden door het definiëren van eigen formatteerders, transportkanalen en proxies. In figuur 3 is een voorbeeld.net Remoting client weergegeven die communiceert via het TCP-kanaal. Copyright 2001 Software Engineering Research Centre 3

using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels.TCP; public class Client { public static int Main(string [] args) { TCPChannel chan = new TCPChannel(8086); ChannelServices.RegisterChannel(chan); Hello hello = (Hello)Activator.GetObject( typeof(hello), "tcp://server:8085/hello"); System.Console.WriteLine(hello.helloWorld()); } } Figuur 3 ADO.NET Voorbeeld.NET Remoting client Voor toegang tot databases kan de ontwikkelaar gebruik maken van het nieuwe ADO.NET. Deze databasetoegangsinterface lijkt nog wel op het oude ADO maar is nu gebaseerd op XML. Naast directe databasetoegang is het mogelijk een gehele gegevensverzameling uit een database op te halen en lokaal als database te benaderen, wat de schaalbaarheid van applicaties vergroot. De gegevensverzameling wordt daarvoor in XML overgezonden en kan op verzoek ook in XML vertaald worden (en vice versa) waardoor gebruik gemaakt kan worden van de grote hoeveelheid beschikbare XML-tools op de markt. Er is lokaal een rijke toegang tot de gegevens mogelijk waarbij door de relaties tussen tabellen kan worden genavigeerd, tabellen kunnen worden gesorteerd en gefilterd, en events worden gegenereerd bij het wijzigen van de gegevens. Nadat lokaal wijzigingen in de gegevensverzameling zijn doorgevoerd kan weer worden gesynchroniseerd met de centrale database. XML Het laatste belangrijke deel van de.net ontwikkelomgeving is de grote hoeveelheid standaard klassen voor ondersteuning van XML. Hierbij zijn alle belangrijke XMLstandaarden zoals XML Namespaces, XML Schema, XPath, XSL en DOM vertegenwoordigd. Ook het op XML gebaseerde SOAP, en het de daarbij behorende WSDL (Web Service Description Language) is in het.net framework geïntegreerd. Het creëren, lezen en manipuleren van XML-gebaseerde gegevens is dan ook geen probleem. De runtime-omgeving Het tweede deel van het.net framework is de runtime-omgeving die bekend staat als de Common Language Runtime (CLR). De CLR bestaat uit een aantal belangrijke onderdelen waaronder het IL dat wordt gebruik als algemene voertaal en het Common Type System (CTS) waarmee deze taal betekenis krijgt. Verder is er de Common Language Specification (CLS) voor het uitwisselen van IL, metadata voor het beschrijven van IL en een Virtual Execution System (VES) voor het uitvoeren van IL. Assemblies zijn Copyright 2001 Software Engineering Research Centre 4

de eenheid van installatie, security, versionering en zichtbaarheid voor.net applicaties. Een assembly is niet zozeer een fysieke eenheid maar meer een logische eenheid die kan bestaan uit meerdere portable executables (PE) waarin de IL is verpakt, naast eventuele andere benodigde bestanden. Een voorbeeld van een assembly is weergegeven in figuur 4. Program.exe Manifest Type metadata IL code Util.dll Type metadata IL code Image.gif hulpbron Figuur 4 Assembly bestaande uit drie bestanden Intermediate Language IL is de tussencode die door alle.net compilers wordt gegenereerd. Alhoewel het mogelijk is IL direct te interpreteren is het sneller als het eerst door een compiler of JIT compiler naar machine-afhankelijke code is vertaald. Optimaliserende compilers kunnen een speciale subset van IL genaamd OptIL genereren die extra annotaties bevat waardoor snel machine-afhankelijke code kan worden gegenereerd. Er is een tekstueel formaat voor IL gespecificeerd dat qua syntax het midden houdt tussen assembly-language en C# (zie figuur 5). Dit tekstformaat kan direct door de IL-assembler worden vertaald naar een assembly en zou gebruikt kunnen worden door een compiler als uitvoerformaat. Omgekeerd is er ook een disassembler die een assembly kan omzetten naar een tekstuele IL-representatie, waardoor roundtrip engineering mogelijk wordt. Daarnaast kan IL ook direct binair via de reflectieklassen in het.net raamwerk worden gegenereerd..assembly hello.exe { }.method public instance void helloworld() il managed {.maxstack 1 ldstr "Hello World" call void System.Console::WriteLine(class System.String) ret } Figuur 5 Deel van.net programma geschreven in IL IL bevat een grote diversiteit aan instructies voor bijvoorbeeld rekenkundige en logische operaties, programmabesturing, directe geheugen toegang en foutafhandeling. Merk op dat IL bovenal ook object-georiënteerd is met instructies voor het laden, opslaan, initialiseren en aanroepen van methoden op objecten. Copyright 2001 Software Engineering Research Centre 5

Common Type System Het CTS is een aantal standaard afspraken over hoe wordt omgegaan met typering in IL. De basis voor het CTS is een combinatie tussen een objectgeoriënteerd en procedureel model (zie figuur 6) waarin onderscheid wordt gemaakt tussen objecten en values (waarden). Values zijn simpelweg bitpatronen voor types als integers en booleans. Elke value heeft een value type dat de representatie en het gedrag van de waarde beschrijft. Objecten dragen daarentegen hun object type in hun representatie mee, hebben een unieke identiteit en kunnen erven van andere object types. Een object type is een speciaal soort reference type, waarvan ook interface types en pointer types specialisaties zijn. Type Value type Reference type Ingebouwd type Eigen gedef. type Object type Interface type Pointer type Managed pointer type Unmanaged pointer type Function pointer type Figuur 6.NET Type hierarchie Value types kunnen indien nodig eenvoudig worden vertaald naar een reference type middels een proces dat boxing heet. Naast de ingebouwde value types (zie tabel 1) is het ook mogelijk eigen value types te definieren. Copyright 2001 Software Engineering Research Centre 6

CTS type In CLS? Beschrijving bool True/false waarde char Unicode 16-bit karakter. class System.Object Object of boxed value type class System.String Unicode string float32 IEEE 32-bit float float64 IEEE 64-bit float int8 Signed 8-bit integer int16 int32 int64 native int native unsigned int typedref unsigned int8 unsigned int16 unsigned int32 unsigned int64 Signed 16-bit integer Signed 32-bit integer Signed 64-bit integer Signed integer, native size Unsigned integer, native size Pointer plus runtime type Unsigned 8-bit integer Unsigned 16-bit integer Unsigned 32-bit integer Unsigned 64-bit integer Tabel 1 Ingebouwde types Common Language Specification De CLS is een subset van de CTS, gecombineerd met een verzameling afspraken over naamgeving en structuur van elementen die buiten hun assembly zichtbaar zijn. Zo moeten er bijvoorbeeld voor events en properties operaties zijn gedefinieerd die voldoen aan standaard naamgevingsconventies. Het doel van de CLS is de uitwisseling tussen programmeertalen te vereenvoudigen door het gebruik van standaard conventies. Elementen zoals assemblies, types, methoden en attributen kunnen aangeven of ze wel of niet aan de CLS voldoen als dat afwijkt van het element waar ze in gedefinieerd zijn. In tabel 1 is aangegeven welke ingebouwde types voldoen aan de CLS. Naast beperkingen aan deze ingebouwde types zijn er ook andere beperkingen aan types, waardoor bijvoorbeeld unmanaged pointers en boxed values niet zijn toegestaan in de CLS. Virtual Execution System Het Virtual Execution System (VES) vormt de virtuele machine die het CTS implementeert en verantwoordelijk is voor het executeren van IL of OptIL. Alle IL die onder toeziend oog van de VES executeert wordt managed code genoemd. Zoals zichtbaar is in figuur 7 verzorgt het VES naast JIT-compilatie ook mechanismen voor het laden en verifieren van IL en het afdwingen van beveiligingsmaatregelen. De ingebouwde class loader zorgt voor het inlezen van IL of OptIL in het geheugen, en het uitvoeren van Copyright 2001 Software Engineering Research Centre 7

een aantal basiscontroles waaronder een elementaire authorisatiecontrole. Een strengere controle vindt plaats in de verifier waarin wordt gecontroleerd of programma s alleen gebruik maken van geheugen dat voor hun bedoeld is en of objecten alleen via hun publieke interfaces benaderd worden. Alleen betrouwbare code kan deze controleslag overslaan. Na verificatie worden de beveiligingscontroles die declaratief of programmatisch zijn gedefinieerd afgedwongen. Tenslotte biedt het VES diensten voor het debuggen en profilen van code en het aanroepen van code die niet in de CLR draait, zoals bijvoorbeeld bestaande Windows DLL s Broncode Compiler IL in.obj IL in.exe of.dll Linker IL in.exe of.dll klasse-bibliotheek Class Loader Type-veilige IL Verifier JIT Compiler Geverifieerde IL aanroep naar ongecompileerde code Executie Managed native code Security checks Virtual Execution System Figuur 7 Overzicht van de architectuur van het Virtual Execution System Metadata Metadata is erg belangrijk voor de CLR aangezien het de basis vormt voor het kunnen laden, controleren en uitvoeren van code. Er zijn twee belangrijke soorten metadata te onderkennen: assembly-metadata en type-metadata. Een manifest is de representatie van de metadata van een assembly. Naast informatie over bijvoorbeeld de door een assembly geëxporteerde types, beschrijft het ook de afhankelijkheden van de assembly naar specifieke versies van andere assemblies. Deze informatie wordt gebruikt om te bepalen welke versies van andere assemblies er moeten worden ingelezen bij het uitvoeren van de assembly. Afwijkende versioneringsregels kunnen expliciet in het manifest of in een los configuratiebestand worden gedefinieerd. Dit alles is van belang omdat er in.net is Copyright 2001 Software Engineering Research Centre 8

gekozen om meerdere versies van een assembly naast elkaar te laten bestaan om de bekende DLL hell 1 op te lossen. In tabel 2 is weergegeven wat voor soort informatie er in een manifest kan zitten; de schuin gedrukte rubrieken zijn puur ter informatie en worden niet door de CLR gebruikt. Door de ingebouwde metadata zijn assemblies geheel zelf-beschrijvend en is het bijvoorbeeld niet meer nodig assemblies expliciet te registreren. Naam Versie-informatie Gedeelde naam informatie Omgevingsinformatie Bestandslijst Type-referenties Gerefereerde assemblies Titel Beschrijving Standaard alias Configuratie-informatie Product-informatie Naam van de assembly Versie-informatie bestaande uit major, minor, revisie en build nummer. Publieke sleutel van de publiceerder van de assembly en een hash-waarde van de gesigneerde versie van het manifestbestand. Informatie over de culturen, processoren en besturingssystemen die door het assembly worden ondersteund. Lijst van bestanden in de assembly met hun relatieve locatie en hashwaarde. Typereferentie informatie om te bepalen in welk bestand een type is gedefinieerd. Informatie over gerefereerde assemblies zoals de naam, omgevingsinformatie en publieke sleutel. Een gebruikersvriendelijke naam voor de assembly. Een korte beschrijving van de assembly. Een gebruikersvriendelijke standaard alias in het geval de naam niet gebruikersvriendelijk is. Kan allerlei informatie bevatten Informatie zoals trademark, copyright, product, bedrijf en informationeel versienummer. Tabel 2 Inhoud manifest Het tweede type metadata beschrijft alle informatie over individuele types en maakt deel uit van de portable executables waarin de types zijn gedefinieerd. Ook is het mogelijk zelf metadata te definiëren door eigen attributen toe te voegen. Merk op dat toegang tot de metadata altijd dient te verlopen via de daartoe gedefinieerde programma-interfaces. Conclusies Het.NET framework is een belangrijk technisch component in het.net platform waarmee.net applicaties kunnen worden ontwikkeld en uitgevoerd. Naast een grote hoeveelheid standaard klassen voor het maken van allerlei soorten applicaties biedt het 1 Deze DLL hell treedt op wanneer nieuwe applicaties bestaande DLL s overschrijven met nieuwe versies, waardoor oude applicaties potentieel niet meer goed functioneren. Copyright 2001 Software Engineering Research Centre 9

.NET framework een rijke runtime-omgeving. In deze omgeving staan het gebruik van de Intermediate Language en de bijbehorende metadata centraal. Zij maken het mogelijk applicaties te laden, te controleren en uit te voeren. Samengevat lijkt het.net platform veelbelovend en zal het een geduchte concurrent worden voor het Java platform. Danny Greefhorst is werkzaam als senior adviseur bij het Software Engineering Research Centre te Utrecht. Copyright 2001 Software Engineering Research Centre 10