Relación entre C #, .NET, ASP, ASP.NET, etc. [cerrado]

143

No tengo muy claro la diferencia entre C #, C # .NET y lo mismo para ASP y otros lenguajes '.NET'.

Por lo que entiendo, .NET es una biblioteca / marco de ... cosas. Creo que son esencialmente acceso a datos de Windows, como elementos de formulario, etc., pero eso no parece aplicarse a ASP.NET.

Además, veo personas que se hacen llamar desarrolladores '.NET'. ¿Significa esto que dominan C #, ASP y otros lenguajes?

Finalmente, nunca veo C # sin .NET conectado. ¿C # está estrechamente relacionado con .NET como inutilizable sin él?

En resumen: ¿qué proporciona exactamente .NET? ¿Cómo se relaciona con C # y ASP, etc.? ¿Qué significa "desarrollador de .NET"? Y finalmente, ¿por qué nunca ves C # sin .NET?

[Por otro lado, me doy cuenta de que estas son preguntas múltiples, pero creo que están muy relacionadas entre sí (o al menos esa es la impresión que me han dado los programadores de navegación / SO, etc.)].

Megan Walker
fuente

Respuestas:

172

Entiendo tu confusión, créeme, ¡tengo la misma perspectiva cuando se trata del mundo Java! De todos modos, intentaré desglosar tus preguntas y abordarlas una por una ... así como agregar algunos otros puntos que con suerte ayudarán a aclarar lo que está sucediendo:

  1. C # y C # .NET son lo mismo ... C #
  2. .NET es, como usted dice, una biblioteca de código con la que los lenguajes .NET pueden hablar.
  3. Los lenguajes .NET vienen en diferentes sabores como: C # .NET, VB.NET, Managed C ++, F #.
  4. Los lenguajes .NET compilan a CIL ( Common Intermediate Language ), lo que significa que todos comienzan a "hablar" el mismo idioma y, por lo tanto, pueden interactuar.
  5. ASP.NET es la porción de la biblioteca .NET utilizada para crear sitios web. Hay otras subsecciones de ASP.NET como WebForms (la antigua forma de hacer páginas web) o la biblioteca MVC que está madurando rápidamente y que también vale la pena ver.
  6. Los formularios (tecnología anterior) o el nuevo WPF (Windows Presentation Foundation) son las tecnologías que normalmente usaría en .NET para crear lo que conoce como aplicaciones de escritorio tradicionales.

Una última cosa que me gustaría terminar es la diferencia entre la biblioteca y el marco. En los últimos años, estos dos términos se han utilizado como sinónimos, sin embargo, ese no es el caso. La forma más fácil en que puedo pensar para diferenciar los dos es:

  • Una biblioteca contiene muchas funciones que puede elegir y elegir, es decir, el uso de una tecnología no significa que esté encerrado en el resto. Esto significa libertad, sin embargo, tendrá más trabajo para usted.
  • Sin embargo, un marco establece mucho cómo va a trabajar. Proporciona un flujo de trabajo que para bien o para mal es difícil de cambiar. Esto significa un rápido desarrollo / creación de prototipos, pero si se realizan cambios significativos en el futuro, puede ser imposible (o requerir mucho tiempo) implementarlos.

El proyecto en el que esté trabajando dependerá de la elección que haga.

PaulCarroll
fuente
77
+1, pero un inconveniente menor en el n. ° 2: .NET no es una "biblioteca de código", es un marco (que usted define correctamente como un "flujo de trabajo" que define cómo se definen y ejecutan sus programas). La colección de bibliotecas estándar publicadas por Microsoft que están disponibles para los lenguajes .NET es .NET Base Class Library (BCL).
nlawalker
77
Tenga en cuenta que ASP también puede usarse para referirse a ASP clásico en lugar de ASP.NET.
Brian
11
No estoy de acuerdo con el punto 1. C # podría usarse sin .NET, por lo que C # .NET declara explícitamente que usa C # con el marco .NET, mientras que C # no. En la práctica, aunque la mayoría de las personas asumen que C # se usa con .NET.
Ian Newson
23

.NET es un marco de desarrollo de aplicaciones: contiene numerosas bibliotecas que contienen una variedad de funcionalidades.

C # es un lenguaje creado para usar con .NET. No es el único lenguaje compatible con .NET; otras opciones incluyen VB.NET, F #, Managed C ++, IronRuby y IronPython. Usted escribe el código en el idioma que elija para usar la funcionalidad en .NET Framework.

ASP.NET es una extensión de .NET que lo ayuda a escribir aplicaciones y sitios web basados ​​en la web. Gran parte del marco general está disponible (o es útil, por ejemplo, en el caso de WinForms) en este contexto.

[Classic] ASP es un marco web anterior, también de Microsoft. A pesar de los nombres similares, ASP y ASP.NET son bastante diferentes bajo el capó. Una diferencia notable es que sus únicas opciones de lenguaje para ASP son VBScript y JScript. ASP es una tecnología antigua y obsoleta, no te preocupes por ello.

Grant Palin
fuente
14

