ASP和C#之间的语义差异是什么?

4
请原谅我对此问题的无知,我是一名经验丰富的PHP程序员,除了一些Ruby之外,没有接触过其他Web编程语言。
有人告诉我ASP和ASP.NET与PHP有些相似,因为它们基本上执行相同的任务,即处理POST和GET请求,可以打印HTML,访问数据库等等。
既然它们很相似,而在PHP中我基本上可以做到Web应用程序所需的一切,那么Microsoft Stack中的另一种语言——C#有什么必要吗?
如果我没记错,C#是SO(Stack Overflow)上最受欢迎的语言之一,所以我猜我可能遗漏了一些重要信息。
能否给我一些澄清?先谢谢了。
6个回答

5
好的,这里涉及到3个层面。
  1. C# <- 这是一种原始的编程语言。它可以像其他语言一样单独使用。这大致相当于PHP、Ruby、Perl等。

  2. .NET <- 这是一个框架,用于与任何支持的语言的库进行本地交互。如果没有.NET,如果你想在C#应用程序中使用VB类,你需要构建某种接口(例如通过网络的RPC或命令行包装器等)。有了.NET,你就可以直接与VB.NET类以及其他C#类(和数据等)进行交互。基本上,它使集成多种语言更容易。PHP中没有类似的东西...

  3. ASP <- 这是一个用于构建基于Web的应用程序的框架。请记住,C#和VB是(缺乏更好的术语)通用语言。语言内置没有用于处理网站的内容。因此,ASP添加了一个层次结构来使创建网站变得更加容易(请求处理、MVC库等)。这类似于PHP中的框架概念(如Zend Framework)。

现在,有两个版本的ASP。旧版(称为Classic ASP)和新版(ASP.NET)。区别在于ASP.NET是建立在.NET框架之上的。因此,使用ASP.NET允许你使用你选择的语言创建网站(只要它具有.NET绑定,例如C#或VB.NET等)。

ASP.NET.NET只是现有编程语言(C#在这种情况下,但也支持许多其他语言)之上的层。它们存在是为了让你的生活更轻松。它们所做的一切都可以用纯C#来完成,但框架存在是为了抽象出常见的主题,让你专注于解决问题(像任何好的框架一样)。...


1

ASP.NET是一个Web开发框架,您可以使用C#(或VB.NET)进行接口交互。

C#只是为.NET实现的一种语言。


是的,但是ASP不像PHP一样拥有你需要的所有逻辑,为什么我还需要另一种编程语言(C#)呢? - Felipe
5
ASP不是一种编程语言,而C#是。ASP是平台/API的名称。 - Emond
不是编程语言?那这是什么?<html> <body> <% response.write("My first ASP script!") %> </body> </html> 我并不是在挖苦,我真的不知道。 - Felipe
你上面发布的代码不是C#,它包含了一些C#的部分,但这些都是与纯html一起使用的ASP.NET标签。 而且,使用C#可以做比仅仅使用ASP.NET更多的事情。 - kubal5003
2
那是一个带有服务器端脚本的ASP网页,脚本是使用VBScript编写的,嵌入在HTML中。该脚本调用了ASP Response类,将字符串输出到HTTP响应流中。VBScript代码可以在不同的运行时环境中执行,例如Windows命令行界面。 - Matt Crouch

1

PHP和asp/asp.net在某些方面相似,但是在网站实现方面却有很大的不同。在PHP中,您可以将php代码与html集成,使得创建动态网页变得非常容易。而asp.net基本上是微软提供的一种简单的创建html、轻松放置和实现服务器端和客户端脚本/代码的方式。您需要了解C#或VB才能实现.NET服务器端代码。


1

正如阿基里斯所说,ASP.NET是一个具有许多有趣功能的框架。它不是一种编程语言。你不能使用.NET或者ASP.NET来写代码,你需要使用其中一种.NET友好的编程语言,比如C#。

举个例子,你可以完全绕过.NET并选择使用Mono项目来编写C#代码,这是一个类似于.NET的框架,但不是来自微软。

进一步澄清,你可以编写aspx页面,但你将使用HTML和ASP.NET服务器控件的组合,或者根据情况使用MVC,在此aspx页面上将使用HTML和C#代码的组合。


1

所以...我在另一个答案中复制粘贴的代码片段(<html> <body> <% response.write("My first ASP script!") %> </body> </html>)就是你所说的经典ASP? - Felipe
@Felipe 不是这样的。 <% %> 是内联代码标记,可以嵌入到 HTML 页面中。标记之间的代码是您在 HTML 页面顶部注册为“页面语言”的任何语言,对于您的情况,可能是 VBscript。再次强调,ASP 不是一种语言。它更像是一个引擎,解析包含 HTML 和其他指定代码的 ASP 页面。您选择了错误的答案,无意冒犯。第一个超链接甚至不是实际页面的相同标题。这是误导性的。http://msdn.microsoft.com/en-us/library/ms178135%28vs.80%29.aspx - Nick Rolando

0

如果要编写ASP.NET页面,您需要像C#或VB.NET这样的语言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接