Beziehung zwischen C #, .NET, ASP, ASP.NET usw. [geschlossen]

143

Ich bin wirklich unklar über den Unterschied zwischen C #, C # .NET und dem Gleichen für ASP und andere '.NET'-Sprachen.

Soweit ich weiß, ist .NET eine Bibliothek / ein Framework von ... Dingen. Ich denke, dass sie im Wesentlichen Zugriff auf Windows-Daten wie Formularelemente usw. haben, aber dies scheint nicht für ASP.NET zu gelten.

Außerdem sehe ich Leute, die sich ".NET" -Entwickler nennen. Bedeutet dies, dass sie fließend C #, ASP und andere Sprachen sprechen?

Schließlich sehe ich nie C # ohne .NET. Ist C # so eng mit .NET verbunden, dass es ohne .NET unbrauchbar wird?

Zusammenfassend: Was genau bietet .NET? In welcher Beziehung steht es zu C # und ASP usw.? Was bedeutet "ein .NET-Entwickler"? Und warum sehen Sie C # nie ohne .NET?

[Abgesehen davon ist mir klar, dass es sich um mehrere Fragen handelt, aber ich denke, dass sie sehr eng miteinander verbunden sind (oder zumindest den Eindruck, den mir das Durchsuchen von Programmierern / SO usw. vermittelt hat)].

Megan Walker
quelle

Antworten:

172

Ich verstehe Ihre Verwirrung, glauben Sie mir, ich habe die gleiche Perspektive, wenn es um die Java-Welt geht! Wie auch immer, ich werde versuchen, Ihre Fragen aufzuschlüsseln und sie nacheinander anzugehen ... und einige weitere Punkte hinzuzufügen, die hoffentlich dazu beitragen, zu klären, was los ist:

  1. C # und C # .NET sind dasselbe ... C #
  2. .NET ist, wie Sie sagen, eine Codebibliothek, mit der .NET-Sprachen kommunizieren können.
  3. .NET-Sprachen gibt es in verschiedenen Varianten, z. B .: C # .NET, VB.NET, Managed C ++, F #.
  4. .NET-Sprachen werden in CIL ( Common Intermediate Language ) kompiliert, was bedeutet, dass sie alle dieselbe Sprache "sprechen" und daher zusammenarbeiten können.
  5. ASP.NET ist der Teil der .NET-Bibliothek, der zum Erstellen von Websites verwendet wird. Es gibt andere Unterabschnitte von ASP.NET wie WebForms (die alte Art, Webseiten zu erstellen) oder die schnell ausgereifte MVC-Bibliothek, die ebenfalls einen Blick wert sind.
  6. Formulare (alte Technologie) oder das neue WPF (Windows Presentation Foundation) sind die Technologien, die Sie normalerweise in .NET verwenden, um herkömmliche Desktopanwendungen zu erstellen.

Eine letzte Sache, die ich abschließen möchte, ist der Unterschied zwischen Bibliothek und Framework. In den letzten Jahren wurden diese beiden Begriffe als Synonyme verwendet, was jedoch nicht der Fall ist. Der einfachste Weg, die beiden zu unterscheiden, ist:

  • Eine Bibliothek enthält viele Funktionen, aus denen Sie auswählen können, dh die Verwendung einer einzigen Technologie bedeutet nicht, dass Sie an den Rest gebunden sind. Das bedeutet Freiheit, aber Sie haben mehr Arbeit für Sie ausgeschnitten.
  • Ein Rahmen legt jedoch sehr genau fest, wie Sie arbeiten werden. Es bietet einen Workflow, der sich nur schwer ändern lässt. Dies bedeutet eine schnelle Entwicklung / Erstellung von Prototypen, aber wenn in Zukunft signifikante Änderungen vorgenommen werden, kann es unmöglich (oder sehr zeitaufwendig) sein, diese umzusetzen.

Das Projekt, an dem Sie arbeiten, hängt von Ihrer Wahl ab.

