Attualmente sto cercando di conoscere .NET Platform Standard. Mi sono trovato piuttosto confuso sull'idea di "piattaforme diverse".Quali sono le piattaforme in .NET Platform Standard?
Proverò a chiarire il punto. Quello che attualmente mi riferisco a .NET Framework è che .NET è grosso modo composto da CLR, BCL e software di supporto per avviare il CLR e fornire l'interfaccia tra la macchina virtuale e il sistema operativo sottostante.
Quindi, quando eseguiamo il codice utilizzando .NET Framework, abbiamo effettivamente scelto alcune versioni del framework perché i tipi che utilizziamo dal BCL vengono forniti con il framework e quindi dipendono dalla versione specifica.
Ora, .NET Core è molto diverso come ho capito. Non è tutto imballato insieme in quel modo. Abbiamo il CoreCLR che è una VM leggera per eseguire IL, il CoreFX che sono le librerie opportunamente organizzate come pacchetti NuGet e avevamo fino ad ora il DNX/DNVM/DNU che forniva le cose di supporto come l'avvio del CoreCLR e l'interfacciamento con il OS.
In ogni caso, nonostante installiamo il framework su Windows 7, Windows 8 o Windows 10, codifichiamo rispetto al framework.
Ora, sulla spec .NET Platform Standard vediamo la seguente definizione:
piattaforma - per esempio .NET Framework 4.5, .NET Framework 4.6, Windows Phone 8.1, MonoTouch, UWP, ecc
Inoltre vediamo dopo che un elenco di piattaforme, che include
- .NET Framework 2,0-4,6
- Windows 8
- Windows Phone 8.1
- Silverlight 4, 5
- DNX su .NET Framework 4.5.1 - 4.6
- DNX su .NET Core 5.0
Ora questo mi confonde completamente. Ho sempre pensato: abbiamo codice contro .NET Framework e il framework è il framework, non importa cosa.
Ma qui abbiamo queste piattaforme che includono il framework .NET come solo una delle molte piattaforme. Abbiamo ad esempio Windows 8, ma aspetta un minuto, l'esecuzione di .NET su Windows 8 non è la stessa cosa che eseguire .NET su qualsiasi altro sistema operativo? Perché è separato dalla piattaforma .NET Framework 2.0 - 4.6?
Abbiamo anche DNX come piattaforma specifica. Questo mi fa meravigliare: la piattaforma è quella "roba di supporto" relativa all'avvio della macchina virtuale e alla fornitura dell'interfaccia con il sistema operativo? O la piattaforma include la macchina virtuale?
In ogni caso, come si può vedere, sono abbastanza confuso. Quali sono effettivamente queste piattaforme e in che modo si riferisce alla mia attuale conoscenza di .NET Framework? Inoltre, perché .NET Framework 2.0 - 4.6 è descritto separatamente? Non è il tutto descritto qui qualche versione di .NET Framework a meno di .NET Core?
Non c'è * "macchina virtuale" * in .NET. – IInspectable
@Impostabile http://blogs.msdn.com/b/brada/archive/2005/01/12/351958.aspx "Quindi la linea di fondo è che CLR e JVM si trovano nella stessa classe sia che chiami quella classe di software "macchine virtuali" "motori di esecuzione" dipende dal tuo punto di vista. " – Rob
Ho sempre pensato al CLR come a una sorta di macchina virtuale. Un software che funge da sandbox su cui viene eseguita l'applicazione. Diamo a questa VM il bytecode IL e il compilatore JIT incluso rende il codice nativo e lo esegue su quella speciale sandbox. Sebbene non abbia mai studiato il CLR in dettaglio, i documenti su GitHub lo descrivono come "una macchina virtuale completa di alto livello progettata per supportare un'ampia varietà di linguaggi di programmazione e l'interoperabilità tra di loro". Questo mi ha fatto credere che la mia comprensione approssimativa fosse ragionevole. – user1620696