【转】asp.net中的WebApplication(web应用程序)和WebSite(网站)
【转】asp.net中的WebApplication(web应用程序)和WebSite(网站)
web application是MS在发布VS2005之后追加的SP1扩展包里的一种新的Web模式,WebApplication编译时忽略了页面中代码的检查,不需要做分析,将这些任务交给了运行时。WebSite的优势在于可以单个页面独自编译,这对大项目而言是一个相当大的优势,二者的直观区别在于,对每一个aspx页面文件,WebApplication在有对应cs文件的同时还拥有designer.cs文件,baidu了一下。
WebApplication编程模型的优点:
●网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去。
●生成的程序集
WebSite:生成随机的程序集名,需要通过插件WebDeployment才可以生成单一程序集
WebApplication:可以指定网站项目生成单一程序集,因为是独立的程序集,所以和其他项目一样可以指定应用程序集的名字、版本、输出位置等信息
●可以将网站拆分成多个项目以方便管理
●可以从项目中和源代码管理中排除一个文件
●支持VSTS的Team Build方便每日构建
●更强大的代码检查功能,并且检查策略受源代码控制
●可以对编译前后进行自己规定的处理
●对App_GlobalResources 的Resource强类支持
●直接升级使用VS2003构建的大型系统
WebSite编程模型的优点:
●动态编译该页面,马上可以看到效果,不用编译整个站点(主要优势)
●同上,可以使错误的部分和使用的部分不相干扰
●可以每个页面生成一个程序集
●可以把一个目录当做一个Web应用来处理,直接复制文件就可以发布,不需要项目文件
●可以把页面也编译到程序集中
两种编程模型的互相转换:
VS2005 SP1内置了转换程序,可以非常方便的从WebSite转换到WebApplication只需要复制文件,右键执行“转换为Web应用程序”即可。
总之,大网站比较适合用WebApplication项目,小网站比较适合用WebSite项目
下面的表格列出了Web Application 和 Web Site 的重要区别。
情况 |
Web Application Project |
Web Site Project |
工程定义
|
只有在 Web Application的解决方案中引用的文件才是项目的一部分。这些文件也显示在解决方案资源管理器中,并在生成期间进行编译。由于存在项目文件,因此有些方案更加容易实现。例如,可以将一个 ASP.NET 应用程序细分为多个 Visual Studio 项目。还可以轻松地从项目和源代码中排除文件。 |
Web site 使用文档结构管理项目文件。他不包括项目文件,文件夹中的所有文件都是项目的一部分 适用于现存不包含项文件的网站目录。
|
编译和生成输出 |
项目中所有的程序代码文件,和独立的文件都被编译成为一个程序集,保存在bin文件夹中,可以指定程序集的名字、版本、输出位置等信息 |
在Web Site 项目中使用生成命令时,并不会生成程序集 ,而只是对Web Site进行验证 。在运行Web Site的时候,由asp.net的动态编译部署的页面,类源文件。 同时也可以对站点进行预编译以提高性能,在预编译中使用的是和动态编译同样的技术。 Asp.net预编译有2中模式. batch mode (the default) and fixed-names mode. batch mode 中生成一个程序集。fixed mode 每个页面,用户控件都生成独立的程序集。 |
开发
|
在需要运行和调试程序之前需要进行编译整个项目,但是通常Web Application编译速度很快,因为使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去。 |
由于使用了动态编译机制,并且编译到不同的程序集,所以访问或者调试特定页面时,不需要编译整个项目编译成功。 生成命令会对整个项目进行验证,但是速度较慢,所以建议在开发和调试的过程中,仅使用编译当前页面。 |
部署 |
由于所以代码文件都生成为一个程序集,所以只需要把程序集和.aspx等页面文件部署到服务器上。 .aspx文件只有在被浏览器访问到的时候才进行编译。 每次更新程序集的时候,相当于替换了所有的页面代码. |
使用发布命令可以把.aspx文件和后台代码文件都编译到程序集中,如果选择了updateable publish option 时,只是对后台代码进行编译 。 默认模式会针对每个文件夹生成一个程序集.固定名称模式,会针对每个页面,控件生成一个程序集 ,不过可能造成存储空间的额外负担。 |
从Visual Studio .NET 2003 升级 |
由于和.net 2003工作原理相同,基本不需要太多的操作。 |
需要使用升级向导,并且需要其他的一些额外操作。 |