Microsoft .Net Framework
Barry A. Postma
Inhoudsopgave
1 1.1 1.1.2 1.1.3 1.2 2.0 2.1 2.2 2.3 2.3.1 2.3.2 2.3.3 2.3.4 3.0 3.1 3.1.1 3.1.2 4.0 4.1 4.2 4.2.1 4.3 4.3.1 4.3.2 4.3.2.1 4.3.2.2 4.3.3 4.4 4.4.1 4.4.2 4.4.3 4.4.4 5 Appendix A Appendix B Appendix C
Inhoudsopgave Voorwoord Inleiding Wat is het Microsoft .Net Framework en wat houdt het in? Ontwikkeling en beginstadium Versiehistorie Versie 3.0 Wat houdt het Framework precies in? Wat is een programma? Programmeertalen voor computerprogramma’s De compiler Gelaagde programma’s Één laag: de stand-alone toepassing Twee lagen: client/server toepassingen Drie lagen: client/presentatie, business logica/proces, data/server N-Lagen: een N-tier applicatie Toepassing en praktijk-werkingsproces van het .Net Framework CLI: Common Language Infrastructure CIL: Common Intermediate Language CLR: Common Language Runtime Intermezzo: interview Wat biedt het .Net Framework nog meer? IDE: Integrated Development Environment Webdevelopment met .Net ASP.Net en AJAX ADO.net: ActiveX Data Objects SQL Server ADO.Net ADO.Net Data Provider ADO.Net DataSets Intermezzo: statistisch onderzoek LINQ: Language Integrated Query Omliggende technologieën WPF: Windows Presentation Foundation WCF: Windows Communication Foundation (W)WF: (Windows) Workflow Foundation Cardspace Hoe nu verder? Conclusie, nawoord Ruwe en verwerkte gegevens statistisch onderzoek Bronnenlijst, referenties/disclaimer Logboek
December/januari 2008
2 3 4 5 5 6 6 7 8 8 9 9 9 10 10 10 10 11 11 11 12 12 13 14 14 15 15 16 17 17 19 20 20 20 21 21 21 22 23 24 29 30
Pagina 2 van 30
Microsoft .Net Framework
Barry A. Postma
Voorwoord Welkom, fijn dat u bent begonnen aan een document met een titel die (tot nu toe) u niets zegt. Ik beschouw het als een teken van interesse en leergierigheid, en hoop dat deze dan ook in dit document zal worden bevredigd. Dit document is (onderdeel van) mijn profielwerkstuk (PWS). Het profielwerkstuk is een uitgebreid stuk, dat geschreven dient te worden aan de hand van vaardigheden die bij de gekozen vakken zijn opgedaan. Helaas is dat bij dit onderwerp slechts beperkt mogelijk. De aan dit document parallel lopende vakken, Informatica en Wiskunde A zijn slechts gedeeltelijk toereikend wat betreft lesstof, en zullen meer op abstract gebied een invloed hebben. Zo biedt Informatica een belangrijke basis voor het begrijpen en uit kunnen leggen van teksten, en Wiskunde een ondersteuning van inzicht in bijvoorbeeld programmeertalen. Echter is er een element van het vak wiskunde, dat concreet geïmplementeerd is, namelijk een statistisch onderzoek. Gebaseerd op een actuele opdracht voor dit vak, zijn de resultaten hiervan in dit document opgenomen, en zijn de ruwe gegevens in appendix A ter inzage beschikbaar gemaakt. De keuze van dit onderwerp zal na het lezen van de inleiding niet moeilijk meer in te schatten zijn. Het is een relatief abstract onderwerp, dat enig gekraak van de hersens vereist om uiteengezet te worden. Daarna dient het ‘vertaalt’ te worden naar een uitleg, die voor de meeste mensen begrijpelijk is. Naast mijn persoonlijke interesse voor dit onderwerp, maar ook de leergierigheid, en de ‘drive’ om ingewikkelde theorieën te doorgronden is dit onderwerp zeer interessant voor mijzelf, en een computerliefhebber. Omdat dit onderwerp van een flinke capaciteit aan informatie voorzien is, is het niet alleen lastig om deze vele informatie goed uiteen te zetten, maar ook om alle aspecten ervan te behandelen. Ik concludeer dan ook, dat het vrijwel onmogelijk is een onderzoeksvraag te stellen welke diepgaander is dan “Wat is de werking van het Microsoft .Net Framework?”. Een algemene deelvraag die van toepassing is op het bijgevoegde, tevens geïntegreerde statistisch onderzoek is: “Wat is de algemene houding van men, ten opzichte van het .Net Framework wat betreft de toekomst, met hun gebruik van het Framework als fundament?”. We zien dan ook, dat slechts 40% van de geënquêteerden met het .Net Framework werkt, en 60% zich met andere technologieën bezig houdt. Verdere, concrete, informatie zal verder in dit document naar voren komen.
December/januari 2008
Pagina 3 van 30
Microsoft .Net Framework
Barry A. Postma
Inleiding Goed, “Microsoft” zegt veel van ons nog wel iets: de ‘maker’ van Windows, het bedrijf van Bill Gates en onder IT’ers vaak vervloekt als ‘Microschoft’. De daarop volgende woorden zijn waarschijnlijk abracadabra. Óf is er iemand die het van Windows Update herkent?
Naarmate je je meer in computers gaat verdiepen, komt er een moment dat je je gaat afvragen “waar zit dat dan precies?”, of “Hoe werkt dat nu eigenlijk?”. Dit is net zoals in het dagelijks leven. Ik heb me vroeger bijvoorbeeld lang afgevraagd hoe het waterniveau in een toiletpot altijd hetzelfde bleef, en deze nooit overstroomde bij het doortrekken. We weten allemaal, heel abstract, dat als je doortrekt het water zich ververst en het vervuilde water wegspoelt. Toch zijn dit soort dingen in detail soms hersenkrakers. Pas als je op zoek gaat naar de achtergrond en de details van dingen die je verbazen of verwonderen, begin je verbanden (in) te zien en begrijp je pas goed hoe dingen in elkaar steken. Omdat het .Net Framework het ontwikkelen van programma’s voor Windows een hele andere wending heeft gegeven, zal ik in komend verslag proberen zoveel mogelijk aspecten ervan uiteen te zetten. Er van uitgaande dat uw kennis op dit niveau (met alle respect) stopt bij het branden van een Cd’tje, zal ik proberen de terminologie zo veel mogelijk te ‘de-jargoniseren’ (om maar weer eens een hersenkraker te opperen).
Tot zover de inleiding, over de komende 30 pagina’s gaan we het hebben over iets schitterends!
December/januari 2008
Pagina 4 van 30
Microsoft .Net Framework
1
Barry A. Postma
Wat is het Microsoft .Net Framework en wat houdt het in?
Als je op internet zal gaan zoeken naar de betekenis van het .Net Framework, kom je op de Microsoft website al een zeer complexe omschrijving tegen, die niet bepaald uiteenzettend is voor mensen die er niets van af weten. “Het Microsoft .Net Framework is een platform voor het bouwen van programma’s die een visueel aantrekkelijk uiterlijk hebben, en een probleemloze veilige verbinding bieden met de mogelijkheid een breed veld aan processen te kunnen ontwikkelen.” Bovenstaande is een beknopte, zakelijke vertaling van de beschrijving zoals Microsoft deze geeft. Het Microsoft .Net Framework is een platform dat op een computer actief is. Visualiseer het, zie de computer als de grond, met daarop een stellage dat de verbinding vergemakkelijkt tussen de programma’s die er boven op “draaien” (lees: actief zijn) en de grond (de computer). Windows is een besturingssysteem dat zeer ingewikkeld is; ook voor software ontwikkelaars. Een simpel computerprogramma moet zonder te veel complicaties voor een programmeur te maken zijn, zonder dat hij of zij zich bezig hoeft te houden met de technische basis die er onder ligt. Deze mogelijkheid wordt voornamelijk door zogenaamde API’s mogelijk gemaakt. API staat voor ‘Application Programming Interface’ en betekent eigenlijk ‘een medium om voor applicaties (programma’s) te programmeren’. Een API (spreek uit: ‘eepieij’) is een digitale bibliotheek van programmacodes die ontwikkelaars kunnen gebruiken. Bij het ontwikkelen van een tekstverwerker, bijvoorbeeld Word, Kladblok of PowerPoint hoeft de ontwikkelaar niet te weten hoe hij de ingetypte gegevens naar de printer verzendt. Dankzij een API kan de ontwikkelaar simpele gegevens (tekst, lettertype, papierformaat, kleur etc.) aan de API ‘meegeven’ en deze zorgt ervoor dat de printer het werk uitvoert. Het zou erg veel tijd kosten, en tevens veel expertise verlangen van de programmeur als deze ook programmacode zou moeten schrijven voor een printer, scanner, muis, toetsenbord en andere randapparatuur. Dankzij deze vele API’s kunnen ook hobbyisten eenvoudig leren programmeren, omdat de technische kant sterk verkleind wordt en er terug wordt gegaan naar de kern: het programma zelf. Samengevat: het .Net Framework is een (digitaal) platform, dat een gemeenschappelijke basis biedt aan programmeurs, welke er voor zorgt dat verschillende soorten programma’s, zoals web- en bureaubladtoepassingen, van dezelfde functionaliteit (API’s) gebruik kunnen maken, waarbij ook communicatie tussen deze programma’s goed verloopt. 1.1
Ontwikkeling en beginstadium
Zoals veel nieuwe ontwikkelingen van Microsoft, kreeg het .Net Framework ook een codenaam. Denk maar aan Windows Vista, dat eerst codenaam ‘Longhorn’ kende, of ‘Whistler’ voor Windows XP. Denk ook aan ‘Vienna’ voor het in ontwikkeling zijnde besturingssysteem ‘Windows 7’ (de opvolger van Vista). Het .Net Framework werd initieel tot NGWS afgekort. NGWS stond voor ‘Next Generation Windows Services’. Dit betekent feitelijk ‘Volgende generatie van Windows Services’ waarbij met services programma’s bedoeld worden die op de achtergrond in Windows gestart zijn, maar die niet zichtbaar zijn. Eind van de jaren 90 startte Microsoft met de ontwikkeling van het platform. Ze wilden een nieuw, betrouwbaar, ‘year 2000 ready’ platform bouwen, voor hun nieuwe generatie besturingssystemen (> Windows 2000). Het ultieme doel was het eenvoudig laten samenwerken van verschillende programma’s zodat ze gegevens en functies konden December/januari 2008
Pagina 5 van 30
Microsoft .Net Framework
Barry A. Postma
uitwisselen. In het begin was het vrij onduidelijk hoe men dit wilde bewerkstelligen, en daarom werden eerst een aantal producten met “.Net” aangemerkt. Dit werden producten als Microsoft SQL Server 2000, Windows 2000 en Commerce- en Exchange – server 2000. De allereerste versie (een zgn. Beta versie) werd in november 2000 gepubliceerd (versie 1.0). De tweede Beta versie, “Version 1.0 Beta 2” werd in juni van 2001 gelanceerd. Rond deze tijd werd Windows XP de nieuwe standaard, en vanaf 2002 werd dan ook het platform in zijn versie 1.0 RTM standaard met XP meegeleverd. RTM staat dan ook voor ‘Release to Manufacturing’ oftewel ‘Vrijgave voor productie’. 1.1.2
Versiehistorie
Van het .Net Framework zijn door de tijd heen veel versies uitgegeven welke steeds verbeterd werden. In onderstaande tabel zijn de versies weergegeven en hun datum van vrijgave. De ‘SP’ waarden geven een zogenaamde ‘Service Pack’ aan. Een servicepack is één grote update, die een allerlei kleine en grote updates gecombineerd bevat. Dit verhelpt kleine updates die steeds worden vrijgegeven om kleine probleempjes op te lossen (hotfixes). Omdat op de stabiele basis van versie 1.0 vrij ver kon worden doorgebouwd, zijn er maarliefst 3 servicepacks voor vrijgegeven. 1.1.3
Versie 3.0
VERSION NAME
VERSION NUMBER RELEASE DATE
Versie 3.0 werd een 1.0 Beta 1 1.0.xxxx.0 Nov. 2000 keerpunt binnen de 1.0 Beta 2 1.0.2914.0 20 jun. 2001 versiehistorie. Versie 3.0 was ook bekend onder de 1.0 RTM 1.0.3705.0 05 jan. 2002 naam ‘WinFX’ (= Windows (Release to Manufacturing) Effects). Door de komst 1.0 SP1 1.0.3705.209 19 mar. 2002 van Vista is er veel veranderd in het 1.0 SP2 1.0.3705.288 07 aug. 2002 basissysteem van Windows. De zogenaamde 1.0 SP3 1.0.3705.6018 31 aug. 2004 Win32 API werkte nog wel 1.1 SP1 1.1.4322.2032 30 aug. 2004 onder Vista, maar ondersteunde niet alle 1.1 SP1 1.1.4322.2300 30 mar. 2005 functionaliteit. .Net 3.0 (Windows Server 2003 Version) was dan ook een grote 2.0 RTM 2.0.50727.42 07 nov. 2005 update op 2.0, met een viertal nieuwe onderdelen 3.0 RTM 3.0.4506.30 06 nov. 2006 toegevoegd. Te weten: “Windows Presentation 3.5 3.5 20 nov. 2007 Foundation” (WPF), 3.5 SP1 3.5.30729.1 11 aug. 2008 “Windows Communication Foundation” (WCF), “Windows Workflow Foundation” (WF) en ten slotte “Windows Card Space” (WCS). In de afbeelding hiernaast, is schematisch de positie van deze vier nieuwe onderdelen weergegeven. Zoals zichtbaar is, liggen deze om het Framework heen, en steunen hier dus in het geheel op. Het is een toevoeging aan het Framework, en ze zijn op het technische gebied, er geheel afhankelijk van. Deze onderdelen worden nader besproken.
December/januari 2008
Pagina 6 van 30
Microsoft .Net Framework
1.2
Barry A. Postma
Wat houdt het Framework precies in?
Zoals al eerder aangegeven, is het .net Framework een stellage bovenop de computer. Het is een Framework (= raamwerk) van programma’s en API’s. .Net wordt ook wel omschreven als een schil om Windows, die het ontwikkelaars makkelijker maakt om toepassingen te maken voor Windows. Het .Net Framework bestaat onder andere uit een zogenaamde “Runtime Environment” die de Windows programma’s uitvoert, een gigantische bibliotheek met API’s die het mogelijk maakt zowel computer- als webtoepassingen te maken. De onderste laag van het .Net platform, is vrijwel het belangrijkste onderdeel, en wordt vaak als de kern ervan gezien. Dit is de “Common Language Runtime” (CLR). De CLR is verantwoordelijk voor het uitvoeren van programma’s. De CLR beheert daarom het geheugen, controleert het programma wel voldoende rechten heeft om bepaalde acties uit te voeren en of er niets gedaan wordt waardoor het systeem instabiel kan worden. Je kunt hieruit concluderen dat het ook een bescherming biedt aan de computer voor eventuele fouten die de programmeur gemaakt heeft. Doordat de CLR onderdeel is van het Framework, en bovenop, of als schil ten opzichte van het besturingssysteem werkt, wordt .Net in het geheel afgeschermd van de complexiteit van het besturingssysteem Windows. In onderstaande afbeelding is schematisch het Framework weergegeven:
Zoals u kunt zien, werken programma’s die door de CLR worden uitgevoerd, met API’s uit de bovenliggende Base Class Library, en niet met (de complexe) functies van het besturingssysteem (ook wel: OS voor ‘Operating System’). De BCL (Base Class Library) is de, standaard met .Net meegeleverde bibliotheek, met duizenden API’s om programma’s en functionaliteit te bouwen en aan te sturen. Het feit dat programma’s met API’s uit de BCL werken, heeft als extra voordeel dat programma’s nietbesturingssysteem afhankelijk zijn, en vrijwel overal werken, waar het .Net Framework aanwezig is. .Net is dan ook voor veel versies van Windows ondersteund, maar het is ook beschikbaar voor mobiele apparaten zoals handcomputers (die met Windows Mobile werken) en mobiele telefoons. Helaas is de ruimte op deze mobiele apparaten beperkter dan op een PC, waardoor er minder van de BCL beschikbaar is. Zo zul je voor een digitale
December/januari 2008
Pagina 7 van 30
Microsoft .Net Framework
Barry A. Postma
organizer niet een programma kunnen schrijven dat Cd’s brandt, omdat er geen CD speler in het apparaat aanwezig is. Bovenop de BCL liggen de programma’s, en de Common Language Infrastructure (CLI). Eigenlijk zijn programma’s een resultaat uitgevoerd door de CLI, dat draait op de CLR, waarbij gebruik wordt gemaakt van Wist u dat… CIL voor de communicatie tussen Het .Net Framework niet alleen voor Windows beschikbaar is? CLI en CLR. Deze werking is Er is voor Linux systemen een zogenaamde ‘open source’ versie beschikbaar van het programma met codenaam Mono. Dit wordt door natuurlijk vrij lastig om te Novell aangeboden met ondersteuning van Microsoft. Mono werkt ook beredeneren. In de loop van dit op Mac OS X Cheetah/Puma en hoger. document zal de werking nader verduidelijkt worden. 2.0
Wat is een programma?
Om het nut van het Framework te begrijpen, is het handig te weten wat een programma eigenlijk is. Programma’s die gebruikmaken van het .Net Framework, of in het geheel ‘op het .Net Framework gebouwd zijn’ zijn geschreven in een programmeertaal. Een programmeertaal, is niets anders dan een set van opdrachten (meestal in het Engels) die door de CLI uiteindelijk begrepen kunnen worden, en die gezamenlijk een actie kunnen uitvoeren. Een programmeertaal heeft een andere syntaxis, semantiek en grammatica dan natuurlijke talen. Een programma, (of: toepassing/applicatie) is een ‘gecompileerde’ versie van een set van documenten die programmeercode bevatten. Een programma is niet alleen waar u als eindgebruiker mee werkt, maar een programma kan ook een procedure zijn, die bijvoorbeeld door een vaatwasautomaat gevolgd wordt. 2.1
Programmeertalen voor computerprogramma’s
Er is een groot scala programmeertalen dat gebruikt wordt, en dat wereldwijd ingezet wordt om computerprogramma’s te bouwen. Het voornaamste verschil in deze talen is het platform waar zij voor- en op werken. Een aantal voorbeelden van programmeertalen zijn C++, C# (fonetisch: ‘sie-sharp’), Visual Basic, Java, Pascal, PHP enz. Deze talen zijn beschikbaar voor een of meerdere besturingssystemen en platformen, en stellen hier ook eisen aan. De talen die door het .Net Framework ondersteund worden, zijn C++, C#, J# en Visual Basic. Zij stellen de aanwezigheid van het .Net Framework als eis, en verschillen voornamelijk qua moeilijkheidsgraad. Ze zijn dan ook bovenstaand in aflopende volgorde van moeilijkheid genoteerd. Om een aantal voorbeelden van verschillen te demonstreren staat hieronder een voorbeeld van een simpel stukje programmacode dat hetzelfde doet: een meegegeven getal met 2 vermenigvuldigd. De verschillen in syntaxis en semantiek zijn duidelijk te zien.
December/januari 2008
Pagina 8 van 30
Microsoft .Net Framework
int functie(int param) { int res; res = param * 2; return(res); }
Barry A. Postma
Public int functie(int param) { int res = param * 2; return res; }
C++
C#
Public int functie(int param) { int res; res = param * 2; return(res); };
Public Function functie(ByVal _ param as Integer) as Integer dim res As Integer res = param * 2 return res End Function
J#
Visual Basic
2.2
De compiler
Elke programmeertaal heeft een zogenaamde ‘Compiler’. Dit is een programma dat de geschreven code om kan zetten naar een uitvoerbaar bestand. De compiler leest de bestanden met programmacode in en voegt dit samen in een ‘Executable’. Dit is vaak te herkennen aan de bestandsextensie ‘.exe’. Executable betekent ‘uitvoerbaar’ en dit impliceert dat bestanden zonder de hulp van een programma kunnen worden geopend: ze zijn zélf een programma. De compiler voegt tevens de gebruikte referenties naar functies, klassen, namespaces en API’s samen uit de Base Class Library, en voegt dit bij de verwerkte (‘geparsete’) programmeercode. Dit geheel wordt samen het uitvoerbare (executable) bestand. De code die in het uitvoerbare bestand staat, is in de zogenaamde MSIL taal. MSIL staat voor “Microsoft Intermediate Language” en is een taal die door een volgende compiler gelezen kan worden: de JIT compiler. De exacte werking en stappen die de compiler doorloopt zijn ook erg van belang voor het begrijpen hoé een programma tot stand komt, echter past dit niet in het kader van dit document. 2.3
Gelaagde programma’s
De tijd van programma’s die uit één onderdeel bestaan is al sinds de Windows introductie voorbij. Een programma heeft vaak alleen al meerdere schermen: een voor de instellingen, om het bestand op te slaan, om te printen enzovoort. Dit geeft al aanleiding om binnen de ontwikkelomgeving van het programma een hiërarchische indeling te creëren. De functionaliteit van veel programma’s bestaat uit de presentatie van gegevens. Dit is waar de toepassing van verschillende lagen er bij komt kijken. 2.3.1
Één laag: de stand-alone toepassing
Als een programma uit slechts één laag bestaat, noemen we dit een stand-alone programma. Vaak – maar niet altijd – hoeven deze programma’s ook niet geïnstalleerd te worden voor het gebruik. Een stand-alone toepassing is een programma dat al zijn functionaliteit zelf bezit en geen externe bronnen nodig heeft. De rekenmachine zoals deze in Windows zit, is een voorbeeld van een stand-alone applicatie.
December/januari 2008
Pagina 9 van 30
Microsoft .Net Framework
2.3.2
Barry A. Postma
Twee lagen: client/server toepassingen
In de jaren tachtig en negentig kwam de term client/server in opkomst. De client (cliënt) is vaak een computer die op zichzelf werkt, waarop een client toepassing is geïnstalleerd. De client kan zonder een andere (hoofd)computer niets beginnen. Deze computer – de server – zorgt voor de opslag van bijvoorbeeld gegevens. Zodra de client gegevens nodig heeft, worden deze uit de server ingeladen. Binnen bedrijven kan op deze manier op elk bureau door een computer met de client toepassing, centraal de gegevens worden opgeslagen. Zodra iemand d.m.v. de client gegevens bewerkt, kan elke client de geüpdate gegevens opvragen. 2.3.3
Drie lagen: client/presentatie, business logica/proces, data/server
Een drie lagen structuur bestaat, net als de twee lagen toepassingen, uit een client die de gegevens presenteert, en een server of opslagbron. Echter is er één verschil: tussen de client en de server bevindt zich een extra laag die gegevens op een bepaalde manier verwerkt. Dit is meestal in de praktijk een business proces of een business logica. Dit houdt vaak in, dat er een systeem is dat gegevens verwerkt of herberekend voordat ze worden opgeslagen. Een soort wachtrij waarin tijdens het wachten, de gegevens verwerkt worden. Naast extra verwerking, of manipulatie van de gegevens is het bijhouden van een simpel logboek ook een voorbeeld van de acties in een businesslaag. Een logboek kan alle verkeer tussen de clients en de server bijhouden, dit betreft niet alleen het juist functionerende, maar ook fouten die optreden. Voordeel hiervan is, dat de ontwikkelaar van programma’s snel kunnen terugzien in de logs waar of waardoor de fout is opgetreden, en het zo snel kunnen oplossen. 2.3.4
N-Lagen: een N-tier applicatie
De term n-tier (spreek uit: ‘en-tijer’), beschrijft een uitbreiding op de hiervoor beschreven structuren. In de praktijk noemen we iets een n-tier applicatie als deze meer dan 3 lagen bevat. We vinden in een n-tier model vaak nog tussen de business en de server/data laag een data-access laag. Deze kan bijvoorbeeld alleen rekenregels of modificatieroutines bevatten. Ook kan er naast de client die voor de medewerkers in het bedrijf beschikbaar is, een webinterface zijn die de klanten online kunnen bezoeken, en waar zij hun gegevens kunnen inzien. 3.0
Toepassing en praktijk-werkingsproces van het .Net Framework
In paragraaf 1.2 zijn al een aantal begrippen aan de orde gekomen en beknopt uitgelegd. Nu we het eerste gedeelte uitgelegd hebben: hoe van programmeercode een programma wordt gemaakt (d.m.v. de compiler), gaan we verder met de essentie van het Framework in dit plaatje. Nu er een programma is, moet deze nog uitgevoerd worden, en dát is nu waar het .Net Framework voor zorgt. Nadat een programma gecompileerd is, heeft het op het moment van het uivoeren (het programma wordt gestart) het .Net Framework nodig. Dit is, omdat de basisfunctionaliteit (dus nog niet eens bijzondere werking van het programma) een aantal basiselementen uit het Framework nodig heeft. De belangrijkste zijn de CLI en de CLR.
December/januari 2008
Pagina 10 van 30
Microsoft .Net Framework
3.1
Barry A. Postma
CLI: Common Language Infrastructure
De Common Language Infrastructure is een algemene beschrijving waar de programmeertalen onder vallen die genoemd zijn onder paragraaf 2.1. De algemene syntaxis, semantiek en grammatica is vastgelegd onder een internationale standaard. Deze is vastgelegd bij het ECMA (een internationaal standaardisatie instituut) onder nummer ECMA-335. De CLI bestaat in de praktijk uit twee onderdelen, en valt uiteen in de “Common Intermediate Language” (CIL) en “Common Language Runtime” (de al eerdergenoemde CLR). Rechts is in de afbeelding te zien hoe de structuur ongeveer in elkaar zit. 3.1.1
CIL: Common Intermediate Language
Zoals op het punt waar de pijlen samenkomen te zien is, is de programmeercode gecompileerd en wordt het (bij het uitvoeren ervan) door de CLI afgehandeld. In het eerste gele blokje, rechts, kunt u lezen dat .Net programma’s in een tweede taal worden gecompileerd, nadat ze al door de 1e compiler gecompileerd zijn. Dit is de zogenaamde JIT compiler. JIT staat voor “Just In Time” en geeft aan dat hij ‘net op tijd’ is voordat het door de computer moet worden uitgevoerd. Hetgeen wat uit deze 2e compiler voortkomt, is een platformonafhankelijke taal, en is de ‘laagste’ leesbare taal voor mensen. Met ‘laagste’ wordt bedoeld, dat het nog net niet binair (0100110) is. 3.1.2
CLR: Common Language Runtime
De CLR zegt qua naam al iets: “Runtime” – “uitvoertijd”. De CLR zorgt ervoor dat de door de JIT compiler gecreëerde code omgezet wordt naar Binair. Dit zijn de welbekende ‘eentjes-en-nulletjes’ die door de computer gelezen kunnen worden. De CLR kan samen met het besturingssysteem de code doorgeven en uit laten voeren door de processor. Ten slotte is er dan nog de HAL (misschien wel bekend van het bestand hall.dll in Windows). HAL staat voor “Hardware Abstraction Layer” of in het Nederlands: “Hardware abstractie laag”. Deze kan de interactie met de hardware in de computer verzorgen en zorgt bijvoorbeeld voor de communicatie tussen de geluidskaart en de computer. Echter past de exacte (tevens zeer ingewikkelde) werking van de HAL niet in het kader van het Microsoft .Net Framework. Het verloop van de werking is onderstaand schematisch weergegeven: Programmeertaal › Compiler › CLI { CIL › CLR } ›
December/januari 2008
via besturingssysteem
HAL › Processor (0110)
Pagina 11 van 30
Microsoft .Net Framework
Barry A. Postma
Intermezzo: interview Luca Bolognese, Microsoft Kunt u uzelf introduceren? Wat is uw huidige rol bij Microsoft en wat deed u hiervoor?
Ik ben Lead Program Manager in het C#.Net team. Mijn team is verantwoordelijk voor de C#-taal, compiler, ontwikkelomgeving (IDE) en een nieuw framework onder de naam DLinq. Tevens ben ik verantwoordelijk voor het LINQ-Project. In dit project zorgen we voor de integratie van Queries uit allerlei gegevensbronnen in .Net programmeertalen. Voordat ik bij Microsoft in dienst trad, was ik een softwarearchitect voor een grote Italiaanse maatschappij. Wat bevalt u het meeste aan uw huidige rol en waarom?
Er zijn veel aspecten die mijn werk leuk en interessant maken, zoals de mogelijkheid om een impact te bewerkstelligen op het werk van miljoenen programmeurs. Verder krijg ik de kans om aan innovatieve zaken te werken en werk ik samen met een stel fantastische mensen. Hoe worden C# en Visual Basic binnen Microsoft bekeken? Zullen in de toekomst alle Microsoft programma’s hierin ontwikkeld worden?
Het .Net platform wordt erg gewaardeerd binnen Microsoft. Er zijn al heel veel producten die momenteel ontwikkeld zijn of worden met deze programmeertalen. Maar ik denk niet dat we ooit tot een punt komen dat alle programma’s in C# of VB geschreven worden. Mensen hebben nu eenmaal hun eigen voorkeuren als het gaat om programmeertalen. Vindt u C# moeilijker te leren dan Visual Basic.Net? Wat zou u adviseren aan mensen die geen of beperkte programmeerervaring hebben. Hebt u misschien wat tips?
Persoonlijk vind ik zowel Visual Basic.Net als C# even eenvoudig om te leren. Ik denk dat het belangrijkste is dat mensen leren wat objectoriëntatie is. Dit concept is essentieel voor alle moderne programmeertalen. Hoe ziet u de toekomst van .Net?
We werken momenteel erg hard aan LINQ en dat is een bijzonder interessant project. Het is moeilijk om te voorspellen wat hierna komt. The sky is the limit. 4.0
Wat biedt het .Net Framework nog meer?
We hebben voorgaand de exacte werking van het Framework besproken, maar na al deze abstracte taal is het verstandig om meer concrete, praktische onderdelen te behandelen. Het is belangrijk te weten wat .Net nog meer biedt, naast zijn verwerkingsfunctionaliteit. Het belangrijkste waar we mee gaan beginnen zijn de controls, en de IDE. Naast de al veel ingebouwde API’s en functies, zijn er een aantal voorgebouwde ‘controls’. Een control is een element dat te gebruiken is binnen een programma, bijvoorbeeld een tekstvak, een knop, een selectierondje enz. Er zijn in de nieuwste versie ook al ingebouwde controls die veel werk van de gebruiker kunnen overnemen. Voorbeelden hiervan zijn tabellen op webpagina’s, waarmee je met één druk op de knop gegevens in een databank kan bijwerken, zonder een regel code te hoeven schrijven. Een mooi voorbeeld hiervan is Phidgets. Dit is een bedrijf dat elektronica producten verkoopt die via USB aangesloten kunnen worden. Normaalgesproken moet je, om met een apparaat – of randapparatuur – te kunnen communiceren erg veel code schrijven. Met onderdelen van Phidgets, bestaande uit LED Displays, sliders, draaiknoppen, December/januari 2008
Pagina 12 van 30
Microsoft .Net Framework
Barry A. Postma
infrarood sensoren enz. kun je met slechts 10 regels code communiceren met deze apparaten. Dit is dankzij de door Phidgets gemaakte API’s, die je in de programmeercode kunt aanroepen, en deze zorgen ervoor dat het geheel met de USB apparatuur communiceert. 4.1
IDE: Integrated Development Environment
Programma’s en programmeercode moeten natuurlijk ook ergens mee geschreven worden. Een conveniërende tekst-editor (tekstverwerker) als Microsoft Word, of WordPerfect is niet geschikt. Sterker nog, ze zijn té toereikend wat betreft document opmaak, en zullen dan ook tussen de getypte tekst opmaakinformatie over lettertype, kleur, tekstgrootte enz. opslaan. Deze gegevens zijn voor de compiler, die alle tekstbestanden zal gaan parsen (verwerken) niet leesbaar, en hij zal ze dan ook niet goedkeuren als correcte programmeercode. Wat je nodig hebt is een tekst-editor die geen opmaakinformatie opslaat, maar die slechts ruwe tekst opslaat. Een programma dat het goed zou kunnen doen is bijvoorbeeld het in Windows standaard ingebouwde programma kladblok. Het nadeel hiervan is, dat je steeds moet opslaan en bekijken of, datgene dat je getypt hebt, wel naar wens en behoren werkt. Gelukkig zijn er uitgebreide ontwikkelingsprogramma’s beschikbaar, en dit worden ontwikkelomgevingen genoemd. Vandaar de naam ‘Development Environment’. Meestal zijn deze ontwikkelomgevingen in softwarepakketten te verkrijgen die niet alleen ondersteuning bieden voor het programmeren, maar ook om grafische ontwerpen (bijvoorbeeld voor websites) te maken, stukjes vaak gebruikte code op te slaan (snippets) en om bij het project horende bestanden te beheren en te kunnen bijhouden. Zo’n pakket van meerde programma’s, of soms zelfs één groot programma, noem je een studio. Een aantal voorbeelden hiervan zijn Microsoft Visual Studio, Microsoft Expression Studio, Adobe Creative Suite, Netbeans IDE, Eclipse enz. Het voordeel van deze studio’s is dat je goed overzicht over je project hebt, en de ingebouwde tekst-editors vaak zeer uitgebreid zijn. Er is een vijftal hulpmiddelen in de studio van Microsoft ingebouwd: Microsoft Visual Studio. I)
Intellisense Een ondersteuning waarbij tijdens het typen een vak verschijnt met instructies die aan het reeds ingetypte gelijk zijn. Zo kan bij het intypen van “p” een lijst tevoorschijn komen met “Public”, “Private”, “Protected”, “ProgressBar” etc. Door met de pijltjestoetsen het gewenste woord te kiezen, en op tab te drukken, voegt hij dit automatisch in. Dit vermindert het typewerk, en versnelt de productiviteit van de programmeur.
II)
Leesbaarheidsopmaak Door het inspringen en kleuren van teksten wordt de programmacode beter leesbaar. Als bepaalde routines in elkaar vallen, zijn deze beter te onderscheiden. Zo is ook goed zichtbaar wanneer iets een door de programmeur opgegeven naam is, of een ingebouwd type of sleutelwoord. Zie de afbeelding rechts.
December/januari 2008
Pagina 13 van 30
Microsoft .Net Framework
III)
IV)
V)
Barry A. Postma
Foutmarkering Zoals we in Word gewend zijn, worden fouten met een rode golflijn onderstreept, als er syntaxisfouten zijn. Na het compileren van het programma geven blauwe lijnen instructiefouten aan. Code snippets Je kunt eenvoudigweg in de code rechtstreeks, reeds opgeslagen stukjes code invoegen. Dit noemen we snippets. Deze snippets kunnen om een bestaand stuk tekst heen worden ingevoegd, of als vervanging ervan. Refactoring Refactoring is een intelligent systeem die de programmeur helpt met het verplaatsen van blokken code naar een ander plaats binnen het bestand, of naar een nieuw aan te maken bestand. Ook kunnen bijvoorbeeld achter elkaar geschreven opdrachten (procedurele code) om worden gezet naar een functie die aangeroepen kan worden (object georiënteerd). Een ander onderdeel van refactoring is tevens in bovenstaande afbeelding te zien: regelnummering. Vaak zal de compiler aangeven op welk regelnummer een fout zit, dit is eenvoudig op te sporen. Ten slotte biedt refactoring de mogelijkheid programmeertalen om te zetten, als bijvoorbeeld Visual Basic.Net naar C# of andersom.
4.2
Webdevelopment met .Net
Het Microsoft .Net Framework is niet alleen geschikt voor het maken van Windows programma’s of services. Ook kan het gebruikt worden om webapplicaties en websites te bouwen. Als een website met .Net gemaakt is, is dit te herkennen aan de bestandsextensie in de adresbalk. Vaak eindigen pagina’s op “.html” of “.php”. Websites die op het .Net Framework draaien zijn te herkennen aan de extensie “.asp” of “.aspx”. ASP staat voor Active Server Page en dat is tevens de naam van het systeem waarmee websites kunnen worden ontwikkeld. De nieuwste versie word ASP.Net genoemd, vanwege zijn volledige integratie met het .Net Framework. Het mooie van ASP.Net is, dat het universeel inzetbaar is, dat wil zeggen, dat het voor persoonlijke websites, tot uitgebreide webwinkels dienstdoende is. Bovendien werkt het op het robuuste, stabiele platform van .Net. Dit heeft nog als extra conveniëntie dat het van de mogelijkheden van .Net gebruik kan maken. Zo is het bijvoorbeeld vrij simpel acties op de webserver (de computer waarop de website actief is) uit te voeren, met dezelfde simpelheid als dat dit zou zijn gebeurd met een Windows programma. Er kleeft wel een nadeel aan ASP.Net websites. Een vrij groot nadeel, en dat is dat de webserver een Windows besturingssysteem moet hebben draaien, en het niet op een Linux of Unix gebaseerde server werkt. 4.2.1
ASP.Net en AJAX
Het mooie van ASP.Net is dat het met de ingebouwde functionaliteit, de website voor de programmeur bouwt. In de broncode maakt de programmeur gebruik van de ingebouwde ASP.Net elementen, als bijvoorbeeld een kalender. ASP zet het geheel om in elementen die door alle webbrowsers ondersteund zijn, met de dus beperktere technieken. December/januari 2008
Pagina 14 van 30
Microsoft .Net Framework
Barry A. Postma
AJAX is een van de mooiste extensies van ASP.Net. AJAX staat voor Asynchronous JavaScript and XML. Het is een techniek waarmee gedeelten van een pagina ververst kunnen worden, zonder dat de gehele pagina opnieuw hoeft te worden ingeladen. Dit is met andere webprogrammeertalen ook te bereiken, maar dit is zeer gecompliceerd, en vereist veel programmeerwerk. Dankzij de zogenaamde “AJAX Control Toolkit” kan je met een simpel component op de webpagina geavanceerde resultaten bereiken. Denk maar eens aan een formulier: u bent vergeten het telefoonnummer in te voeren. Dankzij AJAX bestaat de mogelijkheid per direct een tekst als “U bent vergeten het telefoonnummer in te voeren” te laten verschijnen, zonder dat de gehele pagina opnieuw dient te worden ingeladen. Een ander mooi voorbeeld van AJAX is een 2e hands auto website. Na het kiezen van het merk, wordt in het tweede keuzevak alle types weergegeven van alleen dat merk, waarna in het derde vak de kleur wordt weergegeven, die alleen voor dat type, van dat merk beschikbaar is. 4.3
ADO.net: ActiveX Data Objects
4.3.1
SQL Server
Bij bijna elk computerprogramma moeten gegevens worden opgeslagen. Dit varieert van gebruikersinstellingen als vensterposities en laatst geopende documenten (MRU-items), tot in het programma zelf gemaakte documenten, lijsten en bestanden. Een goed opslagmiddel is een database (Nederlands: databank). Een database is een set – een bank – van tabellen die eventueel onderling gekoppeld zijn. Deze tabellen kunnen allerlei gegevens bevatten en teruggeven. Van bijvoorbeeld een tabel met leden van een voetbalclub, kan eenvoudig opgevraagd worden wie er allemaal in Amsterdam wonen. Dit wordt gedaan met zogenaamde SQL commando’s. SQL staat voor ‘Structured Query Language’ en betekent letterlijk ‘gestructureerde bevraag taal’. Met deze ietwat simpele programmeertaal, kunnen geavanceerde data structuren uit een stel tabellen worden opgehaald. Een simpel voorbeeld is onderstaand weergegeven. Tabel: ‘Ledenlijst’ Naam Woonplaats Peter de Groot
Amsterdam
Rene Groen
Utrecht
Jan van den Akker
Amsterdam
Tabel leden voetbalclub
SELECT Naam, Woonplaats
Tabel: ‘Ledenlijst’
FROM Ledenlijst
Naam
Woonplaats
WHERE Woonplaats = ‘Amsterdam’
Peter de Groot
Amsterdam
Jan van den Akker
Amsterdam
Query OK: returning 2 rows
SQL vraag om alle leden uit Amsterdam te tonen
Resulterende tabel van de vraag aan de database
Deze techniek is natuurlijk zeer eenvoudig, maar moet ook uitgevoerd kunnen worden. Hiervoor hebben we een Database Management System (DBMS) nodig. Dit is een soort computerprogramma dat het beheer over de databases regelt. Het programma bevat een December/januari 2008
Pagina 15 van 30
Microsoft .Net Framework
Barry A. Postma
zogenaamde opslagmotor om de gegevens in de tabellen te kunnen bewerken, en heeft ook een SQL instructie parser, die de binnenkomende SQL vragen kan verwerken, en zo nodig een resultaat teruggeeft. Een goed voorbeeld van een dergelijk DBMS is Microsoft SQL Server. Dit is een server programma dat zowel tegen betaling, als gratis beschikbaar is. De gratis versie is uitstekend voor hobbyisten en ontwikkelaars, waartegen de Enterprise versie voor bedrijven bedoeld is. Deze biedt meer mogelijkheden, bijvoorbeeld Back-up mogelijkheden en profiling & monitoring. Nog een voorbeeld van een SQL server is MySQL server; tevens beschikbaar in een gratis- en betaalde versie. 4.3.2
ADO.Net
Een bovengenoemde database is zeer handig, en kan ook op kleinere schaal in Microsoft Access gebruikt worden. Access is onderdeel van het Microsoft Office pakket, en wordt meestal meegeleverd met Word, Excel, PowerPoint etc. Naast deze handige functionaliteit heb je zeer weinig aan een database als je constant zelf de SQL instructies moet schrijven, en kun je er weinig overzicht in houden. Een programma dat met de database communiceert, zal dus erg van pas komen. Dit is aan de programmeur/software ontwikkelaar om te maken, maar ook hier komen we het oude probleem tegen: “hoe moet het programma met de database communiceren?”. Zoals al eerder in een voorbeeld genoemd, houdt de maker van een tekstverwerker zich ook niet bezig met de wijze waarop gegevens naar een printer worden verstuurd, dat lossen de API’s uit de Base Class Library voor hem op. Parallel aan de BCL ligt ADO.net. Dit is een losstaande bibliotheek met API’s en technieken, die ontwikkelaars helpt, met databronnen (Datasources) als bijvoorbeeld een SQL Database, te communiceren. ADO.net biedt een aantal voorgebouwde componenten die door de ontwikkelaar programmatisch, maar ook visueel kunnen worden gebruikt. Een schematisch van ADO.Net staat hieronder, en zal nader worden uitgelegd.
DataProvider Connection Transaction Command Parameters DataReader
DataSet TableAdapter SelectCommand InsertCommand
DataTableCollection DataTable DataRowCollection DataColumnCollection
UpdateCommand
ConstraintCollection
DeleteCommand DataRelationCollection
Database
December/januari 2008
Pagina 16 van 30
Microsoft .Net Framework
Barry A. Postma
4.3.2.1 ADO.Net Data Provider De Data Provider is de aanbieder van de data. Beschouw het als de maatschappij die uw TV aansluiting verzorgt. Over deze ene TV aansluiting kunnen meerdere zenders binnenkomen, namelijk door middel van DataSets. Meer hierover in paragraaf 4.3.2.2. De Data Provider biedt allereerst een ‘Connection Class’. Dit is een programmeertechnische set van programmacode die de communicatie tussen het programma en de database (Het DBMS) verzorgt. Over deze connectie kunnen commando’s naar, en gegevens van de database worden verzonden. Daarnaast is er een ‘Command Class’. Een set van commando’s die, de in SQL taal geschreven commando’s, naar de database verzendt. Deze retourneert ook eventueel opgehaalde gegevens dit verloopt via de Connection Class. Geïntegreerd in de Command Class, bevind zich de ‘Parameter Class’. Deze biedt de mogelijkheid parameters mee te geven aan een SQL vraag. Zo kan een bepaalde voorwaarde waarop gezocht moet worden verschillen: er kan gezocht worden op leden van de voetbalclub die in Amsterdam wonen, maar ook in Utrecht of Haarlem. Een parameter is (een) variabel(e), en kan dus ten tijde van uitvoering van het SQL commando opgegeven worden. Ten slotte bevat de Data Provider nog de Data Adapter en de Data Reader. De Data Adapter is een brug tussen de communicatie met de database, en de DataSets. Voor het gebruik van een DataSet is een Data Adapter een vereiste. Wat betreft de Data Reader, is het een versimpelde versie van een DataSet. Een Data Reader biedt niet dezelfde functionaliteit, deze kan slechts door alle gegevens, van boven naar beneden heen lezen (‘itereren’), en de resultaten teruggeven. Dit kan voordelen hebben, omdat het sneller is, maar heeft wat betreft bewerkingsmogelijkheden toch veel nadelen. 4.3.2.2 ADO.Net DataSets Een DataSet is een instantiatie (een soort kopie, binnen Tabel het programmeurs jargon) van de database. Hieruit kan Rij op alle plaatsen binnen de instantie gegevens worden Rij opgevraagd en opgeslagen. Het is een tijdelijk Rij opgeslagen kopie van de database. We zeggen ook wel ‘gecachete instantie’, omdat hij in een tijdelijk ‘cache’ geheugen zit.
Kolom
Kolom
Cel
Datasets worden op dankzij de geassocieerde Data Provider behandeld alsof ze een echte database zijn. Omdat ze een letterlijke kopie van een database zijn, kunnen er op applicatieniveau enorm veel acties worden uitgevoerd alvorens deze definitief in de database worden opgeslagen. De DataSet vergelijkt zichzelf namelijk met het bestaande datamodel en de eventueel voorkomende wijzigingen. Er wordt dus een instantie gemaakt welke niet alleen zijn staat na aangebrachte wijzigingen ‘onthoudt’, maar ook het stadium met gegevens op het moment van instantiatie. Zodra de gegevens moeten worden opgeslagen, wordt gekeken of er tijdens het bewerken (het moment van instantiatie) en het opslaan (het moment van synchronisatie na de bewerking door de gebruiker) ook wijzigingen in de database zelf zijn opgetreden. In dat geval zal de programmeur de gebruiker een waarschuwing moeten geven. Dit systeem wordt ‘optimistische concurrentie’ genoemd, en is een zeer veilig systeem voor gebruik in bijvoorbeeld bedrijven. Als meerdere personen dezelfde klant aan het bijwerken zijn, dan December/januari 2008
Pagina 17 van 30
Microsoft .Net Framework
Barry A. Postma
wordt de laatste persoon die zijn gegevens weer met de database laat synchroniseren, op de hoogte gesteld van onjuiste brongegevens. Deze zijn immers gewijzigd sinds de instantiatie door een andere gebruiker. Een dataset bestaat uit een aantal onderdelen, welke ook in de database voorkomen. Deze zijn onderstaand opgesomd: ► Data Table Is een instantie van een tabel in de database. Bestaat uit kolommen en rijen met bijbehorende definities en eigenschappen. ► DataView Is een weergave van de aanwezige gegevens in een tabel. Bijvoorbeeld een ledenlijst waarbij de sortering op achternaam is, alfabetisch, aflopend. ► DataColumn Is een kolom in de aanwezige tabel. Deze kolom heeft een aantal eigenschappen, welke onder andere aangeven of het veld leeg mag zijn, of dat er een getal, tekst of een datum in het veld moet staan. ► DataRow Is een rij in de tabel, welke in elke cel van de rij gegevens heeft staan welke voldoen aan de eisen die de bijbehorende DataColumn specificeren. ► DataRowView Is net als de DataView een bepaalde weergave van een rij. Zo kan een cel waarin een datum is opgegeven worden weergegeven als tekst, of als kalender. ► DataRelation Geeft een onderlinge relatie aan tussen tabellen. Als in tabel 1 de namen van leden staan, en het nummer van een lid nummer 124 is, dan kan in een andere (gerelateerde tabel) bij het nummer 124 het adres (of meerdere adressen) van deze persoon staan. ► Constraint Is een vereiste binnen relationele modellen van tabellen. Als door middel van een DataRelation twee tabellen gekoppeld zijn, en (gebruikmakende van het voorbeeld bij DataRelation) het lid met nummer 124 wordt uit de tabel leden verwijderd, worden ook de gegevens in de tabel met adressen bij nummer 124 verwijderd. Dit wordt dankzij Constraints geregeld, en wordt ‘referentiële data integriteit’ genoemd.
December/januari 2008
Pagina 18 van 30
Microsoft .Net Framework
Barry A. Postma
Intermezzo: statistisch onderzoek Statistisch onderzoek, gebaseerd op een online enquête over 2 forums Algemeen
Het statistisch onderzoek is onderdeel van de Havo Wiskunde lesstof. Om een goed beeld te krijgen van de maatschappelijke gedachte over .Net, en vervolgens een goede conclusie te kunnen trekken, heb ik besloten de resultaten van het onderzoek in dit document te integreren. De hoofdvraag, zoals ook al gesteld in het voorwoord is: “Wat is de algemene houding van men, ten opzichte van het .Net Framework wat betreft de toekomst, met hun gebruik van het Framework als fundament?”. De deelnemers aan het onderzoek waren uitsluitend deze, die zich op enige wijze zich bezig houden met .Net. In totaal hebben 106 mensen deelgenomen aan de enquête. De belangrijkste vragen
De gehele enquête bestond uit 10 vragen waaruit de 5 belangrijkste voor statistische verwerking zijn gehaald. Deze vragen waren: Voor welk platform programmeert u het meeste? Welke talen programmeert u zoal in? Wat is uw gemiddelde ervaringsniveau? Tot welke versie zal de ontwikkeling van het .Net platform door zal gaan? Hoeveel regels code denkt u dat .Net u in werk kan verlichten? De resultaten
Het resultaat op de eerste vraag geeft direct al een passend antwoord bij het .Net Framework: 54% van de mensen programmeert programma’s, waarbij 35% voor het web programmeert. Dit is een redelijke verdeling, aangezien ASP.Net toch iets minder populair is dan andere webtalen. 10% programmeert extensies. Iets dat ook mogelijk is met de nieuwste tools, bijvoorbeeld voor Word of Excel. Op de vraag welke talen men het meeste in programmeert, is een goed verloop van moeilijkheid/functionaliteit zichtbaar. 31 mensen programmeren in C#, waarna VB volgt met 15. Je kunt dit beschouwen als een gedeelde 1e plaats. Verder komt C++ met 12 hoog er uit, en PHP met 23. Echter is PHP geen .Net taal, en is dit niet vreemd op een forum dat PHPHulp.nl heet. Als 3e resultatenset vinden we de ervaringsniveaus. 43% vindt zichzelf gevorderd, en dit komt overeen met de keuze voor een relatief makkelijke taal: Visual Basic. Op de tweede plaats staat met 38% ‘expert’. Deze mensen zullen kiezen voor C# of C++. Iets dat ook uit de vorige vraag blijkt. 12% kwalificeert zich nog als beginner, en slechts 5% als ervaren. Het lijkt alsof men direct van gevorderd naar expert gaat! Na, met behulp van bovenstaande vragen, iets meer over de mensen te weten zijn gekomen, kijken we naar de verwachte versieontwikkeling. Onder de geënquêteerden is er een pessimist welke de hoop na versie 4.5 opgeeft. Maarliefst 22 verwachten een versieontwikkeling welke verder zal gaan dan 6.0, en 15 verwachten een ontwikkeling tussen versie 4.5 en 6.0. Dankzij de vele ingebouwde API’s in het .Net Framework kan de ontwikkeling van veel programma’s beperkt worden. Het is natuurlijk afhankelijk van de omvang van de toepassing die ontwikkeld worden. De schalen waar men uit kon kiezen waren incrementeel verdeeld over de schalen 0 – 50, 50 – 100, 100 – 250, 250 – 500, >500. De meningen hierover waren zeer verdeeld, echter 15 mensen dachten meer dan 500 regels, terwijl gemiddeld 5 personen andere klassen kozen. December/januari 2008
Pagina 19 van 30
Microsoft .Net Framework
4.3.3
Barry A. Postma
LINQ: Language Integrated Query
LINQ (uitspreken als ‘link’) is een relatief nieuwe toevoeging aan het .Net Framework (versie 3.5). LINQ is een techniek gebaseerd op SQL queries. Deze zijn al eerder in het voorbeeld van de Voetbalclub Ledenlijst genoemd. Het is een syntaxis welke geïmplementeerd is in programmeertalen als Visual Basic.Net, C#.Net en C++.Net. Deze syntaxis lijkt ontzettend veel op SQL en is daarom eenvoudig te gebruiken. Het enige verschil is dat LINQ niet alleen op Databases kan worden uitgevoerd (waar het DBMS de taal interpreteert) maar ook op collecties, databronnen en DataSets binnen (ADO).Net. Dit betekent dat er in feite een soort DBMS in de compiler zit ingebouwd die deze acties kan uitvoeren. LINQ is namelijk een nieuwe klassenbibliotheek (API) welke gebruikt kan worden op andere API’s en collecties. LINQ dat voor databases gebruikt wordt, noemen we heel toepasselijk LINQ2SQL en LINQ welke op objecten en collecties wordt toegepast noemen we LINQ2Entities. Naast de functionaliteit om tabellen en collecties uit te kunnen lezen, kan LINQ ook samenwerken met XML. XML staat voor eXtensible Markup Language en is een document waarin de structuur als een boom is opgeslagen. Door middel van LINQ kunnen gegevens uit dit document worden uitgelezen, zonder dat er eerst in het geheel doorheen hoeft worden gelopen. Dit is een belangrijke factor, welke de snelheid van computerprogramma’s en websites flink zal doen stijgen. Omdat LINQ zich nog in een vroeg stadium bevind, en nog niet helemaal uitgewerkt en geperfectioneerd is, zal het in de toekomst ongetwijfeld verder uitgebreid, en ook meer gebruikt worden. 4.4
Omliggende technologieën
Binnen de .Net ontwikkelomgeving maken we onderscheid in een aantal soorten applicaties. Het meest bekende, een “Windows Forms Application” (ook wel: ‘WinForms’) is een programma, welke met de welbekende Windows vensters, dialoogboxen en andere elementen werkt. Ten tweede kennen we een “Console Application”, iets dat vaak meer om de functionaliteit gebruikt wordt, dan gebruiksvriendelijkheid. Dit is namelijk een programma dat draait in een MS-Dos venster. Ten derde kennen we nog de “ASP.Net web application”. Dit is een ASP.Net website, maar wordt ‘application’ genoemd, vanwege de functionaliteit die het biedt: deze is namelijk vrijwel het zelfde als in Forms en Consoles. Er zijn naast deze hoofdtypen, nog kleinere soorten, als databases en schema’s. Meer details hierover, passen niet in het kader van dit document. Echter zijn er een aantal nieuwe technieken ontwikkeld, welke in paragraaf 1.1.3 reeds genoemd werden. Ze zullen hier nader toegelicht worden. 4.4.1
WPF: Windows Presentation Foundation
WPF werd vanaf versie 3.0 van het .Net Framework toegevoegd de mogelijkheden. WPF is een grafisch krachtigere variant op een “Windows Forms Application” en biedt daarom mooiere interfaces (programma uiterlijk) en animatiefunctionaliteit. Vensters kunnen bijvoorbeeld interactief herschaalt worden en visuele effecten produceren, als dynamische schaduwen en transparantie. WPF biedt tevens een nieuw programmeermodel voor het opmaken van de programma’s December/januari 2008
Pagina 20 van 30
Microsoft .Net Framework
Barry A. Postma
en de interfaces. Dit is ‘XAML’ genaamd (spreek uit: ‘kszammel’). XAML betekent “eXtensible Application Markup Language” en is een variant op XML. Met dezelfde syntaxis en semantiek kunnen door de programmeur geavanceerde effecten bereikt worden. WPF zal waarschijnlijk de nieuwe standaard worden, en de plaats van Windows Forms vervangen. Dit is ook een reden waarom het standaard al met .Net 3.0 geleverd is op Windows Vista en Windows Server 2008. Tevens is er van WPF een web gebaseerde versie beschikbaar. Het biedt ongeveer dezelfde functionaliteit als Adobe (voorheen Macromedia) Flash (player) en Shockwave Player. Deze zogenaamde “browser add-on” word Microsoft Silverlight genoemd, en wordt door Microsoft zelf al ruimschoots op hun website gebruikt. 4.4.2
WCF: Windows Communication Foundation
Ook vanaf versie 3.0 toegevoegd aan het .Net Framework, WCF is een systeem specifiek gericht op netwerkcommunicatie. Dankzij extra toegevoegde API’s biedt het de mogelijkheid aan ontwikkelaars om op een eenvoudige manier computers met elkaar te laten communiceren. Iets dat voorheen, ook veel lastiger was, omdat dit via de ingebouwde functionaliteit van Windows zelf geregeld moest worden (via de Win23 API). Via de handige API’s, Classes en Namespaces is het eenvoudig via zogenaamde services (programma’s die vrijwel altijd op de achtergrond actief zijn) tussen meerdere computers te communiceren. Dit gaat via de zogenaamde RPC: “Remote Procedure Call”. Met WCF wordt er een service gestart, met zogenaamde “endpoints”. Dit zijn de (weliswaar abstracte) punten waar de cliëntcomputers mee verbinden. WCF is niet een nieuw(e) applicatievorm/applicatietype in tegenstelling tot WPF. 4.4.3
(W)WF: (Windows) Workflow Foundation
Zoals de naam al zegt: werkvloer. WWF (of: WF) is een nieuwe technologie waarop digitale werkvloeren gemaakt en gemanaged kunnen worden. Voorbeelden van Microsoft technologieën die hier op werken zijn onder andere: Microsoft SharePoint en Microsoft Office Groove. Ontwikkelaars van programma’s binnen bedrijven, kunnen bijvoorbeeld naast het administratiesysteem dat zij op maat voor dat bedrijf gemaakt hebben, daarnaast een digitale werkvloer voor het personeel maken. Dit houdt onder andere in dat personeel via het internet of netwerk contact kan onderhouden met collega’s, bestanden kan uitwisselen met hun manager, of op zakenreis direct verslag aan het kantoor kunnen doen. Tevens is persoonlijke berichtgeving hier een belangrijk onderdeel van: Een interne vervanger van E-mail om op veilige wijze gegevens binnen het bedrijf uit te wisselen. 4.4.4
Cardspace
Windows Cardspace is een digitaal identiteitssysteem, dat door programma’s en webpagina’s gebruikt kan worden. Omdat mensen via websites meerdere identiteiten (gebruikersnamen en wachtwoorden) kunnen bezitten, zal bij het vragen van een website naar een identiteit, het Windows Cardspace centrum verschijnen. Na het selecteren van een gewenste identiteit, worden deze gegevens aan de website doorgegeven, en wordt de gebruiker ingelogd. Als webontwikkelaar kun je gebruik maken van deze functionaliteit, dankzij ASP.Net. Tevens kunnen ontwikkelaars websitegebruikers in staat stellen identiteiten te maken en tevens te gebruiken.
December/januari 2008
Pagina 21 van 30
Microsoft .Net Framework
5
Barry A. Postma
Hoe nu verder?
Tijdens de ontwikkeling van dit document heeft Microsoft de Release van het Microsoft .Net Framework versie 4.0 aangekondigd. Deze zal onder andere beschikbaar worden voor de opvolger van Windows Vista, namelijk Windows 7 (geplande releasedatum is januari 2010) maar ook voor de oudere versies van Windows. Tegelijk wordt met .Net 4.0 een nieuwe versie van Microsoft Visual Studio uitgegeven, de ontwikkelomgeving van Microsoft voor .Net programma’s, namelijk Microsoft Visual Studio 2010. Ten tijde van dit schrijven is er nog geen additionele informatie beschikbaar.
December/januari 2008
Pagina 22 van 30
Microsoft .Net Framework
Barry A. Postma
Conclusie, nawoord Tot slot rest een beantwoording op de hoofdvraag zoals gesteld in het voorwoord. De hoofdvraag was: “Wat is de werking van het Microsoft .Net Framework?”, een moeilijke vraag die als het goed is reeds beantwoord is over voorgaande pagina’s. Mijn antwoord op deze vraag is dit document op zich. Een mening over het geheel vellen is uiteraard mogelijk, en ik moet dan ook concluderen uit gedaan onderzoek, dat .Net een technologie is welke (misschien vanwege de brede oriëntatie, misschien vanwege de complexiteit) nog niet helemaal ingeburgerd is. Een reden hiervoor kan zijn, dat het door Microsoft ontwikkeld is, en dat schrikt af: men werkt het liefst met gratis, al dan niet open-source software en verwacht misschien wel een grote ondersteunende community. Vergeet natuurlijk niet dat Microsoft ook een ieder in kansen en mogelijkheden wil voorzien om zelf te programmeren, hiervoor zijn niet voor niets de gratis Express editions uitgegeven van Visual Studio. Het feit dat men de (eis van) de aanwezigheid van het .Net Framework als obstakel ziet is een redelijk punt om niet over te gaan op .Net; maar ook hier geldt: vergeet niet dat het grootste gedeelte van de wereldbevolking met Windows werkt! Op bovenstaande sluit mijn oordeel aan wat betreft het statistisch onderzoek. Vanwege verschillende obstakels waar men niet overheen wil stappen – of zich wil zetten – is een reden om een bescheiden oordeel over te toekomst te vellen: toch 46% betwijfelde een voortzetting langer dan 5 jaar, daarbij had 54% wel een positief beeld, en denkt dat het een nieuwe impuls gaat krijgen. In afgelopen document heb ik getracht zo goed en correct mogelijk alle aspecten van dit onderwerp te behandelen. Het feit dat u op deze pagina bent aangekomen betekent min of meer dat u het gehele document gelezen hebt. Voorgaande tekst is een waterval van informatie geweest. Ik verwacht niet van u, noch van mijzelf alle informatie op de correcte manier te kunnen navertellen of uitleggen. Het is een gecompliceerd onderwerp en dat is geen probleem. Het feit dat u als lezer (misschien wel helemaal leek in dit onderwerp) toch bepaalde begrippen hebt onthouden, of misschien in de toekomst alert wordt op kleinigheden die voorgaand uiteen zijn gezet, is al een bewijs van educatie.
Ik wil hierbij mijn dank uitspreken aan alle mensen die mij hebben ondersteund en geholpen dit document tot stand te laten komen. Een aantal mensen welke ik toch wil noemen, zijn Yassine Kessar, K. Sijbrandi, Chris Waltené, Arjen Bos, mijn moeder Tineke voor het ‘proeflezen’ van versie 1.0, alle andere belangstellenden en tip-/adviesgevers.
Barry Alan Postma December/januari 2008/2009
December/januari 2008
Pagina 23 van 30
Microsoft .Net Framework
Barry A. Postma
Appendix A: Ruwe en verwerkte gegevens statistisch onderzoek
Voor welk platform programmeert u het meeste? Er zijn programmeertalen voor verschillende toepassingen. Zo kunnen er voor een programma extensies geschreven worden, maar ook interactieve webpagina's
Applicaties/programma's/toepassingen Web/websites (Programma) extensies
23 15 4
42
December/januari 2008
Pagina 24 van 30
Microsoft .Net Framework
Barry A. Postma
Welke talen programmeert u zoal in? Geeft u a.u.b. antwoorden die van toepassing zijn op het platform dat u bij bovenstaande vraag hebt aangegeven
C/C++ C# Visual Basic (.Net) VBA/VBS (Visual Basic for Applications/scripts Basic/Batch/Power shell Pascal/Fortran XML/XSLT/XPath/XPointer Visual FoxPro XAML (Windows Presentation Foundation) Actionscript/Lingo (T‐)/(W‐) SQL Java/J# Phyton/Ruby on Rails PHP/Perl Anders
12 31 15 7 4 2 14 1 4 5 13 8 3 23 8
150 .Net 7 Anders 8
December/januari 2008
.Net .Net .Net Anders Anders Anders .Net Anders .Net Anders .Net .Net Anders Anders Anders
Pagina 25 van 30
Microsoft .Net Framework
Barry A. Postma
Wat is uw gemiddelde ervaringsniveau?
Beginner Gevorderd Evaren Expert
5 17 2 15
12,82 % 43,59 % 5,13 % 38,46 %
39
100,00 %
December/januari 2008
Pagina 26 van 30
Microsoft .Net Framework
Barry A. Postma
Tot welke versie zal de ontwikkeling van het .Net platform door zal gaan?
F
Cum. F
Rel. Cum. F
4.0 ‐< 4.5 4.5 ‐< 5.0 5.0 ‐< 5.5 5.5 ‐< 6.0 > 6.0
1 7 6 2 22
1 8 14 16 38
2,63 % 21,05 % 36,84 % 42,11 % 100,00 %
December/januari 2008
38 +=
Pagina 27 van 30
Microsoft .Net Framework
Barry A. Postma
Hoeveel regels code denkt u dat .Net u in werk kan verlichten?
F
Cum. F
0 ‐< 50 50 ‐< 100 100 ‐< 250 250 ‐< 500 > 500
6 5 4 5 15
6 11 15 20 35
December/januari 2008
35 +=
Pagina 28 van 30
Microsoft .Net Framework
Barry A. Postma
Appendix B: Bronnenlijst, referenties/disclaimer Bronnenlijst Microsoft Corporation Microsoft Software Developer Network (MSDN) TechNet magazine ASP.Net 2.0 de basis Michiel van Otegem Visual C# 2005 de basis Sander Gerz The Road Ahead William H. “Bill” Gates Wikipedia de vrije encyclopedie
http://www.microsoft.com/net/ http://msdn.microsoft.com/ http://technet.microsoft.com/ http://www.debasis.nl/ ISBN-9: 90-430-1325-0 http://www.debasis.nl/ ISBN-13: 978-90-430-1293-5 ISBN-13: 978-1-4058-7690-2 http://www.wikipedia.org/
De in dit werk afgebeelde werken en/of gebruikte citaten zijn, zonder aanwezigheid van vermelding, in dit document overgenomen van externe bronnen. Ervan uitgaande dat de auteursrechtelijke eigenaar toestemming geeft deze werken voor educatief gebruik te kopiëren/dupliceren. Indien u, de auteursrechtbezitter, of enig eigenaar het niet eens is met de in dit document aangebrachte werken, dient hij of zij contact op te nemen met de auteur zoals op het voorblad gespecificeerd. Niets uit dit werk mag op dezelfde wijze, gewijzigd, weder gepubliceerd worden zonder toestemming van de eigenaar zoals gespecificeerd op het voorblad; deze algemene regel is stilzwijgend vastgelegd en wordt mee akkoord gegaan vanaf het moment van inzage in dit document.
December/januari 2008
Pagina 29 van 30
Microsoft .Net Framework
Barry A. Postma
Appendix C: Logboek werkzaamheden profielwerkstuk zoals vereist door de school Datum 2009-02-10 2009-02-22 2009-01-30
2009-01-23 2009-01-22
2008-12-21
2008-12-18 2008-12-18
2008-12-17
2008-12-16
2008-12-15
2008-12-15 2008-12-02 2008-06-20 2008-06-20 2008-06-19 2008-06-19 2008-06-19
Activiteit Verwerken laatste gegevens statistisch onderzoek Invoegen gegevens Appendix A Afmaken laatste paragrafen en artikelen. Invoegen verduidelijkende illustraties Bijwerken logboek. Email Y. Kessar over Stat. Ond. als bijlage... Verder uitwerken hoofdstuk 4. Invoegen intermezzo Retour versie 1.0 door Y. Kessar. Punten van verbetering besproken Tips presentatie Afgesproken inleveren definitieve versie Documentopmaak maken Voorblad Documentindeling voltooien Inleveren PWS - voorlopige versie 1.0. Aangenomen door Y. Kessar PWS week - donderdag 3e hoofdstuk afgemaakt. Beknopt hoofdstuk 4. Versie 1.0 afgemaakt. Nog geen opmaak. ± Pagina's 8 t/m 10 - Enquête nog 2 dagen geopend PWS week - woensdag Oriëntatie, begin 3e hoofdstuk ± Pagina's 5 t/m 8 - Online publicatie enquête (phphulp.nl) PWS week - dinsdag Start gemaakt, 2e hoofdstuk zo goed als af. ± Pagina's 3 t/m 5 - Online publicatie enquête (gathering.tweakers.net) PWS week - maandag Start gemaakt, 1e hoofdstuk af. ± Pagina's 1 t/m 4 Introductie Dhr. Wolthoff Studiehuis - start PWS week Wiskunde: statistisch onderzoek samengesteld, PHP webenquête formulier gemaakt. Vragen reviseren... Gesprek Arjen Bos (PJ ICT) Uitdiepen subonderwerpen. Gesprek Yassine Kessar. Uitlichten belangrijkste punten, brainstormen Dit logboek gemaakt Overleg K. Sijbrandi Introductie NHL
December/januari 2008
Duur/tijd 3 uur 4 uur
5 uur 1 uur
3 uur
1 uur 5 uur
6 uur
6 uur
6 uur
20 minuten 5 uur 2 uur 1 uur 1 uur 1 uur 1 uur
Pagina 30 van 30