En primer lugar, .Net es un marco de bytecode, similar al bytecode de Java. Sin embargo, .Net solo es BYTECODE. No hay un idioma oficial ".Net". Los dos idiomas principales dirigidos a .Net son C # y VB.Net. ASP.Net es una extensión de la biblioteca .Net proporcionada para permitir que las aplicaciones escritas en C # o VB.Net (u otros lenguajes dirigidos a .Net) funcionen como un sitio web.

Los desarrolladores que dicen que conocen .Net generalmente significan que conocen C # o VB.Net, o ambos, y pueden aprender fácilmente el que no conocen (C # y VB.Net son lenguajes extremadamente similares, aparte de la sintaxis general)

Por último, ASP NO ES lo mismo que ASP.Net. Tienen grandes diferencias

Earlz
fuente
Entonces, ¿hay alguna diferencia entre la aplicación ac # y la aplicación ac # .net? Le pregunto cuando dejó caer .net de c # .net en su respuesta. Sin embargo, la sección de desarrolladores de .Net fue muy útil.
Megan Walker
55
Bueno, C # es en realidad solo un lenguaje, no vinculado con .Net. PERO todo el uso actual de C # es con .Net, por lo que prácticamente no hay diferencia entre "C #" y "C # .Net"
Earlz
Como desarrollador de ".NET", hago el reclamo porque evito los métodos / características exclusivos del lenguaje tanto como sea posible para poder saltar a través de todos los lenguajes .NET con solo cambios de sintaxis.
Wayne
1
C # el lenguaje es solo un lenguaje. Puede escribir cualquier cosa en C # sin tener que hablar con un backend o framework .NET. Para aquellos que dudan de mí, miren Xamarin C #: una forma de escribir aplicaciones nativas de iOS y Android sin usar ningún .NET.
Phil Ryan
@PhilRyan Por lo que vale, Xamarin ni siquiera fue inventado cuando se publicó esta respuesta.
TylerH
8

Como solo una respuesta menciona Mono sin entrar en detalles:

Aunque C # como lenguaje se desarrolló originalmente en Microsoft como parte de .NET Framework, más tarde fue estandarizado por ECMA , lo que significa que se pueden desarrollar implementaciones independientes del lenguaje que cumplan con los estándares, y de hecho lo fueron. El más destacado de ellos es Mono .

Mono es una implementación de código abierto de un conjunto de herramientas compatibles con el estándar ECMA compatible con .NET Framework, que incluye un compilador C # y una implementación CLI (Mono Runtime, el equivalente de CLR de Microsoft, la máquina virtual de .NET Framework). Su objetivo es ejecutar aplicaciones .NET multiplataforma. A partir de hoy, es compatible con C # 4.0 y una parte sustancial de las características de .NET Framework . Además de reflejar la implementación de Microsoft, el equipo de Mono también está haciendo innovaciones propias.

Entonces, sí, es posible y factible trabajar en C # sin .NET. Sin embargo, es poco probable que Mono pueda rivalizar con la participación de mercado de Microsoft y la posición de .NET Framework, no ahora y no en el futuro inmediato.

scrwtp
fuente
Estaba esperando que alguien explicara Mono, para corregir la suposición errónea de que nunca se ve C # sin estar emparejado con .NET. +1.
KChaloux
7

El libro de Jon Skeet, C # In Depth desglosa .NET en forma bastante sucinta. A menudo se usa en relación con

  1. Lenguajes de programación (C #, VB)
  2. Runtime (CLR) que ejecuta el código de bytes en el que se compilan esos idiomas.
  3. Bibliotecas de marco (Windows Forms / ASP.NET)
mootinator
fuente
2

Las otras respuestas hacen un buen trabajo al explicar qué es cada tecnología, pero creo que pierden uno de los principales motivos de confusión. C # y C # .NET son esencialmente sinónimos, sin embargo, VB.NET y VB son diferentes y ASP y ASP.NET también son diferentes. VB generalmente se refiere a VB6 y versiones anteriores, y ASP se refiere a ASP clásico. Estas tecnologías se rediseñaron radicalmente con el lanzamiento del marco .NET y, en lugar de crear nuevos nombres para los productos, Microsoft agregó .NET a casi todo, pero C # también era nuevo, por lo que ambos nombres realmente se refieren a lo mismo.

Ryathal
fuente
0

Debe diferenciar entre lenguajes, marcos, CLR, patrones y métodos de programación.

ASP.Net utiliza un patrón de programación completamente diferente para el desarrollo de Winforms, aunque comparten la misma base. Puede programar aplicaciones ASP.net y .Net en una variedad de idiomas.

Luego está Mono y el lenguaje C # utilizado en el contexto Mono, probablemente valga la pena investigar.

Lea estos enlaces:
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

Jeremy
fuente
"Puede programar aplicaciones ASP.net y .Net en una variedad de idiomas". No estoy seguro de lo que quieres decir con esto. Usted dice que puede escribir un programa ASP.net en una variedad de idiomas. Pero pensé que ASP era el lenguaje, y .NET era el marco que agregaste.
Megan Walker
ASP.net es un marco y lo veo como una metodología de programación. ASP.net puede codificarse en cualquier idioma de esta lista en.wikipedia.org/wiki/List_of_CLI_languages cuando la clase ASP no puede.
Jeremy
1
ASP no es un lenguaje.
Marcie