PaulCarroll
quelle
7
+1, aber ein kleiner Haken bei # 2 - .NET ist keine "Codebibliothek", sondern ein Framework (das Sie korrekt als "Workflow" definieren, der definiert, wie Ihre Programme definiert und ausgeführt werden). Die Sammlung der von Microsoft veröffentlichten Standardbibliotheken, die den .NET-Sprachen zur Verfügung stehen, ist die .NET Base Class Library (BCL).
Nlawalker
7
Beachten Sie, dass ASP auch verwendet werden kann, um auf klassisches ASP anstelle von ASP.NET zu verweisen.
Brian
11
Ich bin mit Punkt 1 nicht einverstanden. C # könnte ohne .NET verwendet werden, daher gibt C # .NET ausdrücklich an, dass Sie C # mit dem .NET-Framework verwenden, während C # dies nicht tut. In der Praxis gehen die meisten Leute jedoch davon aus, dass C # mit .NET verwendet wird.
Ian Newson
23

.NET ist ein Framework für die Anwendungsentwicklung. Es enthält zahlreiche Bibliotheken mit einer Reihe von Funktionen.

C # ist eine Sprache, die für die Verwendung mit .NET erstellt wurde. Es ist nicht die einzige .NET-kompatible Sprache. Weitere Optionen sind VB.NET, F #, Managed C ++, IronRuby und IronPython. Sie schreiben Code in der Sprache Ihrer Wahl, um die Funktionalität in .NET Framework zu nutzen.

ASP.NET ist eine Erweiterung von .NET, mit der Sie webbasierte Anwendungen und Websites schreiben können. In diesem Zusammenhang ist ein Großteil des Gesamtrahmens verfügbar (oder nützlich, z. B. für WinForms).

[Classic] ASP ist ein älteres Webframework, ebenfalls von Microsoft. Trotz der ähnlichen Namen unterscheiden sich ASP und ASP.NET unter der Haube erheblich. Ein bemerkenswerter Unterschied ist, dass Ihre einzigen Sprachoptionen für ASP VBScript und JScript sind. ASP ist eine ältere und veraltete Technologie, machen Sie sich keine Sorgen damit.

Grant Palin
quelle
14

Zunächst einmal ist .Net ein Bytecode-Framework, das Java-Bytecode ähnelt. .Net ist jedoch nur BYTECODE. Es gibt keine ".Net" Amtssprache. Die beiden Hauptsprachen für .NET sind C # und VB.Net. ASP.Net ist eine Erweiterung der bereitgestellten .Net-Bibliothek, mit der Anwendungen, die in C # oder VB.Net (oder anderen .Net-Zielsprachen) geschrieben wurden, als Website verwendet werden können.

Entwickler, die sich mit .NET auskennen, meinen in der Regel, C # oder VB.Net oder beides zu kennen, und können leicht lernen, welche sie nicht kennen (C # und VB.Net sind, abgesehen von der allgemeinen Syntax, äußerst ähnliche Sprachen).

Schließlich ist ASP NICHT dasselbe wie ASP.Net. Sie haben große Unterschiede

Earlz
quelle
Gibt es also einen Unterschied zwischen ac # application und ac # .net application? Frage ich, als du die .net von c # .net in deiner Antwort fallen gelassen hast. Die .Net-Entwickler-Sektion war jedoch sehr hilfreich.
Megan Walker
5
Nun, C # ist eigentlich nur eine Sprache, die nicht an .Net gebunden ist. ABER die gesamte derzeitige Nutzung von C # erfolgt mit .Net, sodass praktisch kein Unterschied zwischen "C #" und "C # .Net" besteht
Earlz
Als ".NET" -Entwickler mache ich den Anspruch geltend, weil ich so weit wie möglich sprachexklusive Methoden / Funktionen vermeide, damit ich mit nur Syntaxänderungen über alle .NET-Sprachen springen kann.
Wayne
1
C # Die Sprache ist nur eine Sprache. Sie können alles in C # schreiben, ohne mit einem .NET-Backend oder Framework sprechen zu müssen. Für diejenigen, die an mir zweifeln, schauen Sie sich Xamarin C # an: eine Möglichkeit, native iOS- und Android-Apps zu schreiben, ohne jemals .NET zu verwenden.
Phil Ryan
@PhilRyan Xamarin war noch nicht einmal erfunden, als diese Antwort veröffentlicht wurde.
TylerH
8

