博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[ASP.NET]ASP.NET Web Site 和 ASP.NET Web Application 的区别
阅读量:4626 次
发布时间:2019-06-09

本文共 1785 字,大约阅读时间需要 5 分钟。

我在面试的时候,通常都会问应试者这个问题,结果通常都令人失望。其实很多用ASP.NET开发多年的程序员对这个问题也都不太清楚。

我为什么要说明这个问题呢?其实这个问题对使用ASP.NET开发而言并没有多大影响,但是如果能够正确地理解他们两者的区别,同样也能帮助我们解决许多在开发过程中遇到的问题。

首先我们从如何创建这两中项目说起,请看下面两张截图。我用的是Visual Studio 2010,Visual Studio 2008的布局大同小异。

如箭头所示,这里是如何创建一个ASP.NET Web Site的项目。

 

 创建一个Web Application需要两部,如上图所示,先选择Project,然后从Web标签中选择ASP.NET Web Application。

这个两个项目都可以直接copy到server,部署为网站,而且表现的内容没有差异。但是从结构,编译,编程方式上面去考虑会看出不同来,下面我们一一说明。

1)Namespace

Namespace是这两个项目最明显的区别之一。需要提到的是,我们在这里讨论C#版本,VB.NET比较特殊,他的Namespace会自动加进去,所以这两个项目在编写过程中,我们都不用写Namespace。

默认情况下,ASP.NET C# Web Site中,我们不需要写Namespace,我们可以尝试创建一个新的页面,然后看他的code页。但是Web Application都需要一个Namespace。当然我们也可以添加为web site添加Namespace。当我们在使用ScriptManager的ServiceReference的时候,在application中,用js调用webservice需要将namespace加上。关于如何使用ServiceReference,请参考我的另一篇文章。

2)编译输出

ASP.NET Web Site在每次运行时都会自动编译,所以,我们在用VS开发的时候,不需要做了点修改,就rebuild下项目,我们可以直接在浏览器中调试结果,但是web application如果是涉及到code behind的修改都需要rebuild项目之后,修改才会被应用上。原因是web site的编译输出并不是在当前项目下,而是一个统一的地址:%SystemRoot%\Microsoft.NET\Framework\version\Temporary ASP.NET Files下,之后在预编译之后,输出才会转到web site的bin目录下。关于预编译的问题,我们可以参考这个链接:,建议大家在发布网站的时候都能预编译,这样有助于运行速度,同样有利于后期维护。Web Application编译后会直接输出到Bin目录下。

3)App_Code

只有ASP.NET Web Site才有App_Code,我们一般都把web site中共享的类文件都放在这个目录里,编译器会自动将App_Code里的类文件编译成assembly。

4)AssemblyInfo

ASP.NET Web Application有AssemblyInfo,但是web site没有。

5)Property Pages(项目属性)

在修改项目属性的时候,两者又有很大的区别。Web Application基本上和其他创建的Application一样,都有同样的设置布局。但是Web site精简了很多。

 

总结:

其实,当初微软设置ASP.NET Web Application是因为收到很多开发员的feedback。早期VS2003的应用程序无法顺利移植到VS2005的web site模型中,尤其在预编译站点的时候,会造成声称多个assemblies。通过web application,开发员可以把网站当作一个普通的application对待。有的人认为Web site好用,有的人认为web application好用,其实微软设立这两个项目模型给我们多了一种选择,可以以我们各自的喜好来创建一个web项目,具体如何选择,那也就要看您的喜好或者您工作的需求了。

转载于:https://www.cnblogs.com/JerryWeng/archive/2010/10/18/1854383.html

你可能感兴趣的文章
osip及eXosip的编译方法
查看>>
Hibernate composite key
查看>>
[CF Round #294 div2] D. A and B and Interesting Substrings 【Map】
查看>>
keepalived+nginx安装配置
查看>>
vue+element-ui实现表格checkbox单选
查看>>
autofac
查看>>
MacOS 系统终端上传文件到 linux 服务器
查看>>
Excel导出POI
查看>>
兼容性
查看>>
自动执行sftp命令的脚本
查看>>
转 Merkle Tree(默克尔树)算法解析
查看>>
网络编程基础之socket编程
查看>>
各种浏览器的user-agent和
查看>>
Restful levels
查看>>
Phonegap移动开发:布局总结(一) 全局
查看>>
Java 变参函数的实现
查看>>
nrf51 SDK自带例程的解读
查看>>
SESSION技术
查看>>
数据结构(五)之直接插入排序
查看>>
SQL函数——LENGTH()和LENGTHB()
查看>>