Web 应用程序项目与网站项目

news/2024/5/16 19:57:30/文章来源:https://blog.csdn.net/cxzhq2002/article/details/7797241

在 Visual Studio 中,可以创建“Web 应用程序项目”或“网站项目”。每种项目类型各有优缺点,要选择可以满足需要的最佳项目类型,应了解各项目类型之间的差异。创建项目之前,必须选择合适的项目类型,原因是从一种项目类型转换到另一种项目类型并不可行。

注意注意

在某些情况下无法进行选择。 例如,如果要创建一个 ASP.NET MVC 应用程序,您必须使用 Web 应用程序项目。

本主题包含以下各节:

  • 方案

  • 差异摘要

  • 项目文件结构

  • 编译

  • 部署

方案

优先选择 Web 应用程序项目的情况包括:

  • 需要在不停止调试会话的情况下能够编辑代码。

  • 需要对与 ASP.NET 页关联的类文件中的代码运行单元测试。

  • 需要从独立类中引用与页和用户控件关联的类。

  • 您希望在多个 Web 项目之间建立项目相关性。

  • 您希望编译器为整个站点创建单个程序集。

  • 您要控制为站点生成的程序集的名称和版本号。

  • 需要使用 MSBuild 或 Team Build 编译项目。 例如,您可能希望添加预先生成和后期生成步骤。

  • 需要避免将源代码放置在生产服务器上。

  • 需要使用 Visual Studio 2010 中提供的自动化部署工具。

优先选择网站项目的情况包括:

  • 需要在单个 Web 项目中同时包含 C# 和 Visual Basic 代码。(默认情况下,是根据项目文件中的语言设置编译 Web 应用程序的。 可以设置例外情况,但相对较难。)

  • 需要在 Visual Studio 中打开生产站点和使用 FTP 对其进行实时更新。

  • 不希望必须显式编译项目才能部署项目。

  • 如果预编译站点,您希望编译器为站点创建多个程序集,可以是每个页面或用户控件一个程序集,也可以是每个文件夹一个或多个程序集。

  • 您希望能够通过仅将新版本复制到生产服务器,或通过在生产服务器上直接编辑文件来更新生产中的各个文件。

  • 如果预编译站点,您希望能更新各 ASP.NET 网页(.aspx 文件),而无需重新编译整个网站。

  • 您希望在生产服务器上保留源代码,以便用作附加备份副本。

差异摘要

下表总结了主要差异。

区域

Web 应用程序项目

网站项目

项目文件结构

Visual Studio 项目文件(.csproj 或 .vbproj)存储有关项目的信息,如项目中包含的文件列表和项目间的任何引用。

不存在项目文件(.csproj 或 .vbproj)。 文件夹结构中的所有文件自动包含在站点中。

编译

  • 在用于开发或源代码控制的计算机上显式编译源代码。

  • 默认情况下,编译代码文件(不包括 .aspx 和 .ascx 文件)会生成一个程序集。

  • 源代码通常是在站点安装或更新后首次收到请求时在服务器上通过 ASP.NET 动态(自动)进行编译的。

    可以预编译站点(在开发计算机或服务器上预先编译)。

  • 默认情况下,编译会生成多个程序集。

命名空间

默认情况下,将显式命名空间添加到页面、控件和类中。

默认情况下,不将显式命名空间添加到页面、控件和类中,但您可以手动添加它们。

部署

  • 将程序集复制到服务器。 程序集通过编译应用程序生成。

  • Visual Studio 提供多个与 IIS Web 部署工具集成的工具来自动执行许多部署任务。

  • 您将应用程序源文件复制到已安装 IIS 的计算机上。

  • 如果在开发计算机上预编译站点,您可以将通过编译产生的程序集复制到 IIS 服务器。

  • Visual Studio 提供了多个用于部署的工具,但是这些工具自动执行的部署任务的数量不如为 Web 应用程序项目提供的工具多。

项目文件结构

Web 应用程序项目使用 Visual Studio 项目文件(.csproj 或 .vbproj)来跟踪有关项目的信息。除其他任务以外,这还使得指定项目中要包含或排除哪些文件,以及因此在生成期间编译哪些文件成为可能。

