Operativsystem: .............................................................
Operativsystem: .............................................................
Operativsystem: .............................................................
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