当我在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版本而异?
当前回答
这听起来可能有点明显,但我认为这是一种误解,因为VisualStudio2005最初只是随网站一起提供的。如果你的项目涉及一个相当有限的网站,并且没有太多的逻辑或物理分离,那么这个网站就很好。然而,如果它确实是一个具有不同模块的web应用程序,许多用户可以在其中添加和更新数据,那么您最好使用该web应用程序。
网站模型的最大优点是app_code部分中的任何内容都是动态编译的。您可以在没有完全重新部署的情况下进行C#文件更新。然而,这是一个巨大的牺牲。很多事情都发生在难以控制的幕后。命名空间很难控制,app_code下的任何内容默认情况下都会使用特定的DLL,因为所有内容都是动态编译的。
web应用程序模型没有动态编译,但您可以控制我提到的内容。
如果您正在进行n层开发,我强烈推荐web应用程序模型。如果您正在做一个有限的网站或一个快速而肮脏的实现,那么网站模型可能有优势。
更详细的分析见:
Web应用程序项目和Web部署项目位于此处网站还是Web应用程序?
其他回答
网站-不会创建解决方案文件。如果我们想创建网站,不需要visual studio。
Web应用程序-将创建解决方案文件。如果我们想创建web应用程序,应该需要visual studio。它将在bin文件夹中创建一个.dll文件。
网站=当网站由图形设计师创建且程序员仅编辑一到两页时使用
Web应用程序=当应用程序由程序员创建且图形设计师仅编辑一页或两页/图像时使用。
网站可以使用任何HTML工具进行工作,而不必使用开发人员工作室,因为项目文件不需要更新等。当团队主要使用开发人员studio并且代码内容较高时,Web应用程序是最佳的。
(某些编码错误在编译时在Web应用程序中发现,直到运行时才在Web站点中发现。)
警告:我多年前就写过这个答案,之后就再也没有使用Asp.net了。我想事情已经开始了。
这始终取决于客户的要求。ASP.NET仅包含用户需要的灵活功能,以确保应用程序的安全性和易于维护。
您可以将Web应用程序视为在ASP.NET框架内运行的二进制文件。网站是一个静态网页,您可以查看并轻松部署源代码。
但这两种ASP.NET技术的优点和缺点都是好的。
“网站”的代码位于一个特殊的App_code目录中,并且在运行时被编译为多个DLL(程序集)。“web应用程序”被预编译为一个DLL。
网站:
网站项目是动态编译的。你最终会得到更多的DLL文件,这可能是一件痛苦的事。当一个目录中的页面或控件需要引用另一个目录的页面和控件时,这也会带来问题,因为其他目录可能尚未编译到代码中。另一个问题可能是出版。
如果Visual Studio没有被告知要经常重复使用相同的名称,它将为页面始终生成的DLL文件提供新名称。这可能导致具有包含相同类名的DLL文件的多个紧密副本,这将产生大量误差。网站项目是在VisualStudio2005中引入的,但事实证明它并不流行。
Web应用程序:
Web应用程序项目是作为外接程序创建的,现在作为一部分存在Visual Studio 2005的SP 1。主要区别在于Web应用程序项目设计为与Visual Studio 2003附带的Web项目类似。它将在构建时将应用程序编译为单个DLL文件时间若要更新项目,必须重新编译该项目,并且DLL文件发布以进行更改。
Web应用程序的另一个好特性从项目视图中排除文件要容易得多。在网站项目,您排除的每个文件都将重命名为文件名中的关键字。在Web应用程序项目中跟踪项目视图中要包含/排除的文件重新命名它们,使事情更加整洁。
参考
ASP.NET 2.0-网站与Web应用程序项目这篇文章也给出了为什么使用其中一个而不是另一个的原因。以下是摘录:
您需要将大型Visual Studio.NET 2003应用程序迁移到VS2005? 使用Web应用程序项目。您希望将任何目录作为Web项目打开和编辑,而不需要创建项目文件?使用网站项目您需要在编译期间添加预编译和后编译步骤吗?使用Web应用程序项目。您需要使用多个Web构建Web应用程序项目?使用Web应用程序项目。是否要为每个页面生成一个程序集?使用网站项目。您更喜欢动态编译和在不构建的情况下处理页面每个页面视图上的整个站点?使用Web现场项目。您更喜欢单页代码模型而不是代码隐藏模型?使用网站项目
Web应用程序项目与Web站点项目(MSDN)解释了Web站点和Web应用程序之间的差异。此外,它还讨论了在Visual Studio中进行的配置。