对于网站项目,文件夹结构中的所有文件会被自动视为包含在网站中。 如果您希望从编译中排除某些文件,必须从网站项目文件夹中移除文件或将其文件扩展名更改为不由 IIS 编译和提供的扩展名。

使用 Web 应用程序项目中的项目文件具有以下优点:

  • 易于暂时从站点移除文件,但仍确保不会失去对它们的跟踪,因为这些文件保留在文件夹结构中。例如,如果页面没有为部署准备就绪,您可以暂时从生成中排除它,而无需从文件夹结构中将其删除。您可以部署编译的程序集,然后再次将文件包括在项目中。 这在使用源代码管理储存库时尤为重要。

在网站项目中使用无项目文件的文件夹结构具有以下优点:

  • 您不必专门在 Visual Studio 中管理项目的结构。 例如,您可以通过使用 Windows 资源管理器将文件复制到项目中或从项目中删除文件。

编译

对于 Web 应用程序项目,通常在 Visual Studio 中生成项目,或通过使用不是生产 IIS 服务器的计算机上的 ASP.NET 批处理编译器生成项目。项目中的所有代码隐藏类文件和独立类文件都编译为一个程序集,然后将其放在 Web 应用程序项目的 Bin 文件夹中。(.aspx 和 .ascx 文件以与网站项目类似的方式进行动态编译。)

对于网站项目,您不必手动编译项目。 网站项目通常由 ASP.NET(在开发计算机和生产 IIS 服务器上)进行动态编译。 您可以在批处理编译模式(通常为每个文件夹生成一个程序集)和固定编译模式(通常为每个页面或用户控件生成一个程序集)之间选择。

Web 应用程序项目的编译模型具有以下优点:

  • 您可以使用 MSBuild 来创建自定义批处理编译过程。

  • 指定程序集特性(如名称和版本)非常简单。

  • 事先编译可确保在生产服务器上编译站点期间用户无须等待。 (如果站点非常大,网站项目的动态编译可能需要花费大量时间。 动态编译在更新站点之后收到站点资源请求时发生,并且当编译所需资源时,触发编译的请求可能会被延迟。如果延迟不可接受,则可以预编译站点。 但因此会失去动态编译的某些优点。)

  • 您可以完全控制项目文件夹结构中放置代码文件的位置,以及项目中的类互相引用的方式。(动态编译要求在整个站点中使用的所有类的源代码必须位于 App_Code 文件夹中。您不能从 App_Code 中的类引用页面或用户控件类。)

网站项目的编译模型具有以下优点:

  • 您可以测试特定的页面,而不管其他页面的状态。 这是因为运行单个页面不需要成功编译整个站点,仅需编译该页面和该页面所依赖的任何组件,如 App_Code 文件夹或 Global.asax 文件中的代码。(在 Web 应用程序项目中,如果站点中任何位置存在编译错误,则不能创建程序集,因此不能进行测试,甚至连测试所编译站点的部分内容也不行。)

  • 在生产中更新网站非常容易。 可以更新生产服务器上的各个源代码文件,而无需以显式方式重新编译站点。 即使由于编译错误其他文件未准备就绪,也可以更新各个为部署准备就绪的文件。还可以直接在 Visual Studio 中打开生产 IIS 服务器上的网站,并实时更新该网站。

  • 在某些情况下,预编译为多个程序集具有性能优势。 一个典型示例是具有许多页面,并为这些页面编写了大量代码的站点。 其中大多数页面极少被请求,只有某些页面经常受到使用。如果将这样的站点编译成多个程序集,生产服务器就可以仅加载当前请求所需的程序集。 如果未请求某个页面,则不会加载其对应的程序集。

注意注意

网站项目和 Web 应用程序项目之间没有性能差异。 唯一明显的例外就是那些已经指出的例外,在实际使用时,它们仅适用于非常大的站点。 对网站的第一个请求可能需要对站点进行编译,这可能会导致延迟。 如果网站运行在内存不足的 IIS 服务器上,则将整个站点包含在一个程序集中所使用的内存可能会超过将站点包含在多个程序集中所需的内存。

部署

若要部署 Web 应用程序项目,需将通过编译该项目创建的程序集复制到 IIS 服务器。相反,若要部署网站项目,通常是将项目源文件复制到 IIS 服务器。

