26.07.2013 Views

Operativsystem: .............................................................

Operativsystem: .............................................................

Operativsystem: .............................................................

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2. COM klasser anvender meget specifikke og ejendommelige typer som BSTR, VARIANT<br />

osv som ikke passer godt sammen med en bred vifte af sprog<br />

3. COM bygger stadig på programmeringssproget C i høj grad – og er derfor ikke altid lige<br />

Objekt Orienteret!<br />

4. Alle COM klasser skal registreres i Windows System Registrerings Databasen<br />

5. COM har ikke et fælles hjem (mappe) som .NETs Globale Cache.<br />

6. COM klasser allokeres ikke på heapen men i programmets stack<br />

7. COM klasser har ingen meta data og er ikke selv beskrivende<br />

8. COM består af CPU afhængig maskinkode – modsat IL<br />

9. I COM kan der ikke være 2 eller flere DLL filer med samme navn men med forskellige<br />

versioner eller kulturer<br />

10. COM klasser identificeres med en CLSID (en række af HEX tal)<br />

11. Hvis en COM klasse flyttes – bryder systemet sammen og den skal registreres igen<br />

12. COM klasser er svære at bruge i distribuerede systemer/over netværk<br />

13. COM klasser kan ikke køre på noget andet styresystem end Windows<br />

JIT kompiler:<br />

IL koden bliver oversat (kompileret) af en Just In Time kompiler (JIT kompiler) for at programmet<br />

skal kunne køre på denne konkrete maskine. (Akkurat som hvis vi havde haft en Java class fil).<br />

Først nu opstår en EXE fil (maskin kode), der kan fx kan køre i Windows 98 helt konkret. Første<br />

gang dette sker tager det længere tid at opstarte programmet – men hvis samme program køres igen<br />

er maskinkoden (EXE filen) gemt og C# programmet kører – stort set - lige så hurtigt som fx et<br />

C++ program.<br />

IFølge Microsoft vil .NET programmer på længere sigt komme til at køre hurtigere end traditionel<br />

Windows kode (fordi JIT kompileren bedre kan optimere koden) – men ifølge de flestes opfattelse<br />

kører .NET programmer for øjeblikket 5-10 % langsommere!<br />

Man kan producere et ’native image’ af sine C# programmer med ngen, som findes i .NET mappen<br />

i Windows. Teoretisk skulle det producere en ’native’ EXE der så skulle kunne starte jurtigere.<br />

ngen kompilerer koden til almindelig Windows kode.<br />

Microsofts ide er at IL koden skal kunne afvikles på alle platforms også på en Linux eller Mac<br />

maskine. (Dette er allerede implementeret på forsøgsniveau med Linux).<br />

En EXE eller DLL er ikke en EXE eller DLL!<br />

For at alt dette skal kunne lade sig gøre skal Microsofts .NET selvfølgelig installeres på maskinen<br />

(svarende til Javas virtuelle maskine). Når du har kompileret et program i C# og fået en EXE fil<br />

som kører fint på din maskine – kan du prøve at køre EXE filen på din nabos maskine. Du vil så<br />

opdage at resultatet er en sværm af fejl meddelelser!!<br />

Det som ser ud som en ganske ’almindelig’ exe fil på din maskine er i virkeligheden IKKE en<br />

’almindelig’ Windows exe fil – for inde hos naboen (som ikke har .NET) er der intet af det som

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!