it-swarm.cn

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

我真的不清楚C#,C#.NET与ASP和其他'.NET'语言)之间的区别。

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

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

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

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

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

146
Megan Walker

我了解您的困惑,相信我在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中用于创建传统桌面应用程序的技术。

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

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

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

172
PaulCarroll

.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是一种较旧且过时的技术,请不要为此烦恼。

23
Grant Palin

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

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

最后,ASP IS与ASP.Net不同。它们有很大的不同

14
Earlz

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

尽管C#作为一种语言最初是由Microsoft作为.NET Framework的一部分开发的,但后来通过 [〜#〜] ecma [〜#〜] 进行了标准化,这意味着C#的独立符合标准的实现语言可以被开发,而且确实可以。其中最突出的是 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的位置相抗衡。

8
scrwtp

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

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

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

2
Ryathal

您必须区分语言,框架,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://zh.wikipedia.org/wiki/File:Overview_of_the_Common_Language_Infrastructure.svg

0
Jeremy