Programmering i.NET Farid Naisan, Universitetsadjunkt Datavetenskap, Teknik och samhälle, Malmö högskola Assembly
2 Assembly En assembly definieras som en logisk binär kodmängd. Fysiskt är en assembly EXE eller DLL filer. Assemblyer utgör byggstenar i.NET ramverk applikationer. En assembly kan bestå av en eller flera filer. Kompilerad kod i.NET är i själva verket en assembly trots att den heter EXE eller DLL. Det är stor skillnad mellan dessa och de tidigare EXE och DLL filer.
3.NET assembly En.NET assembly är en självbeskrivande binär, innehållande typer (klasser, gränssnitt, delegater, strukturer och enumeraturer) och eventuellt resurser (bilder, GUI element, etc) som tillsammans bygger en körbar enhet (EXE eller DLL). Komponenter måste paketeras som en assembly (dll) för att kunna användas i andra applikationer. Version av varje komponent är den som gäller för den assembly komponenten finns i.
4 Manifest Varje assemblyfil innehåller information om sig själv. Detta kallas för manifest eller assemblymetadata. Assemblymanifest är en datastruktur som lagrar information om assemblyn i själva assemblyfilen (dll/exe). Informationen består av versions information list av de ingående filer mm
5 Innehåll och mål Assemblyer innehåller nödvändig data till CLR Version Återanvänding Rättigheter Säkerhet Assemblyer har designats för att: underlätta distribution (deployment) av applikationer lösa versionshanterings problem (jmf com-applikationer) lösa DLL-hell problemet
6 Självbeskrivande Metadata (data om data) har komplett information om varje typ som ingår i aktuell modul samt de typer externa moduler som programmet använder sig av. Manifest (assembly metadata, data om assembly) har data om varje modul i assemblyn sätter version för assemblyn dokumenterar även externa moduler som assemblyn använder sig av.
7 ildasm.exe .NET innehåller ett verktyg ildasm.exe som visar metadata och CIL kod skriv: ildasm programNamn.exe vid prompten för att se all information och beskrivning av assemblyn.
8 Beståndsdelar En assembly innehåller följande 5 element som gör att en assembly i.NET blir helt självbeskrivande: Windows file header o win32 header som talar om modulen är användbar i Windows operativ system. o Typ av applikation, konsol, GUI eller dll Assemblymanifest som innehåller typmetadata (CLR kod) – innehåller all data som behövs för att implementera typerna, tex var i filen metadata (dat om typen) och resurserna (GUI-element) finns. CIL kod som är plattformsoberoende kompilerad kod. En del resurser (jpg filer mm).
9 single/multifil assemblyer Delarna kan grupperas i en enda fysisk fil, eller flera fysiska filer. Manifest (Asseblymetadata) Typmetadata IL kod Resurser (bilder mm) SinglefilAssembly.dll
10 Multifil assembly Manifest Typmetadata IL Kod MultiFilAssembly.dll Typmetadata IL Kod Resurser StorFil.jpg GottOchBlandat.netmodule
11 Privata assemblyer Assemblier kan vara privata eller delade Privata assemblyer (Private Asemblies) En assembly som används av endast en applikation kallas för privat assembly. Säg att du har en klientapplikation och du inkapslar din affärslogik (Business Logic) i en dll. Denna dll kan läggas i samma eller i anslutning till den mapp som husar klientapplikationen. Dll:n används endast av klientapplikation Dll:n är då privat till klientapplikationen.
12 Delade assemblier Delade assemblyer (Shared Assemblies) är assemblier som används av eller är tillgängliga till flera klienter. o Säg att du skapar en dll med tjänster som kan användas av olika applikationer. o I stället för att varje klient får sin egen kopia, kan man lägga dll:n på ett ställe då alla klienter kan komma åt. o Det finns en bestämd plats, kallad för ”Global Assembly Cache” eller GAC för delade filer under Windows OS. o GAC finns på din dator under mappen …\Windows\Assembly o Hur installerar man dll:er under GAC? Besök följande länk: o
13 EXE och DLL Skapande och installation av delade assemblyer behandlas i senare delen av kursen då vi också går igenom, versionshantering och säkerhet i.NET. Här beskrivs hur man skapar privata assemblyer och anropar dem i klientprogram. Vad är skillnaden mellan en assembly av typ EXE och en DLL? EXE assemblyn är direkt körbar. DLL assemblyn kan inte köras direkt utan skall köras (helt eller delvis) av klientprogram, dvs andra applikationer.
14 Skapa exe/dll assemblyer För att lösa en uppgift skall man tänka sig ett projekt oavsett vilket utvecklingsverktyg man använder. Ett projekt är en samlig av alla de komponenter (kod, resurser, mm) som tillsammans blir ett program. Om du skapar applikation manuellt, organisera filera i mappar och undermappar. Visual Studio.NET är ett väldigt naturligt val för att utveckla.NET applikationer. Med C# som språk blir är programmerarens liv en ren lycka! VB.NET är en het kandidat också!
15 Skapa en EXE Skriv dina källkods filer, följ gärna följande mönster: En klass som fungerar som entré till programmet o innehållande metoden Main o så lite kod som möjligt En klass för varje objekt o Innehållande en funktion för varje operation - alltså heller många små funktioner än en stor. o Endast privata medlemmar. o Properties (get och set) får åtkomst av data. MainProg.cs Huvudproram fil a.cs för objekt a fil x.cs för objekt x
16 Skapa dll:er Under.NET kallas en dll formellt för en klassbibliotek vilket är väldigt rätt. Man skiljer mellan två typer: Klassbibliotek (Class Library), standard dll:er för allmänt ändamål. Kontrollbibliotek (Control Library) för att skapa egna kontroller. Glöm inte att lägga till referens till de bibliotek (dll:er) som du använder i din applikation. Hur man skapa dessa typer av applikationer i Visual Studio.NET visas på föreläsningen. Se också exempelprojektet på hemsidan.
17 The End