当我在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应用程序视为在ASP.NET框架内运行的二进制文件。网站是一个静态网页,您可以查看并轻松部署源代码。
但这两种ASP.NET技术的优点和缺点都是好的。
其他回答
除非您特别需要动态编译的项目,否则不要使用网站项目。
为什么?因为当你试图改变或理解你的项目时,网站项目会把你逼疯。Visual Studio中的静态类型查找功能(例如查找用法、重构)将永远适用于任何大小合理的项目。有关详细信息,请参阅Visual Studio中的堆栈溢出问题慢速“查找所有引用”。
我真的看不出他们为什么会放弃Visual Studio 2005中的web应用程序,因为它是一种令人痛苦、精神错乱、效率低下的网站项目类型。
这听起来可能有点明显,但我认为这是一种误解,因为VisualStudio2005最初只是随网站一起提供的。如果你的项目涉及一个相当有限的网站,并且没有太多的逻辑或物理分离,那么这个网站就很好。然而,如果它确实是一个具有不同模块的web应用程序,许多用户可以在其中添加和更新数据,那么您最好使用该web应用程序。
网站模型的最大优点是app_code部分中的任何内容都是动态编译的。您可以在没有完全重新部署的情况下进行C#文件更新。然而,这是一个巨大的牺牲。很多事情都发生在难以控制的幕后。命名空间很难控制,app_code下的任何内容默认情况下都会使用特定的DLL,因为所有内容都是动态编译的。
web应用程序模型没有动态编译,但您可以控制我提到的内容。
如果您正在进行n层开发,我强烈推荐web应用程序模型。如果您正在做一个有限的网站或一个快速而肮脏的实现,那么网站模型可能有优势。
更详细的分析见:
Web应用程序项目和Web部署项目位于此处网站还是Web应用程序?
这取决于你在发展什么。
一个以内容为导向的网站会经常改变其内容,而网站更适合于此。
应用程序倾向于将其数据存储在数据库中,其页面和代码很少更改。在这种情况下,最好有一个Web应用程序,其中程序集的部署更受控制,并且更好地支持单元测试。
网站-不会创建解决方案文件。如果我们想创建网站,不需要visual studio。
Web应用程序-将创建解决方案文件。如果我们想创建web应用程序,应该需要visual studio。它将在bin文件夹中创建一个.dll文件。
编译首先,编译是有区别的。网站不是在服务器上预编译的,而是在文件上编译的。可能是这是一个优势,因为当您想要更改Web中的某些内容时站点您只需从服务器下载一个特定的文件,更改它并把这个文件上传回服务器,一切都会正常。在Web中应用程序无法执行此操作,因为所有内容都是预编译的你最终只有一个dll。当您更改一个文件中的内容时您的项目必须重新编译所有内容。所以如果你愿意希望能够更改服务器上的某些文件。网站是更好的解决方案。它还允许许多开发人员开发一个网站。另一方面,如果您不希望代码您应该选择Web应用程序。这选项对于单元测试也更好,因为一个DLL文件在发布网站后创建。
项目结构项目的结构也存在差异。在Web应用程序中,您有一个项目文件,就像在普通应用程序中一样。在网站中,并没有传统的项目文件,只有解决方案文件。所有引用和设置都存储在web.config文件中。@Page指令对于包含与此页面关联的类的文件,@Page指令中有一个不同的属性。在Web应用程序中,它是标准的“CodeBehind”,在Web站点中使用“CodeFile”。您可以在以下示例中看到这一点:
Web应用程序:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="WebApplication._Default" %>
网站:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
命名空间-在上面的示例中,您还可以看到另一个区别-如何创建命名空间。In-Web Application命名空间只是一个项目名称。在网站中有默认的命名空间ASP动态编译页面。编辑并继续-在Web应用程序中,“编辑并继续”选项为可用(要打开它,必须转到“工具”菜单,单击“选项”然后在调试中找到“编辑并继续”)。此功能不起作用在Web Site.ASP.NET MVCI中,如果要使用ASP.NET MVC(模型视图控制器)最佳和默认选项是Web应用程序。尽管可以在Web站点中使用MVC不建议使用。摘要-ASP.NET Web应用程序之间最重要的区别网站是编译。所以如果你在一个更大的项目上工作少数人可以修改它,最好使用网站。但如果你是做一个较小的项目,您也可以使用Web应用程序。