C#、. NET,ASP,ASP.NET等之间的关系


143

我真的不清楚C#,C#.NET与ASP和其他“ .NET”语言的区别。

据我了解,.NET是...事物的库/框架。我认为他们本质上是在访问Windows数据,例如表单元素等,但这似乎不适用于ASP.NET。

另外,我看到人们称自己为“ .NET”开发人员。这是否意味着他们精通C#,ASP和其他语言?

最后,我从来没有看到没有附加.NET的C#。C#是否与.NET紧密地联系在一起,否则无法使用?

总结:.NET到底提供了什么?它与C#和ASP等有什么关系?“ .NET开发人员”是什么意思?最后,为什么没有.NET就永远看不到C#?

[顺便说一句,我意识到这些是多个问题,但是我认为它们之间是非常相关的(或者至少是浏览Programmers / SO等给我的印象))。

Answers:


172

我了解您的困惑,相信我在Java世界方面也有相同的看法!无论如何,我将尝试分解您的问题,并一步一步地解决它们……并在其中添加一些其他观点,希望有助于澄清正在发生的事情:

  1. C#和C#.NET是同一件事... C#
  2. 正如您所说,.NET是.NET语言可以与之交谈的代码库。
  3. .NET语言具有不同的风格,例如:C#.NET,VB.NET,托管C ++,F#。
  4. .NET语言可编译为CIL(通用中间语言),这意味着它们都开始“交谈”相同的语言,因此可以互操作。
  5. ASP.NET是.NET库的一部分,用于制作网站。ASP.NET还有其他小节,例如WebForms(制作网页的旧方法)或快速成熟的MVC库也值得一看。
  6. 窗体(旧技术)或新的WPF(Windows Presentation Foundation)是您在.NET中通常用来创建传统桌面应用程序的技术。

我最后要说的最后一件事是库和框架之间的区别。近年来,这两个术语已被用作同义词,但是事实并非如此。我想将两者区分开的最简单方法是:

  • 一个库包含许多功能,您可以从中选择各种功能,即使用一项技术并不意味着您就被其他技术所束缚。这意味着自由,但是您将为您完成更多的工作。
  • 但是,框架非常阐明了您的工作方式。它提供的工作流程无论好坏都很难改变。这意味着快速的开发/原型制作,但是如果将来进行重大更改,可能无法(或非常耗时)实施它们。

您正在从事的项目将取决于您做出的选择。


7
+1,但在#2上有一个小问题-.NET不是“代码库”,而是一个框架(您正确地将其定义为“工作流”,该工作流定义了如何定义和运行程序)。Microsoft发布的可用于.NET语言的标准库的集合是.NET基类库(BCL)。
nlawalker 2012年

7
请注意,ASP也可以用来指代经典ASP而不是ASP.NET。
布赖恩

11
我不同意第1点。C#可以在没有.NET的情况下使用,因此C#.NET明确声明您将C#与.NET框架一起使用,而C#则没有。实际上,尽管大多数人都假定C#与.NET一起使用。
伊恩·纽森

23

.NET是一个应用程序开发框架-它包含许多包含一系列功能的库。

C#是为与.NET一起使用而创建的语言。它不是唯一的.NET兼容语言-其他选项包括VB.NET,F#,托管C ++,IronRuby和IronPython。您可以使用所选的语言编写代码,以使用.NET框架中的功能。

ASP.NET是.NET的扩展,可帮助您编写基于Web的应用程序和网站。在这种情况下,许多总体框架都是可用的(例如,对于WinForms则很有用)。

[经典] ASP是一个较旧的Web框架,也来自Microsoft。尽管名称相似,但ASP和ASP.NET在幕后却大不相同。一个显着的区别是,ASP的唯一语言选项是VBScript和JScript。ASP是一种较旧且过时的技术,请不要为此烦恼。


14

首先,.Net是一个字节码框架,类似于Java字节码。.Net只是BYTECODE。没有“ .Net”官方语言。面向.Net的两种主要语言是C#和VB.Net。ASP.Net是对所提供的.Net库的扩展,使使用C#或VB.Net(或其他.Net目标语言)编写的应用程序可以作为网站工作。

