Relazione tra C #, .NET, ASP, ASP.NET ecc. [Chiuso]


143

Non sono molto chiaro la differenza tra C #, C # .NET e lo stesso per ASP e altri linguaggi ".NET".

Da quello che ho capito, .NET è una libreria / framework di ... cose. Penso che essenzialmente abbiano accesso ai dati di Windows come elementi del modulo ecc., Ma ciò non sembra valere per ASP.NET.

Inoltre, vedo persone che si definiscono sviluppatori ".NET". Questo significa che sono fluenti in C #, ASP e altre lingue?

Infine, non vedo mai C # senza .NET allegato. C # è strettamente legato a .NET per essere inutilizzabile senza di esso?

In sintesi: cosa fornisce esattamente .NET? Come si collega a C #, ASP ecc? Cosa significa "uno sviluppatore .NET"? E infine, perché non vedi mai C # senza .NET?

[A parte, mi rendo conto che si tratta di domande multiple, ma penso che siano molto correlate tra loro (o almeno questa è l'impressione che mi ha dato la navigazione programmatori / SO ecc.)].

Risposte:


172

Capisco la tua confusione, credetemi ho la stessa prospettiva quando si tratta del mondo Java! Ad ogni modo, cercherò di scomporre le tue domande e di affrontarle una ad una ... oltre ad aggiungere altri punti che, si spera, aiuteranno a chiarire cosa sta succedendo:

  1. C # e C # .NET sono la stessa cosa ... C #
  2. .NET è, come dici tu, una libreria di codice con cui le lingue .NET possono parlare.
  3. I linguaggi .NET sono disponibili in diversi gusti come: C # .NET, VB.NET, Managed C ++, F #.
  4. Le lingue .NET vengono compilate in CIL ( Common Intermediate Language ), il che significa che iniziano tutte a "parlare" la stessa lingua e possono quindi interagire.
  5. ASP.NET è la parte della libreria .NET utilizzata per creare siti Web. Ci sono altre sottosezioni di ASP.NET come WebForms (il vecchio modo di creare pagine Web) o la libreria MVC a maturazione rapida che vale la pena di esaminare.
  6. I moduli (vecchia tecnologia) o il nuovo WPF (Windows Presentation Foundation) sono le tecnologie che in genere utilizzeresti in .NET per creare quelle che conosci come applicazioni desktop tradizionali.

Un'ultima cosa su cui vorrei finire è la differenza tra libreria e framework. Negli ultimi anni questi due termini sono stati usati anche come sinonimi, ma non è così. Il modo più semplice che posso pensare di differenziare i due è:

  • Una libreria contiene molte funzionalità tra le quali puoi scegliere, ad esempio l'utilizzo di una tecnologia non significa che sei bloccato nel resto. Ciò significa libertà, tuttavia avrai più lavoro per te.
  • Un framework, tuttavia, stabilisce molto come lavorerai. Fornisce un flusso di lavoro che nel bene e nel male è difficile da modificare. Ciò significa un rapido sviluppo / prototipazione, ma in caso di modifiche significative in futuro potrebbe essere impossibile (o richiedere molto tempo) implementarle.

Il progetto a cui stai lavorando dipenderà dalla tua scelta.


7
+1, ma un piccolo inconveniente su # 2 - .NET non è una "libreria di codice", è un framework (che definisci correttamente come un "flusso di lavoro" che definisce come i programmi sono definiti ed eseguiti). La raccolta di librerie standard pubblicate da Microsoft che sono disponibili per i linguaggi .NET è la .NET Base Class Library (BCL).
nlawalker,

7
Si noti che ASP può essere utilizzato anche per fare riferimento a ASP classico anziché ASP.NET.
Brian,

11
Non sono d'accordo con il punto 1. C # potrebbe essere utilizzato senza .NET, quindi C # .NET afferma esplicitamente che si utilizza C # con il framework .NET, mentre C # no. In pratica, sebbene la maggior parte delle persone supponga che C # sia usato con .NET.
Ian Newson,

23

.NET è un framework di sviluppo di applicazioni: contiene numerose librerie contenenti una vasta gamma di funzionalità.

C # è un linguaggio creato per l'uso con .NET. Non è l'unico linguaggio compatibile con .NET: altre opzioni includono VB.NET, F #, Managed C ++, IronRuby e IronPython. Scrivi il codice nella lingua che preferisci per utilizzare la funzionalità nel framework .NET.

ASP.NET è un'estensione di .NET che ti aiuta a scrivere applicazioni e siti Web basati sul web. Gran parte del quadro generale è disponibile (o utile, ad esempio WinForms) in questo contesto.

[Classico] ASP è un vecchio framework Web, anche di Microsoft. Nonostante i nomi simili, ASP e ASP.NET sono abbastanza diversi sotto il cofano. Una notevole differenza è che le uniche opzioni di linguaggio per ASP sono VBScript e JScript. ASP è una tecnologia più vecchia e obsoleta, non preoccuparti.


14

Prima di tutto, .Net è un framework bytecode, simile al bytecode Java. .Net tuttavia è solo BYTECODE. Non esiste una lingua ufficiale ".Net". Le due lingue principali destinate a .Net sono C # e VB.Net. ASP.Net è un'estensione della libreria .Net fornita per consentire alle applicazioni scritte in C # o VB.Net (o in altre lingue con targeting .Net) di funzionare come sito Web.

Gli sviluppatori che affermano di conoscere .Net di solito significano di conoscere C # o VB.Net, o entrambi, e possono facilmente imparare qualunque cosa non conoscano (C # e VB.Net sono linguaggi estremamente simili a parte la sintassi generale)

Infine, ASP NON È uguale a ASP.Net. Hanno differenze enormi


Quindi c'è una differenza tra l'applicazione ac # e l'applicazione ac # .net? Chiedo come hai lasciato cadere .net da c # .net nella tua risposta. La sezione per sviluppatori .Net è stata molto utile.
Megan Walker,

5
Bene, C # è in realtà solo una lingua, non legata a .Net. MA tutto l'attuale utilizzo di C # è con .Net, quindi praticamente, non c'è differenza tra "C #" e "C # .Net"
Earlz,

In qualità di sviluppatore ".NET", rivendico perché evito il più possibile metodi / funzionalità esclusivi del linguaggio, in modo da poter passare attraverso tutti i linguaggi .NET con solo modifiche alla sintassi.
Wayne,

1
C # la lingua è solo una lingua. Puoi scrivere qualsiasi cosa in C # senza dover parlare con un back-end o un framework .NET. Per coloro che dubitano di me, guarda Xamarin C #: un modo per scrivere app native iOS e Android senza mai usare .NET.
Phil Ryan,

@PhilRyan Per quello che vale, Xamarin non è stato nemmeno inventato quando questa risposta è stata pubblicata.
TylerH,

8

Poiché solo una risposta menziona Mono senza entrare nei dettagli:

Sebbene C # come linguaggio sia stato originariamente sviluppato da Microsoft come parte di .NET Framework, è stato successivamente standardizzato dall'ECMA , il che significa che è possibile sviluppare implementazioni indipendenti conformi allo standard del linguaggio, e in effetti lo sono state. Il più importante di questi è Mono .

Mono è un'implementazione open source di un set di strumenti conforme allo standard ECMA compatibile con .NET Framework, incluso un compilatore C # e un'implementazione CLI (Mono Runtime, l'equivalente del CLR di Microsoft - la macchina virtuale di .NET Framework). Lo scopo è quello di eseguire applicazioni .NET multipiattaforma. Ad oggi, supporta C # 4.0 e una parte sostanziale delle funzionalità di .NET Framework . Oltre a rispecchiare l'implementazione di Microsoft, il team di Mono sta facendo anche innovazioni.

Quindi sì, è possibile e fattibile lavorare in C # senza .NET. È improbabile tuttavia che Mono sarà in grado di competere con la quota di mercato di Microsoft e la posizione di .NET Framework, non ora e non nell'immediato futuro.


Stavo aspettando che qualcuno spiegasse Mono, per correggere l'ipotesi errata che non si vedesse mai C # senza essere associato a .NET. +1.
KChaloux,

7

Il libro di Jon Skeet, C # In Depth, suddivide .NET in modo piuttosto succinto. Viene spesso utilizzato in connessione con

  1. Linguaggi di programmazione (C #, VB)
  2. Il runtime (CLR) che esegue il bytecode in cui sono compilate le lingue.
  3. Librerie di framework (Windows Form / ASP.NET)

2

le altre risposte fanno un buon lavoro nel spiegare ciò che ogni tecnologia, ma penso che manchi uno dei principali motivi di confusione. C # e C # .NET sono essenzialmente sinonimi, tuttavia VB.NET e VB sono diversi e anche ASP e ASP.NET sono diversi. VB si riferisce generalmente a VB6 e precedenti e ASP si riferisce ad ASP classico. Queste tecnologie sono state radicalmente ridisegnate con il rilascio di .NET framework e piuttosto che inventare nuovi nomi per i prodotti Microsoft ha aggiunto .NET praticamente a tutto, ma C # era anche nuovo, quindi entrambi i nomi si riferiscono alla stessa cosa.


0

Devi distinguere tra lingue, framework, CLR, pattern e metodi di programmazione.

ASP.Net utilizza uno schema di programmazione completamente diverso per lo sviluppo di Winforms sebbene condividano le stesse basi. È possibile programmare applicazioni ASP.net e .Net in una varietà di lingue.

Poi c'è Mono e il linguaggio C # usato nel contesto Mono - probabilmente merita qualche ricerca.

Leggi questi link:
http://en.wikipedia.org/wiki/Common_Language_Runtime
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations
http://en.wikipedia.org/wiki/File: Overview_of_the_Common_Language_Infrastructure.svg


"Puoi programmare applicazioni ASP.net e .Net in una varietà di lingue." Non sono sicuro di cosa intendi con questo. Dici che puoi scrivere un programma ASP.net in una varietà di lingue. Ma pensavo che ASP fosse la lingua e .NET fosse il framework in cui aggiungi.
Megan Walker

ASP.net è un framework e lo vedo come una metodologia di programmazione. ASP.net può essere codificato in qualsiasi lingua da questo elenco en.wikipedia.org/wiki/List_of_CLI_languages ​​dove la Classe ASP non può.
Jeremy,

1
ASP non è una lingua.
Marcie
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.