Gemensam språkinfrastruktur
ISO/IEC 23271:2012(E) | |
Förkortning | CLI |
---|---|
Status | Publicerad |
Året började | 2000 |
Först publicerad | 2001 | (Ecma) och 2003 (ISO/IEC)
Senaste versionen |
Sjätte upplagan juni 2012 |
Organisation |
Utvecklad av: Microsoft , Hewlett-Packard , Intel och andra Standardiserad av: Ecma , ISO / IEC |
Utskott | ISO/IEC JTC 1/SC 22 |
Domän | Common Language ( Cross-platform ) |
Licens | RAND |
Hemsida |
ECMA-335 , ISO/IEC 23271 |
Common Language Infrastructure ( CLI ) är en öppen specifikation och teknisk standard som ursprungligen utvecklades av Microsoft och standardiserades av ISO / IEC ( ISO/IEC 23271 ) och Ecma International ( ECMA 335 ) som beskriver körbar kod och en körtidsmiljö som tillåter flera hög- nivåspråk som ska användas på olika datorplattformar utan att skrivas om för specifika arkitekturer. Detta antyder att det är plattformsoberoende. .NET Framework , .NET och Mono är implementeringar av CLI. Metadataformatet används också för att specificera API- definitionerna som exponeras av Windows Runtime .
Översikt
CLI-specifikationen beskriver bland annat följande fyra aspekter:
- The Common Type System (CTS)
- En uppsättning datatyper och operationer som delas av alla CTS-kompatibla programmeringsspråk .
- Metadatainformationen .
- om programstrukturen är språkagnostisk , så att den kan refereras mellan språk och verktyg, vilket gör det enkelt att arbeta med kod skriven på ett språk som utvecklaren inte använder
- Den gemensamma språkspecifikationen (CLS)
- CLI bör överensstämma med den uppsättning basregler som alla språkinriktningar tillämpar, eftersom det språket bör samverka med andra CLS-kompatibla språk. CLS-reglerna är en delmängd av Common Type System.
- Virtual Execution System (VES)
- VES laddar och kör CLI-kompatibla program, med hjälp av metadata för att kombinera separat genererade kodbitar under körning.
Alla kompatibla språk kompileras till Common Intermediate Language (CIL), som är ett mellanspråk som är abstraherat från plattformens hårdvara. När koden exekveras kommer den plattformsspecifika VES-enheten att kompilera CIL till maskinspråket enligt den specifika hårdvaran och operativsystemet.
Standardisering och licensiering
I augusti 2000 arbetade Microsoft , Hewlett-Packard , Intel och andra för att standardisera CLI. I december 2001 ratificerades det av Ecma , med ISO / IEC -standardisering som följde i april 2003.
Microsoft och dess partners har patent för CLI. Ecma och ISO/IEC kräver att alla patent som är nödvändiga för implementering görs tillgängliga under " rimliga och icke-diskriminerande (RAND) villkor ." Det är vanligt att RAND-licensering kräver viss royaltybetalning, vilket kan vara en anledning till oro med Mono . Från och med januari 2013 har varken Microsoft eller dess partners identifierat några patent som är nödvändiga för CLI-implementeringar som omfattas av RAND-villkor.
Från och med juli 2009 lade Microsoft till C# och CLI i listan över specifikationer som Microsoft Community Promise gäller, så vem som helst kan på ett säkert sätt implementera specificerade utgåvor av standarderna utan att frukta en patentprocess från Microsoft. För att implementera CLI-standarden krävs överensstämmelse med en av de stödda och definierade profilerna i standarden, vars minimum är kärnprofilen. Kärnprofilen är faktiskt en mycket liten uppsättning typer att stödja i jämförelse med det välkända kärnbiblioteket med standard .NET-installationer. Emellertid tillåter överensstämmelseklausulen i CLI att utöka profilen som stöds genom att lägga till nya metoder och typer till klasser, samt härleda från nya namnutrymmen. Men det tillåter inte att lägga till nya medlemmar till gränssnitt. Detta innebär att funktionerna i CLI kan användas och utökas, så länge som den överensstämmande profilimplementeringen inte ändrar beteendet hos ett program som är avsett att köras på den profilen, samtidigt som det tillåter ospecificerat beteende från program som är skrivna specifikt för den implementeringen.
2012 publicerade Ecma och ISO/IEC den nya utgåvan av CLI-standarden, som inte omfattas av Community Promise.
Genomföranden
- .NET Framework är Microsofts ursprungliga kommersiella implementering av CLI. Den stöder bara Windows. Den ersattes av .NET i november 2020.
- .NET , tidigare känt som .NET Core, är den fria och öppna källkodsmultiplattformens efterföljare till .NET Framework, släppt under MIT-licensen
- .NET Compact Framework är Microsofts kommersiella implementering av CLI för bärbara enheter och Xbox 360 .
- .NET Micro Framework är en öppen källkodimplementering av CLI för resursbegränsade enheter.
- Mono är en alternativ öppen källkodsimplementering av CLI och tillhörande teknologier, främst för mobil- och spelutveckling.
Se även
Anteckningar
- "Standard ECMA-335, Common Language Infrastructure (CLI)" . Ecma International . Hämtad 31 augusti 2005 .
- "ISO/IEC 23271, Common Language Infrastructure" . ISO/IEC . Hämtad 27 september 2006 .
- "Ecma C# och Common Language Infrastructure Standards" . Microsoft Corporation . Hämtad 13 oktober 2009 .