当我在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版本而异?
当前回答
其中一个关键区别是网站动态编译和动态创建程序集。Web应用程序编译成一个大型程序集。
Visual Studio 2008中消除了两者之间的区别。
其他回答
绝对是web应用程序,单个DLL文件,易于维护。但网站更灵活;您可以随时编辑aspx文件。
Web应用程序需要更多的内存,可能是因为您别无选择,只能编译成一个程序集。我刚刚将一个大型遗留站点转换为web应用程序,在编译时内存不足,错误消息如下:
Unexpected error writing metadata to file '' --
Not enough storage is available to complete this operation.
错误,并在运行时显示以下错误消息:
Exception information:
Exception type: HttpException
Exception message: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()
我对在内存受限的传统硬件上转换大型站点的建议是,选择恢复到网站模型的选项。即使在最初的成功之后,问题也可能会在以后慢慢出现。
来自MCTS自定进度训练包考试70-515书:
利用web应用程序(项目),您可以创建MVC应用程序。Visual Studio将文件列表存储在项目文件(.csproj或.vbproj)中,而不是依赖于文件夹结构。不能混合使用Visual Basic和C#。不停止调试会话就无法编辑代码。您可以在多个web项目之间建立依赖关系。您必须在部署之前编译应用程序,这将阻止您在另一页无法编译时测试该页。您不必将源代码存储在服务器上。您可以控制程序集名称和版本。如果不重新编译,则无法在部署后编辑单个文件。
这听起来可能有点明显,但我认为这是一种误解,因为VisualStudio2005最初只是随网站一起提供的。如果你的项目涉及一个相当有限的网站,并且没有太多的逻辑或物理分离,那么这个网站就很好。然而,如果它确实是一个具有不同模块的web应用程序,许多用户可以在其中添加和更新数据,那么您最好使用该web应用程序。
网站模型的最大优点是app_code部分中的任何内容都是动态编译的。您可以在没有完全重新部署的情况下进行C#文件更新。然而,这是一个巨大的牺牲。很多事情都发生在难以控制的幕后。命名空间很难控制,app_code下的任何内容默认情况下都会使用特定的DLL,因为所有内容都是动态编译的。
web应用程序模型没有动态编译,但您可以控制我提到的内容。
如果您正在进行n层开发,我强烈推荐web应用程序模型。如果您正在做一个有限的网站或一个快速而肮脏的实现,那么网站模型可能有优势。
更详细的分析见:
Web应用程序项目和Web部署项目位于此处网站还是Web应用程序?
这里Web支持应用程序是网站的一个示例。网站和Web应用程序都可以是动态/静态的,这取决于需求,这里有一个例子来理解网站和Web程序的工作。