Web 应用程序项目部署策略的优点包括:

  • 可以避免将源代码部署到 IIS 服务器。 在某些情况下,例如在共享承载环境中,您可能会关注对 IIS 服务器上源代码进行的未经授权的访问。 (对于网站项目,可能通过在开发计算机上进行预编译并部署所生成的程序集而不是源代码来避免此风险。 不过,在这种情况下,会失去轻松更新站点的某些好处。)

  • 除将程序集或代码复制到服务器之外,部署通常还涉及其他任务。 例如,数据库脚本可能必须在生产中运行,Web.config 文件中的连接字符串可能需要针对生产服务器进行更改。 Visual Studio 提供了一些处理 Web 应用程序项目以自动执行其中许多任务的工具,如一键式发布。 这些工具对于网站项目不可用。

网站项目部署策略的优点包括:

  • 如果对 Web 应用程序进行少量更改,则不必重新部署整个应用程序。 而是可以只将更改过的文件复制到生产 IIS 服务器。 另外,还可在生产服务器上直接编辑文件。(因为 Web 应用程序项目的代码文件将被编译成单个程序集文件,所以即使进行少量更改,也必须部署整个站点,除非更改只是针对 .aspx 或 .ascx 文件。)

http://www.cnblogs.com/jack-Star/archive/2012/07/21/2602409.html

http://www.360doc.com/content/11/0307/16/6075898_98942017.shtml

http://www.360doc.com/content/11/0307/16/6075898_98953926.shtml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_755450.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析 PHP 中 session 的实现原理以及大网站应用应该注意的问题

一 PHP SESSION原理 session 是在服务器端保持用户会话数据的一种方法,而 cookie 是在客户端保持用户数据。HTTP 协议是一种无状态协议,服务器响应完之后就失去了与浏览器的联系。那么,服务器是如何记住众多用户的会话数据呢? 首先…

谈谈用ASP.NET开发的大型网站有哪些架构方式(成本)

