Relation entre C #, .NET, ASP, ASP.NET, etc. [fermé]


143

Je ne vois vraiment pas bien la différence entre C #, C # .NET et la même chose pour ASP et les autres langages '.NET'.

D'après ce que j'ai compris, .NET est une bibliothèque / structure de ... choses. Je pense qu’ils ont essentiellement accès aux données Windows telles que les éléments de formulaire, etc., mais cela ne semble pas s’appliquer à ASP.NET.

De plus, je vois des gens s’appeler eux-mêmes des développeurs .NET. Est-ce que cela signifie qu'ils parlent couramment C #, ASP et d'autres langages?

Enfin, je ne vois jamais C # sans .NET attaché. C # est-il étroitement lié à .NET pour être inutilisable sans lui?

En résumé: que propose exactement .NET? Quel est le lien avec C # et ASP, etc.? Que veut dire "développeur .NET"? Et enfin, pourquoi ne voyez-vous jamais C # sans .NET?

[En passant, je me rends compte que ce sont des questions multiples, mais je pense qu'elles sont très liées (ou du moins c'est l'impression que la navigation parmi les programmeurs / SO etc. m'a donné)].

Réponses:


172

Je comprends votre confusion, croyez-moi, j’ai la même perspective en ce qui concerne le monde de Java! Quoi qu'il en soit, je vais essayer de décomposer vos questions et de les aborder une à une ... ainsi que d'ajouter quelques points supplémentaires qui, espérons-le, aideront à clarifier ce qui se passe:

  1. C # et C # .NET sont la même chose ... C #
  2. Comme vous le dites, .NET est une bibliothèque de code avec laquelle les langages .NET peuvent parler.
  3. Les langages .NET sont proposés sous différentes formes, telles que: C # .NET, VB.NET, C ++ managé, F #.
  4. Les langages .NET sont compilés dans CIL ( Common Intermediate Language ), ce qui signifie qu'ils commencent tous à "parler" le même langage et peuvent donc interopérer.
  5. ASP.NET est la partie de la bibliothèque .NET utilisée pour créer des sites Web. Il existe d’autres sous-sections d’ASP.NET telles que WebForms (l’ancienne méthode de création de pages Web) ou la bibliothèque MVC, qui évolue rapidement, qui méritent également d’être examinées.
  6. Les formulaires (ancienne technologie) ou le nouveau WPF (Windows Presentation Foundation) sont les technologies que vous utiliseriez généralement dans .NET pour créer ce que vous savez être des applications de bureau traditionnelles.

Une dernière chose sur laquelle j'aimerais terminer, c'est la différence entre bibliothèque et framework. Ces dernières années, ces deux termes ont été utilisés comme synonymes, mais ce n'est pas le cas. La façon la plus simple de distinguer les deux est la suivante:

  • Une bibliothèque contient de nombreuses fonctionnalités que vous pouvez choisir. Par exemple, utiliser une technologie ne signifie pas que vous êtes bloqué dans le reste. Cela signifie la liberté, mais vous aurez plus de travail à faire.
  • Cependant, un cadre définit très bien votre façon de travailler. Il fournit un flux de travail qu'il est difficile de changer pour le meilleur ou pour le pire. Cela signifie développement / prototypage rapide, mais si des modifications importantes sont apportées à l'avenir, il peut s'avérer impossible (ou très fastidieux) de les mettre en œuvre.

Le projet sur lequel vous travaillez dépend du choix que vous faites.


7
+1, mais un léger inconvénient sur # 2 - .NET n'est pas une "bibliothèque de code", c'est un framework (que vous définissez correctement comme un "workflow" qui définit la manière dont vos programmes sont définis et exécutés). La collection de bibliothèques standard publiées par Microsoft et disponibles pour les langages .NET est la bibliothèque de classes de base .NET (BCL).
nlawalker

7
Notez que ASP peut également être utilisé pour faire référence à un ASP classique plutôt qu’ASP.NET.
Brian

11
Je ne suis pas d'accord avec le point 1. C # peut être utilisé sans .NET, donc C # .NET indique explicitement que vous utilisez C # avec le framework .NET, contrairement à C #. En pratique, bien que la plupart des gens supposent que C # est utilisé avec .NET.
Ian Newson

23

.NET est un framework de développement d’applications qui contient de nombreuses bibliothèques contenant de nombreuses fonctionnalités.

C # est un langage créé pour être utilisé avec .NET. Ce n'est pas le seul langage compatible .NET - les autres options incluent VB.NET, F #, Managed C ++, IronRuby et IronPython. Vous écrivez du code dans la langue de votre choix pour utiliser les fonctionnalités du framework .NET.

ASP.NET est une extension de .NET qui vous aide à écrire des applications et des sites Web. Une grande partie du cadre général est disponible (ou utile, dans le cas de WinForm par exemple) dans ce contexte.

[Classic] ASP est un framework Web plus ancien, également de Microsoft. Malgré les noms similaires, ASP et ASP.NET sont assez différents sous le capot. Une différence notable est que vos seules options de langage pour ASP sont VBScript et JScript. ASP est une technologie ancienne et obsolète, ne vous en faites pas.


14