说他们知道.Net的开发人员通常意味着他们知道C#或VB.Net或这两者,并且可以轻松地学习他们不知道的任何一种语言(C#和VB.Net是除通用语法外极其相似的语言)

最后,ASP与ASP.Net不同。他们有很大的差异


那么ac#应用程序和ac#.net应用程序之间有区别吗?我问,因为您从答案中删除了来自c#.net的.net。.Net开发人员部分虽然很有帮助。
梅根·沃克

5
好吧,C#实际上只是一种语言,与.Net无关。但是目前C#的所有用法都是使用.Net,因此实际上,“ C#”和“ C#.Net”之间没有区别
Earlz 2011年

作为“ .NET”开发人员,我之所以提出这一主张,是因为我尽可能避免使用语言专有的方法/功能,因此我仅需更改语法就可以跳过所有.NET语言。
韦恩

1
C#语言只是一种语言。您可以使用C#编写任何内容,而无需与.NET后端或框架进行对话。对于那些怀疑我的人,请查看Xamarin C#:一种无需使用任何.NET即可编写iOS和Android本机应用程序的方法。
菲尔·瑞安

@PhilRyan对于它的价值,发布此答案时甚至还没有发明Xamarin。
TylerH

8

由于只有一个答案提到了Mono,而没有进行详细介绍:

尽管C#作为一种语言最初是由Microsoft作为.NET Framework的一部分开发的,但是后来由ECMA对其进行了标准化,这意味着可以开发独立的,符合标准的语言实现,而且确实如此。其中最突出的是Mono

Mono是与.NET Framework兼容的,符合ECMA标准的一组工具的开源实现,包括C#编译器和CLI实现(Mono Runtime,等效于Microsoft的CLR-.NET Framework虚拟机)。目的是跨平台运行.NET应用程序。到目前为止,它支持C#4.0和.NET Framework功能的大部分。除镜像Microsoft实施外,Mono团队还进行了自己的创新。

因此,是的,在没有.NET的情况下使用C#工作是可行且可行的。但是,Mono不太可能在现在和不久的将来无法与Microsoft的市场份额和.NET Framework的地位相抗衡。


正在等待有人解释Mono,以纠正错误的假设,即您不与.NET配对就永远不会看到C#。+1。
KChaloux

7

乔恩·斯基特(Jon Skeet)的书《深度C#》相当简洁地分解了.NET。通常与

  1. 编程语言(C#,VB)
  2. 运行这些语言的字节码的运行库(CLR)被编译为。
  3. 框架库(Windows Forms / ASP.NET)

2

其他答案很好地解释了每种技术的含义,但我认为它们错过了造成混淆的主要原因之一。C#和C#.NET本质上是同义词,但是VB.NET和VB不同,ASP和ASP.NET也不同。VB通常指的是VB6及更早版本,而ASP指的是经典ASP。这些技术是通过.NET框架的发布进行了彻底的重新设计,而不是为Microsoft在几乎所有内容上附加.NET的产品提出了新的名称,但是C#还是新的,因此两个名称实际上都指的是同一件事。


0

您必须区分语言,框架,CLR,模式和编程方法。

尽管ASP.Net具有相同的基础,但它们使用完全不同的编程模式来进行Winforms开发。您可以使用多种语言对ASP.net和.Net应用程序进行编程。

然后,在Mono上下文中使用了Mono和C#语言-可能值得研究。

阅读以下链接:
http : //en.wikipedia.org/wiki/Common_Language_Runtime
http://en.wikipedia.org/wiki/.NET_Framework#Alternative_implementations
http://en.wikipedia.org/wiki/文件: Overview_of_the_Common_Language_Infrastructure.svg


“您可以使用多种语言对ASP.net和.Net应用程序进行编程。” 我不确定这是什么意思。您说可以用多种语言编写ASP.net程序。但我认为ASP是语言和.NET为你添加的框架。
梅根·沃克

ASP.net是一个框架,我将其视为一种编程方法。可以使用此列表中的任何语言对ASP.net进行编码。en.wikipedia.org/ wiki/List_of_CLI_languages ASP类不能。
杰里米

1
ASP不是一种语言。
Marcie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.