Da nur eine Antwort Mono erwähnt, ohne ins Detail zu gehen:

Obwohl C # als Sprache ursprünglich bei Microsoft als Teil von .NET Framework entwickelt wurde, wurde es später von ECMA standardisiert , was bedeutet, dass unabhängige standardkonforme Implementierungen der Sprache entwickelt werden können, und das waren sie auch. Das bekannteste davon ist Mono .

Mono ist eine Open-Source-Implementierung eines mit .NET Framework kompatiblen ECMA-Standards, einschließlich eines C # -Compilers und einer CLI-Implementierung (Mono Runtime, das Äquivalent zu Microsofts CLR - der virtuellen Maschine von .NET Framework). Ziel ist es, .NET-Anwendungen plattformübergreifend auszuführen. Ab heute unterstützt es C # 4.0 und einen wesentlichen Teil der .NET Framework-Funktionen . Das Mono-Team spiegelt nicht nur die Microsoft-Implementierung wider, sondern führt auch eigene Innovationen durch.

Ja, es ist möglich und machbar, in C # ohne .NET zu arbeiten. Es ist jedoch unwahrscheinlich, dass Mono in der Lage sein wird, mit dem Marktanteil von Microsoft und der Position von .NET Framework mitzuhalten, nicht jetzt und nicht in naher Zukunft.

scrwtp
quelle
Ich habe darauf gewartet, dass jemand Mono erklärt, um die falsche Annahme zu korrigieren, dass Sie C # nie sehen, ohne mit .NET gekoppelt zu sein. +1.
KChaloux
7

Jon Skeets Buch C # In Depth bricht .NET ziemlich prägnant auf. Es wird oft in Verbindung mit verwendet

  1. Programmiersprachen (C #, VB)
  2. Die Runtime (CLR), in der der Bytecode ausgeführt wird, für den diese Sprachen kompiliert wurden.
  3. Framework-Bibliotheken (Windows Forms / ASP.NET)
Mootinator
quelle
2

Die anderen Antworten erklären gut, was für eine Technologie sie haben, aber ich denke, sie vermissen einen der Hauptgründe für Verwirrung. C # und C # .NET sind im Wesentlichen synonym, jedoch unterscheiden sich VB.NET und VB und auch ASP und ASP.NET. VB bezieht sich im Allgemeinen auf VB6 und älter, und ASP bezieht sich auf klassisches ASP. Diese Technologien wurden mit der Veröffentlichung des .NET-Frameworks grundlegend umgestaltet und haben nicht nur neue Namen für Produkte entwickelt, an die Microsoft .NET angehängt hat, sondern C # war auch neu, sodass sich beide Namen tatsächlich auf dasselbe beziehen.

Ryathal
quelle
0

Sie müssen unterscheiden zwischen Sprachen, Frameworks, CLR, Patterns und Programmiermethoden.

ASP.Net verwendet ein völlig anderes Programmiermuster als Winforms, obwohl beide dieselbe Grundlage haben. Sie können ASP.net- und .Net-Anwendungen in verschiedenen Sprachen programmieren.

Dann gibt es noch Mono und die im Mono-Kontext verwendete C # -Sprache - wahrscheinlich eine Recherche wert.

Lesen Sie diese Links durch:
http://en.wikipedia.org/wiki/Common_Language_Runtime
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations
http://en.wikipedia.org/wiki/File: Übersicht_der_Gemeinsamen_Sprache_Infrastruktur.svg

Jeremy
quelle
"Sie können ASP.net- und .Net-Anwendungen in verschiedenen Sprachen programmieren." Ich bin mir nicht sicher, was du damit meinst. Sie sagen, dass Sie ein ASP.net-Programm in einer Vielzahl von Sprachen schreiben können. Aber ich dachte, ASP sei die Sprache und .NET das Framework, das Sie hinzufügen.
Megan Walker
ASP.net ist ein Framework und ich sehe es als Programmiermethode. ASP.net kann in jeder Sprache aus dieser Liste codiert werden en.wikipedia.org/wiki/List_of_CLI_languages wheras ASP - Klasse kann es nicht.
Jeremy
1
ASP ist keine Sprache.
Marcie