Tout d’abord, .Net est un framework de bytecode, similaire au bytecode Java. Cependant, Net n’est que BYTECODE. Il n'y a pas de langue officielle ".Net". Les deux langues principales ciblant .Net sont C # et VB.Net. ASP.Net est une extension de la bibliothèque .Net fournie pour permettre aux applications écrites en C # ou VB.Net (ou dans d’autres langues ciblées par .Net) de fonctionner en tant que site Web.

Les développeurs qui disent connaître .Net veulent généralement dire connaître C # ou VB.Net, ou les deux, et peuvent facilement apprendre celui qu'ils ne connaissent pas (C # et VB.Net sont des langages extrêmement similaires, hormis la syntaxe générale)

Enfin, ASP N'EST PAS le même qu'ASP.Net. Ils ont d'énormes différences


Y a-t-il une différence entre ac # application et ac # .net? Je demande que vous avez laissé tomber le .net de c # .net dans votre réponse. La section des développeurs .Net était cependant très utile.
Megan Walker

5
Eh bien, C # n’est en réalité qu’un langage, pas lié à .Net. MAIS toute l'utilisation actuelle de C # est avec .Net, donc pratiquement, il n'y a pas de différence entre "C #" et "C # .Net"
Earlz

En tant que développeur ".NET", je fais cette déclaration parce que j'évite autant que possible les méthodes / fonctionnalités exclusives aux langages afin de pouvoir parcourir tous les langages .NET en ne modifiant que la syntaxe.
Wayne

1
C # la langue est juste une langue. Vous pouvez écrire n'importe quoi en C # sans avoir à parler à un backend ou à un framework .NET. Pour ceux qui doutent de moi, consultez Xamarin C #: un moyen d’écrire des applications natives pour iOS et Android sans utiliser aucun fichier .NET.
Phil Ryan

@PhilRyan Pour ce que ça vaut, Xamarin n'était même pas inventé quand cette réponse a été postée.
TylerH

8

Comme une seule réponse mentionne Mono sans entrer dans les détails:

Bien que C # en tant que langage ait été initialement développé par Microsoft dans le cadre de .NET Framework, il a ensuite été normalisé par ECMA , ce qui signifie que des implémentations indépendantes du langage, conformes aux normes, peuvent être développées. Le plus important d'entre eux est Mono .

Mono est une implémentation à source ouverte d'un ensemble d'outils conformes au standard ECMA compatible avec .NET Framework, notamment un compilateur C # et une implémentation CLI (Mono Runtime, l'équivalent du CLR de Microsoft - la machine virtuelle de .NET Framework). Son objectif est d'exécuter des applications .NET multiplates-formes. À ce jour, il prend en charge C # 4.0 et une partie substantielle des fonctionnalités de .NET Framework . En plus de refléter l’implémentation de Microsoft, l’équipe Mono innove elle aussi.

Donc, oui, il est possible et faisable de travailler en C # sans .NET. Il est toutefois peu probable que Mono puisse rivaliser avec la part de marché de Microsoft et la position de .NET Framework, pas maintenant, ni dans un avenir immédiat.


J'attendais que quelqu'un explique Mono, pour corriger l'hypothèse erronée selon laquelle on ne voit jamais C # sans être jumelé avec .NET. +1
KChaloux

7

Le livre de Jon Skeet, C # In Depth, décompose succinctement .NET. Il est souvent utilisé en relation avec

  1. Langages de programmation (C #, VB)
  2. Le Runtime (CLR) qui exécute le bytecode dans lequel ces langages sont compilés.
  3. Bibliothèques Framework (Windows Forms / ASP.NET)

2

les autres réponses expliquent bien chaque technologie, mais je pense qu’elles manquent l’un des principaux motifs de confusion. C # et C # .NET sont essentiellement synonymes, cependant VB.NET et VB sont différents, ainsi qu'ASP et ASP.NET sont également différents. VB fait généralement référence à VB6 et plus, et ASP à ASP classique. Ces technologies ont été radicalement repensées avec la publication du framework .NET et plutôt que de proposer de nouveaux noms pour les produits que Microsoft a ajouté .NET à peu près à tout, mais C # était également nouveau, de sorte que les deux noms font vraiment référence à la même chose.


0

Vous devez différencier les langages, les frameworks, les CLR, les patterns et les méthodes de programmation.

ASP.Net utilise un modèle de programmation complètement différent du développement Winforms bien qu'ils partagent la même base. Vous pouvez programmer des applications ASP.net et .Net dans différentes langues.

Ensuite, il y a Mono et le langage C # utilisés dans le contexte Mono - cela mérite probablement des recherches.

Lisez ces liens:
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


"Vous pouvez programmer des applications ASP.net et .Net dans différentes langues." Je ne sais pas ce que vous entendez par là. Vous dites que vous pouvez écrire un programme ASP.net dans différentes langues. Mais je pensais qu'ASP était le langage et .NET le framework que vous avez ajouté.
Megan Walker

ASP.net est un framework et je le considère comme une méthodologie de programmation. ASP.net peut être codé dans n'importe quelle langue de cette liste en.wikipedia.org/wiki/List_of_CLI_languages alors que la classe ASP ne le peut pas.
Jeremy

1
ASP n'est pas un langage.
Marcie
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.