Publications‎ > ‎Software reviews‎ > ‎

Een nieuw begin met een open einde

Met .Net kondigde Microsoft op 22 juni 2000 een nieuwe generatie software aan, uit te spreken als dot-net, die een nieuwe gebruikersbeleving teweeg moet gaan brengen. Bovendien zal .Net standaard een reeks geavanceerde softwarediensten gaan bevatten, en zal het op internet gebaseerd gebruik van computers en communicatie gemakkelijker, persoonlijker en productiever maken voor zowel bedrijven als voor consumenten...

Indien u zich bij dergelijke abstracte beloftes geen concrete voorstelling kunt maken, geen nood. Op korte termijn zult u als eindgebruiker van Microsoft .Net namelijk nog niet veel merken. Deze nieuwe generatie Web-geörienteerde Microsoft software zal zeer geleidelijk zijn weg naar de consument vinden.

Een nieuw begin met een open einde


Voor eindgebruikers zal de nieuwe gebruikersbeleving dankzij .Net vooral gestalte moeten gaan krijgen in de vorm van het Universal Canvas, die een eenduidige omgeving zal gaan bieden voor het werken met informatie. In plaats van het zoeken naar en het lezen van informatie op het web in uw internet bladeraar, en het aanmaken en bewerken van informatie in uw office programma’s, zult u al uw activiteiten op consistente wijze in het Universal Canvas kunnen uitvoeren.

De .Net architectuur zoals gepresenteerd  tijdens de .Net aankondiging Verder belooft .Net een Natural Interface via een nieuwe type-in box die onder meer spraak, handschrift en natuurlijke taal als invoer zal accepteren en softwarediensten zoals een Information Agent om uw identiteit en andere persoonlijke gegevens te beheren. Sommige software diensten zullen gratis zijn, terwijl voor anderen betaald zal dienen te worden.

Het is deze verschuiving, van aan te schaffen applicaties in een kartonnen doos naar software diensten waarop u zich via het internet kunt abonneren, waarop Microsoft net als vele andere grootmachten afstevent. Het .Net platform zal een coherente infrastructuur verschaffen voor dit toekomstmodel.

Maar een digitale revolutie of niet, Microsoft .Net zal eerst het hart van de schare Windows ontwikkelaars moeten veroveren om door te kunnen breken, zonder produkten is er tenslotte geen bruikbaar platform. Een nieuw begin achter de schermen dus, waar de consument op de langere duur wel degelijk de vruchten van zou kunnen gaan plukken.

.Net in het kort

De .Net architectuur in context zoals gepresenteerd  tijdens de .Net aankondiging Microsoft .Net is niets meer en minder dan een nieuw platform voor het ontwikkelen en uitvoeren van software toepassingen. Het biedt ontwikkelaars op transparante wijze ondersteuning voor gedistribueerde web-gebaseerde systemen, een eenduidig en mede daardoor vereenvoudigd programmeermodel, automatisch beheer van geheugen en systeembronnen, een uniform foutafhandelingsmechanisme via excepties en geïntegreerde beveiliging.

Bovendien is .Net niet gebonden aan één programmeertaal of ontwikkelomgeving en biedt het uitstekende ondersteuning voor het opsporen van fouten in broncode. Het is zelfs mogelijk om een klasse geschreven in taal A, te overerven in taal B. Tenslotte wordt ook het distribueren, installeren en configureren van .Net toepassingen aanmerkelijk eenvoudiger.

Kortom, het ontwikkelen van software voor dit nieuwe platform is vergeleken met de huidige Windows familie beduidend minder complex. U kunt typische Win32 zaken zoals het register en zelfs COM terzijde schuiven, aan gezien alle applicatiediensten aangeboden worden via de veelomvattende .Net klassenbibliotheek en de onderliggende .Net runtime. Microsoft .Net staat dus voor een geheel andere benadering van het ontwikkelen van software.

Overigens is .Net niet een nieuwe naam voor, of nieuwe versie van Windows DNA. Deze term duidt namelijk op een benadering voor het ontwikkelen van 3-tier architecturen met behulp van een combinatie van Microsoft produkten waarin het Component Object Model (COM) een prominente rol speelt. .Net is wél de uiteindelijke benaming voor de Next Generation Windows Services (NGWS).

