当我在Visual Studio中启动新的ASP.NET项目时,我可以创建ASP.NET Web应用程序,也可以创建ASP.NET网站。
ASP.NET Web应用程序和ASP.NET网站之间的区别是什么?为什么我会选择一个而不是另一个?
答案是否因我使用的Visual Studio版本而异?
当我在Visual Studio中启动新的ASP.NET项目时,我可以创建ASP.NET Web应用程序,也可以创建ASP.NET网站。
ASP.NET Web应用程序和ASP.NET网站之间的区别是什么?为什么我会选择一个而不是另一个?
答案是否因我使用的Visual Studio版本而异?
当前回答
我建议您观看ASP.NET网站上的“Web应用程序项目和Web部署项目”视频,该视频非常详细地解释了差异,这对我很有帮助。
顺便说一句,不要被标题所迷惑,视频的很大一部分解释了网站项目和web应用程序项目之间的区别,以及为什么Microsoft在Visual studio 2005中重新引入web应用程序(正如您可能已经知道的那样,它最初只提供网站项目,然后在SP1中添加了web应用程序)。这是一个很棒的视频,我强烈推荐给任何想了解差异的人。
其他回答
MSDN中有一篇文章描述了这些差异:
比较网站项目和Web应用程序项目
BTW:关于这个话题有一些类似的问题,例如:
Visual Studio中的网站与ASP.Net Web应用程序之比较注意:已删除,不再在SO中ASP.NET中的网站或Web应用程序
这听起来可能有点明显,但我认为这是一种误解,因为VisualStudio2005最初只是随网站一起提供的。如果你的项目涉及一个相当有限的网站,并且没有太多的逻辑或物理分离,那么这个网站就很好。然而,如果它确实是一个具有不同模块的web应用程序,许多用户可以在其中添加和更新数据,那么您最好使用该web应用程序。
网站模型的最大优点是app_code部分中的任何内容都是动态编译的。您可以在没有完全重新部署的情况下进行C#文件更新。然而,这是一个巨大的牺牲。很多事情都发生在难以控制的幕后。命名空间很难控制,app_code下的任何内容默认情况下都会使用特定的DLL,因为所有内容都是动态编译的。
web应用程序模型没有动态编译,但您可以控制我提到的内容。
如果您正在进行n层开发,我强烈推荐web应用程序模型。如果您正在做一个有限的网站或一个快速而肮脏的实现,那么网站模型可能有优势。
更详细的分析见:
Web应用程序项目和Web部署项目位于此处网站还是Web应用程序?
网站-不会创建解决方案文件。如果我们想创建网站,不需要visual studio。
Web应用程序-将创建解决方案文件。如果我们想创建web应用程序,应该需要visual studio。它将在bin文件夹中创建一个.dll文件。
应用程序通常在部署之前编译,因为网站使用app_code目录。当应用程序代码文件夹中发生任何更改时,服务器将重新编译代码。这意味着您可以随时在网站上添加/更改代码。
应用程序的优点是无需重新编译,因此初始启动时间会更快。
总结以上一些答案:
灵活性,您可以对网页进行实时更改吗?
网站:可能。赞成:短期利益。缺点:项目混乱的长期风险。
Web应用程序:不可能。编辑页面,将更改存档到源代码管理,然后构建和部署整个站点。专业:保持高质量的项目。
发展问题
网站:没有.csproj文件的简单项目结构。两个.aspx页面可以具有相同的类名,而不会发生冲突。随机项目目录名导致生成错误,如为什么.net框架与自己生成的文件冲突,以及为什么.net框架与其自己生成的文档冲突。专业人士:简单(简单化)。缺点:不稳定。
Web应用程序:项目结构类似于WebForms项目,具有.csproj文件。asp页面的类名必须是唯一的。专业:简单(智能)。缺点:没有,因为网络应用程序仍然很简单。