当我在Visual Studio中启动新的ASP.NET项目时,我可以创建ASP.NET Web应用程序,也可以创建ASP.NET网站。

ASP.NET Web应用程序和ASP.NET网站之间的区别是什么?为什么我会选择一个而不是另一个?

答案是否因我使用的Visual Studio版本而异?


当前回答

总结以上一些答案:

灵活性,您可以对网页进行实时更改吗?

网站:可能。赞成:短期利益。缺点:项目混乱的长期风险。

Web应用程序:不可能。编辑页面,将更改存档到源代码管理,然后构建和部署整个站点。专业:保持高质量的项目。

发展问题

网站:没有.csproj文件的简单项目结构。两个.aspx页面可以具有相同的类名,而不会发生冲突。随机项目目录名导致生成错误,如为什么.net框架与自己生成的文件冲突,以及为什么.net框架与其自己生成的文档冲突。专业人士:简单(简单化)。缺点:不稳定。

Web应用程序:项目结构类似于WebForms项目,具有.csproj文件。asp页面的类名必须是唯一的。专业:简单(智能)。缺点:没有,因为网络应用程序仍然很简单。

其他回答

是的,web应用程序比网站好得多,因为web应用程序给了我们自由:

在一个伞下有多个项目并建立项目之间的依赖关系。例如,对于PCS,我们可以在web中进行以下操作应用程序-Web门户通知控制器(用于发送电子邮件)业务层数据访问层异常管理器服务器实用程序WCF服务(所有平台通用)列表项目对类文件中的代码运行单元测试与ASP.NET页面关联参考以下类别与独立类中的页面和用户控件关联为整个站点创建单个部件的步骤控制为站点生成的程序集名称和版本号避免将源代码放在生产服务器上。(你可以避免将源代码部署到IIS服务器。在某些情况下,例如共享托管环境,您可能会担心未经授权访问IIS服务器上的源代码。(对于web站点项目,您可以通过在开发计算机并部署生成的程序集源代码的。然而,在这种情况下轻松更新网站的好处。)网站性能问题(对网站的第一请求可能需要编译网站,这可能导致延迟。如果网站运行在内存不足的IIS服务器,包括单个程序集使用的内存可能比多个组件。)

MSDN中有一篇文章描述了这些差异:

比较网站项目和Web应用程序项目

BTW:关于这个话题有一些类似的问题,例如:

Visual Studio中的网站与ASP.Net Web应用程序之比较注意:已删除,不再在SO中ASP.NET中的网站或Web应用程序

在Web应用程序项目中,Visual Studio需要用于页面和用户控件的其他.designer文件。网站项目不需要此开销。标记本身被解释为设计。

这始终取决于客户的要求。ASP.NET仅包含用户需要的灵活功能,以确保应用程序的安全性和易于维护。

您可以将Web应用程序视为在ASP.NET框架内运行的二进制文件。网站是一个静态网页,您可以查看并轻松部署源代码。

但这两种ASP.NET技术的优点和缺点都是好的。

这听起来可能有点明显,但我认为这是一种误解,因为VisualStudio2005最初只是随网站一起提供的。如果你的项目涉及一个相当有限的网站,并且没有太多的逻辑或物理分离,那么这个网站就很好。然而,如果它确实是一个具有不同模块的web应用程序,许多用户可以在其中添加和更新数据,那么您最好使用该web应用程序。

网站模型的最大优点是app_code部分中的任何内容都是动态编译的。您可以在没有完全重新部署的情况下进行C#文件更新。然而,这是一个巨大的牺牲。很多事情都发生在难以控制的幕后。命名空间很难控制,app_code下的任何内容默认情况下都会使用特定的DLL,因为所有内容都是动态编译的。

web应用程序模型没有动态编译,但您可以控制我提到的内容。

如果您正在进行n层开发,我强烈推荐web应用程序模型。如果您正在做一个有限的网站或一个快速而肮脏的实现,那么网站模型可能有优势。

更详细的分析见:

Web应用程序项目和Web部署项目位于此处网站还是Web应用程序?