在上篇文章里(http://www.cnblogs.com/ms0017/archive/2011/07/26/2117676.html),列举了国内外用ASP.NET开发的大型网站有哪些。最后提到了用.NET开发的大型网站和LAMP/JAVA平台的成本比较。其实在很多时候,收费的不一定就比免费的成本更高。因为开发一个…

大型互联网网站架构

构建高性能Web站点 http://download.csdn.net/download/E_wsq/2613845http://download.csdn.net/download/E_wsq/2613845 ===========&#xff…

部分HTTPS网站受影响:Firefox暂停“弃用SHA-1加密”计划

由于SHA-1脆弱的安全性,Mozilla、谷歌、微软纷纷宣布了弃用这项加密技术的计划。但是由于不少设备与平台未能及时跟进,这一迁移让大量老用户受到了影响。此前,Facebook曾表示会为不支持SHA-1的访客继续提供服务。而在部分Firefox用户报告无法…

php网站主页后台_标准化企业网站建设方案是什么样的?

一、企业网站的意义企业网站是企业在互联网上进行网络营销和形象宣传的平台,相当于企业的网络名片,不但对企业的形象是一个良好的宣传,同时可以辅助企业的销售,通过网络直接帮助企业实现产品的销售。企业可以利用网站来进行企业形…

python f.write 保存图片到路径_Python爬虫篇—网页爬虫、图片爬虫、文章爬虫、新闻网站爬虫...

今天分享一则python比较基础的技术,爬虫。教小白们怎么轻松利用爬虫技术获取自己想要的知识内容。本节学习目标:学习Python爬虫爬取新闻网站新闻列表爬取图片把爬取到的数据存在本地文件夹或者数据库学会用pycharm的pip安装Python需要用到的扩展包一、首…

js添加keyword让搜索引擎能够搜到_广州seo搜索搜索引擎优化电话-哪家好_华阳网络...

广州seo搜索搜索引擎优化电话-哪家好,热门搜索事件的短标题和普通微博的热门搜索标题。奇怪的头条类似于媒体的头条,伪“头条党”。当用户搜索结果时,他们首先看到的是标题和描述。如果标题和描述不够吸引人,则无法单击。那么,如何…

如何设置几个循环出来的span其中一个宽度_一步一步实现一个古诗词网站(三)——首页...

汪小黑:一步一步实现一个古诗文网站(二)——需求分析​zhuanlan.zhihu.com上篇文章,我们对项目进行了需求分析,明确了项目所需的各个功能模块,产出了页面的原型设计图。这篇文章我们将进入实战编码环节&…

.NET技术+25台服务器怎样支撑世界第54大网站

英文原文:StackOverflow Update: 560M Pageviews A Month, 25 Servers, And Its All About Performance StackOverflow 是一个 IT 技术问答网站,用户可以在网站上提交和回答问题。当下的 StackOverflow 已拥有 400 万个用户&…

seo伪原创工具_一键生成伪原创文章有用吗(正确使用伪原创工具)

一定有不少的SEOer正在使用伪原创文件生成器这个工具吧,我可以正确的断定出来,一个懂SEO优化的SEOer绝对能够正确理解文章的作用,而那些似懂非懂的SEOer每天都在为原创文章的事情烦恼。往往一直以为每天坚持更新文章就可以获得排名的SEOer却没…

十年Java编程开发生涯,java基础刷题网站

Spring 面试题 1、不同版本的 Spring Framework 有哪些主要功能? 2、什么是 Spring Framework? 3、列举 Spring Framework 的优点。 4、Spring Framework 有哪些不同的功能? 5、Spring Framework 中有多少个模块,它们分别是什…

antd table 时间搜索_一份完整的网站SEO搜索引擎优化方案思路,送给你,请查收!...

我们在给一个网站做SEO优化的时候,通常都需要先做出一份网站优化的方案,根据方案再去针对网站进行细致的调整优化工作。这份方案的思路决定了你是否能把网站的优化做好,具体详情请大家继续往下看。一、行业品牌/调研我们在做一个网站的SEO优化…

Windows平台网站图片服务器架构的演进

构建在Windows平台之上的网站,往往会被业内众多架构师认为很“保守”。很大部分原因,是由于微软技术体系的封闭和部分技术人员的短视造成的。由于长期缺乏开源支持,所以只能“闭门造车”,这样很容易形成思…

高扩展性网站的50条原则

《高扩展性网站的50条原则》,利用一天半的时间快速浏览总结的电子书,对网站的建设有一个原则性的把握,书中提到的大部分原则现在已成为互联网行业的共识,但并不妨碍我们重新整理分类,从全局层面把控高扩展性网站的建设…

大型网站图片服务器架构的演进

在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规划不足&am…

程序员 10个 堪称神器的学习网站

话不多说,直接上干货! 注:分享一个学习交流群796170550,有不懂的问题可以一起相互讨论 【群里还含有:Java80g学习视频Java学习书籍Java项目实战源码安装软件等】 01、大学资源网 大学资源网是一个完全免费并且功能非…

爆肝整理珍藏多年的实用工具/学习网站,助你在写代码的路上更顺利!!!

前言 这期是介绍自己常用的一些工具安利一下 千万不要白嫖,真香警告⚠️。 但是我在构思这篇文章的时候发现我贴个标题,然后发下软件信息会不会太乏味了,于是创作鬼才我呀,准备用一个产品的研发流程,是的就是用这样的…

那些好用的网站推荐(一)----功能网站

1.Smallpdf:(https://smallpdf.com/) 可以实现文档之间的互相转换,我经常用的就是PDF转word,还有各种文件格式之间的转换 2.ProcessOn:(https://www.processon.com/) 很好的免费作图软件,画流程图、UML图,…

那些好用的网站推荐(二)----学习网站

3.菜鸟教程:(https://www.runoob.com/) 对新手很友好的一个教程网站,一般可以通过这个网站大体了解一下想要学习的知识,了解大体后再进行深度学习,很nice! 4.虎课网:(https://huke88.com/album/2.html?se…

那些好用的网站推荐(三)----考研篇

31.考研帮:(http://www.kaoyan.com/) 32.考试点考研网:(http://www.kaoshidian.com/) 里面有很多公开课(收费) 33.2020考研报名查询:(http://kaoyan.eol.cn/) 里面有很多东西 34.中国研究生招生信息网:(…