Nog dit jaar zal de officiële beta versie van Microsoft Visual Studio.Net het licht zien. Tot dan zult u het moeten doen met de .Net Framework SDK Technology Preview, die gratis van de bekende website is op te halen. Deze pre-beta versie bevat onder meer de benodigde command-line compilers.

Over de verschijningsdatum van .Net 1.0 doet Microsoft geen enkele uitspraak, maar de verwachting is dat dit nieuwe platform pas in de tweede helft van 2001 zal worden uitgebracht. Geen haastige spoed dus.

.Net in vogelvlucht

Taal-neutraal

Een overzicht van de onderdelen waaruit de .Net Runtime is opgebouwd, zoals gepresenteerd tijdens de .Net aankondiging Aan de basis van .Net bevinden zich de Common Language Runtime (CLR, of Runtime) en een standaard klassenbibliotheek. De Runtime is taal-neutraal, dus u kunt uw favoriete programmeertaal kiezen om een bepaalde taak te implementeren voor het .Net platform.

Microsoft zal in de volgende versie van de Visual Studio suite van programmeeromgevingen, Visual Studio.Net, vier compilers leveren waarmee .Net componenten kunnen worden ontwikkeld, te wete n C++ met beheerde extensies (MC++), Visual Basic, JScript en de speciaal voor het .Net platform ontwikkelde programmeertaal C-Sharp (C#). Bovendien werken andere bedrijven aan .Net compatibele compilers voor onder meer Pascal, Perl, SmallTalk en Cobol.

De Common Language Specification (CLS) beschrijft de minimale eisen die een compiler moet ondersteunen om Runtime compatibele code te kunnen genereren. Aan de andere kant van het spectrum bevindt zich het Common Type System (CTS) die het gehele bereik van types specificeert die de Runtime begrijpt. Hoewel .Net toepassingen alle types kunnen gebruiken, worden deze echter niet door alle .Net programmeertalen ondersteund.

Zelfbeschrijvend

.Net broncode wordt gecompileerd tot Intermediate Language (MSIL of IL), dus niet in direct uitvoerbare machine code. Bovendien voegt een .Net compiler metadata toe aan ieder IL-bestand die de Runtime gebruikt om de ingevoegde klassen te kunnen localiseren, laden, instantiëren en activeren.

Een verzameling van .Net componenten wordt een assembly genoemd, die u zowel kunt vergelijken met een uitvoerbaar programma als met een bibliotheek module aangezien er geen fysieke verschillen zijn tussen deze twee implementatievormen in het .Net componentenconcept.

De verzameling componenten wordt beschreven in een manifest. Deze bevat onder meer informatie over de bestanden waaruit de assembly bestaat en beschrijft eventuele afhankelijkheden. Een assembly is dus zelfbeschrijvend en bepaalt tevens het bereik van de naamsbekendheid van de opgenomen types.

Vanwege de zelfbeschrijvendheid van assemblies wordt het bovendien mogelijk voor zowel ontwikkelaars als systeembeheerders om het gebruik van een bepaalde versie van een component af te dwingen, zodat installatieproblemen gerelateerd aan de beruchte DLL Hell tot het verleden kunnen gaan behoren. Tel hierbij nog het ontbreken van e en centraal registratiesysteem zoals het Windows register binnen het .Net platform, en u begrijpt dat dankzij zelfbeschrijvende assemblies het installeren van een toepassing zo eenvoudig kan zijn als het kopiëren van een map.

Klasse

Ontwikkelaars gebruiken de standaard klassenbibliotheek om systeemdiensten van de Runtime aan te spreken. De klassen zijn ontworpen voor het ontwikkelen van een breed scala aan toepassingsfuncties, zoals bijvoorbeeld webdiensten, desktop programma’s en componenten. Alle functionaliteit is enkel beschikbaar via klassen die van Object zijn afgeleid.

Gezien de diverse functionaliteit die de bibliotheek dient te bieden, is het niet verwonderlijk dat deze is opgebouwd uit honderden klassen, gegroepeerd in een aantal namespaces. De belangrijkste is de System namespace, waarin onder meer de Object basisklasse is opgenomen, waarvan alle andere klassen zijn afgeleid. Door uw eigen namespace te definiëren, kunt u bovendien uw eigen klassen op transparante wijze integreren in het .Net platform.

Het Virtual Object System (VOS) specificeert hoe een .Net object klasse, oftewel een type, gedefiniëerd moet zijn om door de Runtime gebruikt te kunnen worden. Behalve de regel dat een type uiteindelijk afgeleid moet zijn van de System.Object basisklasse, laat het VOS bijvoorbeeld geen meervoudige overerving toe.

Uitvoering

Een overzicht van het uitvoeringsproces van een .Net assembly, zoals gepresenteerd tijdens de .Net aankondiging Een .Net toepassing kan in principe op ieder besturingssysteem worden uitgevoerd, aangezien het IL bestandsformaat processoronafhankelijk is. Enige voorwaarde is natuurlijk dat de .Net Runtime op het besturingssysteem aanwezig is. Mic rosoft belooft de Runtime in ieder geval beschikbaar te maken voor de Windows 9x familie, Windows NT 4 en hoger en Windows CE. Over Mac en Unix/Linux versies wordt dus nog met geen woord gerept.

Het starten van een .Net programma heeft tot gevolg dat de IL naar processorinstructies wordt vertaald door de Just-In-Time (JIT) compiler van de Runtime. Na het JIT compileren van het aangeroepen fragment wordt het beginadres in het geheugen van dit fragment vervangen door het beginadres van de gecompileerde code, zodat bij iedere volgende aanroep van het fragment automatisch de snelle processorinstructies uitgevoerd zullen worden.

De snelheid van de JIT compiler en vooral de snelheid van de geproduceerde processorinstructies zou wel eens van grote invloed blijken te zijn op het welslagen van het .Net platform. Niet toevallig dan ook dat Microsoft een zogenaamd PreJIT programma biedt waarmee ineens een volledige assembly gecompileerd kan worden. Hiermee verliest u natuurlijk de processoronafkankelijkheid, maar uw .Net programma zal bij gebruikers een beduidend snellere eerste indruk achterlaten. Bijkomend voordeel is dat toepassingen in de vorm van processorinstructies veel moeilijker te decompileren zijn, wat in verband met het intellectuele eigendomsrecht een factor van belang kan zijn.

In alle openheid

In Microsoft .Net worden gegevens in XML verpakt en door middel van SOAP boodschappen via HTTP over netwerken uitgewisseld.

Extensible Markup Language (XML) is een deelverzameling van Standard Generalized Markup Language (SGML) dat geoptimaliseerd is voor gebruik op het internet. Het wordt gedefiniëerd door het World Wide Web Consortium (W3C) zodat gegevens uniform en onafhankelijk van bedrijven zijn. Dit is één van de redenen waarom XML als formaat voor het representeren van allerlei gegevens steeds meer navolging vindt.

Het Simple Object Access Proto col (SOAP) is een op XML gebaseerde specificatie voor het uitvoeren van Remote Procedure Calls (RPC’s), en dus de componentenlijm voor het ontwikkelen van gedistribueerde systemen. SOAP is door Microsoft in samenwerking met onder meer IBM en Lotus ontwikkeld en vervolgens overgedragen aan de Internet Engineering Task Force (IETF).

In de huidige SOAP specificatie wordt alleen over de toepassing van SOAP boodschappen in de context van het HyperText Transfer Protocol (HTTP) als transportmechanisme gesproken. HTTP is niet alleen een alom gerespecteerde industriestandaard, maar bovendien één van de weinige protocollen die firewalls toelaten. Overigens blijft het wel mogelijk voor systeembeheerders om in een firewall SOAP boodschappen te onderscheiden van de overige boodschappen die over de HTTP poort binnenkomen.

Het grote verschil met functioneel vergelijkbare technologieën zoals COM Internet Services (CIS), Remote Data Services (RDS) en Remote Scripting is dat SOAP platform- en producentonafhankelijk is. SOAP is dus geen nieuw concept maar biedt dezelfde functionaliteit in een relatief eenvoudig, generiek en op open standaarden gebaseerd protocol.

Net geen Java

De overeenkomsten tussen Microsoft .Net en het bestaande Java 2 platform zijn natuurlijk overduidelijk. De CLR versus de Java Virtual Machine (JVM), de verwantschap tussen de Java en .Net klassenbibliotheken, de gelijkenissen tussen de programmeertaal Java en het nieuwe C#, automatisch beheer van geheugen en systeembronnen, Microsoft heeft goed naar het troetelkindje van rivaal Sun gekeken.

Maar in die vorige zin schuilt tevens een wezenlijk strategisch verschil tussen .Net en het Java 2 platform. Java is stevig in handen van een enkel bedrijf en het is bijzonder onwaarschijnlijk dat Sun deze controle ooit volledig uit handen zal geven. Java is dus niet een gestandaardiseerde programmeertaal. Mic rosoft daarentegen heeft in ieder geval reeds de intentie uitgesproken dat het C# zal standaardiseren via ECMA Technical Committee (TC) 39, en het onderliggende SOAP protocol is zelfs nooit in bezit geweest van Microsoft. U hoeft u maar te denken aan de java-soap van rechtszaken tussen deze twee zwaargewichten om te bedenken hoe het kan uitpakken indien technologie niet onder controle van een onafhankelijk comité staat...

Sun’s Java 2 platform heeft natuurlijk wel een flink aantal streepjes voor op Microsoft .Net, zo bestaat het reeds jaren en is het onderhand duidelijk waarvoor het wel en niet geschikt is. Bovendien wordt Java door vrijwel alle grote namen in de software industrie ondersteund. Tenslotte is de JVM voor vrijwel ieder besturingssysteem beschikbaar en is het onderhand voorbij het stadium van de versie 1.0 kinderziektes...

Een open einde

Veel is nog onduidelijk over Microsoft .Net, maar zeker is wel dat Microsoft met .Net alles of niets speelt. Allereerst zal het nog minimaal een half jaar duren voordat de eerste officiële versie uit zal komen, en zelfs dat is nog koffiedik kijken.

Van cruciaal belang zal de ondersteuning van het enorme leger Windows ontwikkelaars voor het .Net platform zijn. Visual Basic ontwikkelaars hebben gewoonweg geen keus, aangezien met Visual Basic 7 (VB.Net) enkel nog .Net toepassingen zijn te produceren. Dat zijn alvast zo’n 4 miljoen potentiële ontwikkelaars. Ook zal .Net voor Web programmeurs niet al te veel hoofdbrekens veroorzaken. Voor Visual C++ ontwikkelaars die onder meer toepassingen voor eindgebruikers produceren, is echter nog veel onduidelijk. C++ met beheerde extensies zal in de eerste versie bijvoorbeeld niet door de Runtime te controleren IL code genereren. De kracht van C++ laat zich moeilijk vertalen... Een eventuele overstap naar C# betekent vooralsnog het opgeven van platformonafhankelijkheid op broncode niveau zolan g de .Net Runtime niet beschikbaar is voor niet-Windows systemen.

Tenslotte zal ook de uiteindelijke uitvoeringssnelheid van .Net toepassingen van doorslaggevend belang zijn voor het slagen ervan. Een tekortkoming op dit gebied neemt namelijk de grootste bron van ergenis over het Java 2 platform weg, en Java is wél beschikbaar voor meerdere besturingssystemen. Overigens heeft Microsoft reeds statistieken aangehaald van interne testen op uitvoeringssnelheid die bijna ongeloofwaardig rooskleurig klinken... Aanmerkelijk sneller dan Visual Basic 6, slechts 10 tot 40 procent langzamer dan C++? Het wachten is op de eerste officiële uitgave van de .Net Runtime.

Nog dit jaar zal naar alle waarschijnlijkheid de officiële beta versie van Microsoft Visual Studio.Net het licht zien, en zult u in PCM meer kunnen lezen over .Net in de praktijk. Hoe dan ook, met Microsoft in de aanval ziet het komende jaar er in ieder geval weer veelbelovend uit!

Meer informatie

http://www.microsoft.com/net/: .Net Start pagina
http://msdn.microsoft.com/net/: .Net voor ontwikkelaars
http://www.andymcm.com/dotnetfaq.htm: .Net algemene FAQ
http://www.4guysfromrolla.com/webtech/071900-1.shtml: .Net web-geörienteerde FAQ
http://www.devx.com/dotnet/resources/: Overige .Net informatie
http://msdn.microsoft.com/vstudio/nextgen/default.asp: Visual Studio.Net start pagina
http://www.devx.com/free/press/2000/vs-qalist.asp: Visual Studio.Net FAQ
http://msdn.microsoft.com/xml/general/soapspec.asp: SOAP
http://www.w3.org/TR/REC-xml: XML