[ASP.NET]Web网站与Web应用程序区别
前言:在项目开发中,我们都会用到web网站与Web应用程序,那么这两者有什么区别呢?下面和大家分享一下。
(一)是否需要重新生成
1.web网站
项目就是一个应用程序。在VS中查看的时候,项目中建立的一般处理程序,有两个文件,网站只有一个。在代码层次上没有什么区别。
项目中的一般处理程序有命名空间,而网站中的没有。WEB网站每一个页面(ashx页面)都是一个独立的程序,【一个页面出错了不会影响到另外一个页面(演示)】。
2.Web应用程序
项目中建立完一个文件(或修改了一个文件),一定要【重新生成】。
目的:将项目生成对应的dll文件放在bin/Debug目录下(并且所有的类放在了该程序集中。),如果项目中的一个文件出错了,是没有办法生成成功的。
(二)名称是否随机
1.web网站
网站中每个页面(aspx,ashx)都生成对应的程序集,名称是随机的,当文件建立保存以后,请求会自动保存一下。如果你对文件中的代码改动了,Assembly.GetExecutingAssembly().Location
会重新编译生成一个新的程序集,如果没有改动,则不会生成新的.(在Web网站中的一个一般处理程序中获取当前一般处理程序文件所生成的dll文件。
2.Web应用程序
一般处理程序中的代码改变了那么重新生成,没有变化则不会重新生成。
所在Web应用程序中修改了代码以后一定要重新生成,不然修改后的代码不会生成到程序集中,程序集中可能还是旧的内容
为什么网站不需要命名空间?命名空间就是为了区分类同名的情况,而网站一个文件就是一个独立的程序,所以不会出现类重名的情况.
(三)SqlHelper放置的位置
在网站中写SqlHelper(定义普通的类)必须放在App_Code文件夹中,而应用程序直接建就行了,不要建立App_Code文件夹,因为该类最终会生成到程序集中。但是在网站就必须放在App_Code文件夹下,原因是,我们请求网站的一个一般处理程序时会自动编译,但是一个不同的类是不同被请求的,所以也就没法编译。但是放在app_code文件夹中会在请求某个一般处理程序时自动被编译。但是项目不需要了,因为最终会生成到一个程序集中。
小网站可以用Web网站,因为文件比较少,请求的时候出现错误,直接修改。不关心其它页面。但是大项目中用到的文件特别多,如果建成WEB网站那么维护起来很痛苦,但是建成WEB项目可以统一生成,这时如果出错了,也很容易知道哪个文件出错了,当所有的文件都编译通过了才能进行访问,这是与WEB网站不同的地方
总结:大网站比较适合用WebApplication项目,小网站比较适合用WebSite项目