ASP.NET网站或ASP.NET Web应用程序?(ASP.NET Web Site or ASP

2019-09-23 22:27发布

当我在Visual Studio中开始新的ASP.NET项目,我可以创建一个ASP.NET Web应用程序或我可以创建一个ASP.NET Web站点。

什么是ASP.NET Web应用程序和ASP.NET Web站点之间的区别? 为什么我会选择一个比其他?

是基于不同的答案上的Visual Studio的版本我使用?

Answer 1:

网站:

网站项目被编译的飞行。 你最终获得更多的DLL文件,它可以是一个痛苦。 这也给了问题,当你有一个目录需要参考页面和控件在另一个目录中,因为其他目录可能还没有编译成的代码页或控制。 另一个问题是在出版。

如果Visual Studio未告知要不断地重新使用相同的名称,它会拿出供所有页面时所产生的DLL文件的新名称。 这可能会导致其含有相同的类名,这将产生大量错误的DLL文件数接近副本。 网站项目与Visual Studio 2005中引入的,但它已被证明不是非常流行。

Web应用程序:

Web应用程序项目创建为一个附加的和现在存在作为Visual Studio 2005的主要区别是在Web应用程序项目的设计工作类似与Visual Studio 2003年它将附带的Web项目SP 1的一部分编译在构建时应用到一个单一的DLL文件。 为了更新项目,就必须重新编译和DLL文件公布了发生的变化。

Web应用程序项目的另一个特点是,它更容易从项目视图中排除的文件。 在网站项目,每个要排除的文件进行重命名,在文件名的关键字排除。 在Web应用程序项目,该项目刚跟踪哪些文件包含/从项目视图中排除不重命名它们,使事情更为整洁。

参考

文章ASP.NET 2.0 -网站VS Web应用程序项目还给出了为什么要使用一个,而不是其他原因。 这里是它的摘录:

  • 你需要大量的Visual Studio .NET 2003和应用程序迁移到VS 2005? 使用Web应用程序项目。
  • 要打开和编辑任何目录作为Web项目,而无需创建一个项目文件? 使用网站项目。
  • 你需要在编译过程中添加预构建和生成后的步骤? 使用Web应用程序项目。
  • 你需要建立使用多个Web项目的Web应用程序? 使用Web应用程序项目。
  • 你要为每一个页面一个集会? 使用网站项目。
  • 你喜欢动态编译和网页的工作,而不在每个页面视图构建整个网站? 使用网站项目。
  • 你喜欢单页代码模型到代码隐藏模型? 使用网站项目。

Web应用程序项目与网站项目 (MSDN)解释了网站和Web应用程序项目之间的差异。 此外,它讨论了在Visual Studio中进行配置。



Answer 2:

网站是你什么部署到ASP.NET Web服务器,如IIS。 只是一堆文件和文件夹。 有没有在一个网站,你绑到Visual Studio(没有项目文件)。 代码生成和网页(如的.aspx,名为.ascx,名为.master)编制完成在运行时动态 ,以及更改这些文件是由框架自动检测并重新编译。 你可以把你想要的代码页之间共享的特殊App_Code文件夹,也可以预编译,并把大会Bin文件夹。

Web应用程序是一种特殊的Visual Studio项目。 与网站的主要区别是,当你建立了项目中的所有代码文件被编译成一个单一的组件,这是摆在bin目录中。 你不代码文件部署到Web服务器。 相反,具有你可以把他们的任何地方共享代码文件的特殊文件夹,就像你会在类库做。 因为Web应用程序包含不意味着要部署的文件,如项目和代码的文件,有一个发布在Visual Studio命令输出的网站到指定的位置。

App_Code文件VS斌

部署共享代码文件通常是一个坏主意,但是,这并不意味着你必须选择Web应用程序。 你可以有一个网站引用了适用于该网站的所有代码一个类库项目。 Web应用程序只是做一种方便的方式。

代码隐藏

本主题是特定的.aspx和.ascx文件。 这个主题是在新的应用程序框架,如ASP.NET MVC和ASP.NET网页中不使用代码隐藏文件的相关递减。

通过让所有的代码文件编译成一个单一的组件,包括代码隐藏的.aspx页面和控件名为.ascx的文件,在Web应用程序,你必须重新建立的每个细微变化,而不能进行实时的变化。 这可能是在开发过程中一个真正的痛苦,因为你要不断重楼看到的变化,同时与Web站点的变化,由运行时和网页上检测/控件自动重新编译。

具有运行管理代码隐藏组件是为你工作少,因为你不必担心给页/控制唯一的名称,或将它们组织成不同的命名空间。

我不是说(不是共享代码文件的情况下,特别情况下)部署代码文件始终是一个好主意,但代码隐藏文件应该只包含UI执行特定任务的代码,线了事件处理程序,等您的应用程序应该是分层,这样重要的代码总是在Bin文件夹结束。 如果是这样,然后部署代码隐藏文件的情况下不应该被认为是有害的。

Web应用程序的另一个限制是,你只能使用该项目的语言。 在网站上,您可以在C#中一些网页,一些在VB等无需特殊的Visual Studio支持。 这是生成提供可扩展的美感。

此外,在Web应用程序,你不要在页/控制错误检测,因为编译器只编译代码隐藏的类,而不是标记代码,它在运行时编译(MVC中,你可以这样使用MvcBuildViews选项修复)。

视觉工作室

因为Web应用程序的Visual Studio项目你会得到一些网站不具备的特性。 例如,你可以使用建立事件来执行各种任务,例如运行如下和/或合并JavaScript文件。

在Visual Studio 2010中引入的另一个不错的功能是Web.config中转型 。 这还不算在网站提供。 现在与网站在VS 2013。

构建Web应用程序是不是建立一个网站,专门为大型网站更快。 这主要是因为Web应用程序不编译标记代码。 在MVC,如果你设置MvcBuildViews为true,那么它编译标记代码,你会得到错误检测,这是非常有用的。 不利的一面是,每次你构建解决方案时它建立完整的网站,这可能是缓慢和低效,特别是如果你没有网站编辑。 升发现自己开启MvcBuildViews和关闭(这需要一个项目卸载)。 在另一方面,有网站,你可以,如果你想建立网站作为解决与否的一部分选择。 如果您选择不,然后构建解决方案是非常快的,你可以随时点击网站节点,并选择基础上,如果你所做的更改。

在MVC Web应用程序项目,你有额外的命令和常见任务的对话,比如“添加视图”,“去查看”,“添加控制器”等,这些都不是在MVC Web站点上。

如果您使用IIS Express作为开发服务器,在网站中可以添加虚拟目录。 此选项在Web应用程序可用。

NuGet包还原上的网站不能正常工作,你必须手动安装在packages.config列出的软件包 包现在恢复工作与网站开始的NuGet 2.7



Answer 3:

网站 =使用时,由平面设计师创建的网站和程序员只能编辑一两页

Web应用程序 =当程序员创建的应用程序和图形设计师只能编辑一个或两个分页/图片使用。

网站可以使用任何HTML工具来工作,而不必拥有开发工作室,为项目文件并不需要更新,等Web应用程序是最好的,当球队大多采用开发工作室,并有一个高的代码内容。

(一些编码错误在编译时Web应用程序未在网站上找到,直到运行时发现的。)

警告: 许多年前我写了这个答案,因为没有使用Asp.net。 我希望现在事情已经转移。



Answer 4:

除非你有一个动态编译项目的特定需要, 不使用网站项目

为什么? 由于网站项目将推动你了墙时试图改变或理解您的项目。 静态类型的发现功能(例如寻找惯例,重构)在Visual Studio将永远都采取任何合理规模的项目。 欲了解更多信息,请参阅堆栈溢出问题慢“查找所有引用”在Visual Studio中

我真的不明白为什么他们在Visual Studio 2005年下降Web应用程序的疼痛诱导,清醒,排水,生产力痈网站项目类型。



Answer 5:

有一个在MSDN的一篇文章描述了不同之处:

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

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

  • 网站与Visual Studio中ASP.Net Web应用程序 注:已被删除,不再SO
  • 网站或web应用in.ASP.NET


Answer 6:

这可能听起来有点明显,但我认为它的东西,被人误解,因为Visual Studio 2005中只与该网站最初发货。 如果您的项目有一个网站,是相当有限的,不会有很多的逻辑或物理分离的交易,该网站是好的。 但是,如果它是真正的与许多用户添加和更新数据的不同模块的Web应用程序,你是关闭与Web应用程序更好。

网站模式的最大亲的是,在任何app_code部分动态编译。 你可以让C#的文件更新不完整的重新部署。 然而,这是在一个巨大的牺牲。 难以控制在幕后有很多事情发生。 命名空间是难以控制和具体的DLL用法就走出了窗外默认下任何app_code因为一切都是动态编译。

Web应用程序模型中没有动态编译,但你获得了我所提到的东西控制。

如果你正在做的n层的发展,我强烈推荐的网络应用模式。 如果你正在做一个有限的网站或一个快速和肮脏的实施,该网站模式可能具有的优势。

更详细的分析可以发现:

  • Web应用程序项目和Web部署项目在这里
  • 网站或Web应用程序?


Answer 7:

从MCTS自定进度培训工具包考试70-515书:

随着Web应用程序(项目),

  1. 您可以创建一个MVC应用程序。
  2. Visual Studio中存储的文件在项目文件(.csproj或.vbproj),而不是依赖于文件夹结构列表。
  3. 不能混合Visual Basic和C#。
  4. 不停止调试会话您不能编辑代码。
  5. 你可以建立多个网络项目之间的依赖关系。
  6. 你必须编译部署之前的应用程序,它会阻止您测试页面,如果另一个页面将无法编译。
  7. 您没有到源代码存储在服务器上。
  8. 您可以控制组件的名称和版本。
  9. 无需重新编译您不能编辑部署后单独的文件。


Answer 8:

Compilation首先出现在编译的差异。 网站不上服务器预编译的,它被编译的文件。 这可能是一个优势,因为当你想改变的东西在你的网站,你可以刚刚从服务器下载特定文件,更改并上传该文件回服务器,一切都将正常工作。 在Web应用程序,因为寄托都为预编译和你最终只有一个DLL,你不能做到这一点。 当你在你的项目中的一个文件改变的东西,你必须再重新编译一切。 所以,如果你想有一个可能改变服务器上的Web站点的一些文件是你更好的解决方案。 这也让很多开发者在一个网站工作。 在另一边,如果你不想让你的代码是可用的服务器,你应该宁愿选择Web应用程序。 此选项是在发布网站后,进行单元测试也比较好创建因为一个DLL文件。

Project structure也有项目的结构不同。 在Web应用程序,你有跟你一样在正常的应用程序有它的一个项目文件。 在Web站点没有传统的项目文件,你必须是解决方案文件。 所有参考文献和设置存储在web.config文件。 @Page directive中有@ Page指令不同的属性,其中包含与此页面关联的类文件。 在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" %> 

命名空间 - 在上面的例子中,你还可以看到另一个不同之处 - 如何创建命名空间。 在Web应用程序的命名空间只是项目的名称。 在网站上有默认的命名空间ASP的动态编译页面。

编辑和Continue-在Web应用程序编辑并继续选项可用(打开它,你必须去工具菜单,单击选项然后找到编辑和调试继续)。 此功能在网页Site.ASP.NET MVCIf工作,你要使用开发Web应用程序

ASP.NET MVC(模型 - 视图 - 控制器)最好的,默认选项是Web应用程序。 尽管可以在Web站点使用MVC它不推荐使用。

摘要 - ASP.NET Web应用程序和网站之间最重要的区别是编译。 所以,如果你在一个更大的项目工作,其中有几个人可以修改它,它更好地使用网站。 但是,如果你正在做一个小项目,你可以使用Web应用程序也是如此。



Answer 9:

这取决于你正在开发的东西。

一个面向内容的网站将有它的内容经常变化,一个网站是更好。

应用程序往往已经存储在数据库和它的页面和代码变化很少的数据。 在这种情况下,最好有一个Web应用程序,其中组件的部署更加可控和有单元测试更好的支持。



Answer 10:

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

  1. 有多个项目在一把伞下,建立项目之间的依赖关系。 例如,对于PCS我们可以网络应用 - 内有如下

    • 门户网站
    • 通知控制器(用于发送电子邮件)
    • 业务层
    • 数据访问层
    • 异常管理
    • 服务器实用程序
    • WCF服务(通用于所有平台)
    • 项目清单
  2. 要运行代码,在与ASP.NET页面相关联的类文件的单元测试

  3. 指那些与从单独的类页和用户控件相关的类
  4. 要为整个网站建立一个单一的组件
  5. 控制是为网站生成的程序集名称和版本号
  6. 为了避免把源代码在生产服务器上。 (你能避免部署源代码到IIS服务器。在某些情况下,如共享的托管环境中,你可能会担心未经授权的访问到源代码的IIS服务器上。(对于一个网站项目,您可以避免这种风险预编译开发计算机上和部署生成的组件而不是源代码。但是,在这种情况下,你失去一些易网站更新的好处。)
  7. 与网站性能问题(第一个请求到Web站点可能需要现场进行编译,这可能会导致延迟。如果该网站是在IIS服务器上运行的是短期记忆,包括在整个网站单个组件可能会使用比将需要多个组件更多的内存。)


Answer 11:

其中一个关键的区别是,网站动态编译和创建即时组件。 网络applicaitons编译成一个大的组装。

两者之间的区别已经在Visual Studio 2008年被废除。



Answer 12:

应用程序通常被部署在那里的网站使用App_Code目录之前编译。 如果一切都在应用程序代码文件夹更改服务器将重新编译代码。 这意味着您可以添加/与上飞网站更改密码。

一个应用程序的优点是,有没有重新编译等初始启动时间会更快。



Answer 13:

我建议您观看视频的Web应用程序项目和Web部署项目的ASP.NET网站,介绍的很详细的不同,它是对我非常有用。

顺便说一句,不要被标题感到困惑,视频的很大一部分解释了网站项目和Web应用程序项目和为什么的区别微软在Visual Studio 2005中重新引入了Web应用程序项目(如你可能已经知道,它原来提供的唯一网站项目,然后Web应用程序项目是在SP1中添加)。 一个伟大的视频我高度推荐的人谁想要知道其中的差别。



Answer 14:

A“网站”有其特殊的App_Code目录中的代码和它编译成几个DLL文件(组件)在运行时。 “网络应用”预编译成一个单一的DLL。



Answer 15:

网站和项目>>网站使用Visual Studio创建ASP.NET应用程序的两种不同的方法。 一个是projectless,另一个是项目的环境。 不同之处

  1. 解决文件存储在同一目录中的项目环境的根目录。
  2. 需要在项目环境中部署之前删除的解决方案和项目文件。
  3. 完整的根目录部署在projectless环境。

有使用这两种方法没有太大根本区别。 但是,如果你创建的网站,将需要更长的时间,选择项目环境。



Answer 16:

Web应用程序项目模型

  • 提供相同的Web项目语义的Visual Studio .NET Web项目。 有一个项目文件(基于项目的文件结构)。 建立模型 - 项目中的所有代码被编译成一个单一的组件。 同时支持IIS和内置的ASP.NET开发服务器。 支持Visual Studio 2005中(重构,仿制药等)的所有功能和ASP.NET的(母版页,成员和登录,网站导航,主题等)。 使用FrontPage服务器扩展(FPSE)不再是必须的。

网站项目模型

  • 没有项目文件(基于文件系统)。
  • 新编译模型。
  • 动态编译和网页的工作,而不在每个页面视图构建整个网站。
  • 同时支持IIS和内置的ASP.NET开发服务器。
  • 每个页面都有它自己的组件。
  • 不同模式的代码模型。


Answer 17:

它始终是取决于客户的要求。 ASP.NET只包括用户需要的安全和维护应用程序的方便灵活等特点。

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

但优点和这两个ASP.NET技术的缺点来什么都好。



Answer 18:

网站 - 没有解决方案文件将被创建。 如果我们要建立的网站没有必要为Visual Studio。

Web应用程序 - 一个解决方案文件将被创建。 如果我们想创建Web应用程序可能需要的视觉工作室。 这将创建一个.dll在bin文件夹中的文件。



Answer 19:

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



Answer 20:

网址:它会自动生成App_Code文件夹,如果你发布在服务器上,之后如果你在任何特定的文件或网页的一些变化不是你没有做编译所有文件。

Web应用程序它会自动生成解决方案文件,网站没有产生,如果你在一个文件中改变比你要编译整个项目,以反映其变化。



Answer 21:

在Web应用程序中,可以创建项目的功能层,可以通过将其分成许多项目创建它们之间相互依存关系,但你永远不能做这样的网站上。



Answer 22:

当然Web应用程序,单个DLL文件并易于维护。 但一个网站是更灵活; 您可以随时随地编辑ASPX文件。



Answer 23:

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()

我对内存受限的传统硬件转换比较大的站点的建议是,选择恢复到网站模式的选项。 即使在经过最初的成功以后的问题可能攀升。



Answer 24:

这里的Web应用支持性是网站的一个例子。 网站和Web应用程序都可以是动态/静态它取决于需求,这里是了解网站和Web应用程序的工作的例子。



Answer 25:

总结上面的一些答案:

灵活性强 ,可您可以对网页实时变化?

网址 :可能。 临:短期利益。 缺点:项目混乱的长期风险。

Web应用程序 :缺点:不可能的。 编辑页面,存档更改源代码控制,然后构建和部署整个网站。 优点:保持了优质工程。

发展问题

网址 :没有.csproj的简单项目结构file.Two .aspx页可能没有冲突相同的类名。 随机项目目录名领导建立类似的错误与它自己生成的文件,为什么.NET框架的冲突和为什么与自己生成的文件.NET框架的冲突 。 优点:简单(简单)。 缺点:飘忽不定。

Web应用程序 :项目结构类似的WebForms项目,一个.csproj的文件。 ASP页面的类名必须是唯一的。 优点:简单(智能)。 缺点:没有,因为一个Web应用程序仍然是简单的。



文章来源: ASP.NET Web Site or ASP.NET Web Application?