2.1 Web应用程序和网站
C/S和B/S是应用程序的两种模式,C/S是客户/服务器程序,而B/S是浏览器/服务器应用程序,这类应用程序一般借助于IE、Chrome和Firefox等浏览器来运行。Web应用程序一般是B/S模式,它是基于Web的,而不是采用传统方法运行的。简单来说,Web应用程序是典型的浏览器/服务器架构的产物。
2.1.1 新建Web应用程序
在第1章中已经介绍过如何创建一个基于窗体的Web应用程序,基于窗体的Web应用程序创建完毕后会自动生成一些目录和文件,如图2-1所示为基于窗体的Web应用程序。
图2-1 基于窗体的Web应用程序
在如图2-1所示界面中,包含多个目录和文件,常用的目录和文件说明如下。
(1)Properties目录:该目录包含一个AssemblyInfo.cs文件,这是一个包含程序版本、信息和版权的属性文件。
(2)Account目录:该目录包含多个Web窗体,这是基于窗体创建Web应用程序时生成的一个目录,包含用户登录和注册等页面。
(3)App_Data目录:包含Microsoft Office Access和SQL Expression文件以及XML文件或者其他数据存储文件。
(4)Images目录:包含图像文件。
(5)Scripts目录:包含脚本文件。
(6)Global.asax文件:这是一个可选文件,通常被称为ASP.NET应用程序文件。该文件包含响应ASP.NET或HTTP模块所引发的应用程序级别和会话级别事件的代码。如果文件不存在进行创建时,必须将其放在应用程序和根目录下。
(7)Web.config文件:该文件用来存储ASP.NET Web应用程序的配置信息,这是一个XML文件。
在如图2-1所示界面中,Content、Images、Scripts、Abount.aspx等目录和文件都是基于窗体的Web应用程序生成的。开发者也可以创建不带窗体的Web应用程序,创建时只需要在弹出的对话框中选择【ASP.NET空Web应用程序】项即可。如图2-2所示为创建空Web应用程序时的结构。
图2-2 不带窗体的Web应用程序
比较图2-1和图2-2可以看出,不带窗体的Web应用程序很简单,只包含Properties目录、引用文件目录和Web.config文件。
2.1.2 新建Web网站
开发者可以通过创建Web窗体应用程序的方式创建Web程序,还可以通过创建Web网站的方式创建Web程序。选择【文件】|【新建】|【网站】命令,打开【新建网站】对话框,如图2-3所示。
图2-3 基于窗体的Web网站
在如图2-3所示界面中,选择【ASP.NET Web窗体网站】后输入或选择网站位置,然后单击【确定】按钮创建基于窗体的Web网站,如图2-4所示。
图2-4 基于窗体的Web网站
在如图2-4所示界面中,基于窗体的Web网站也会生成多个目录和文件,其中许多目录和文件的说明都与基于窗体的Web应用程序相似,这里只介绍App_Code和bin目录。
(1)App_Code目录:包含作为应用程序的一部分编译的类的源文件。当页面被请求时,ASP.NET编译该目录中的代码,该目录中的代码在应用程序中自动地被引用。
(2)bin目录:包含应用程序所需的任何预生成的程序集。
开发者也可以创建不带窗体的Web网站,在如图2-3所示的对话框中选择【ASP.NET空网站】即可。如图2-5所示为不带窗体的Web网站结构。从图2-5中可以看出,创建空网站时只生成一个Web.config文件。
图2-5 不带窗体的Web网站结构
2.1.3 比较Web应用程序和Web网站
VS 2012中既可以创建Web应用程序,也可以创建Web网站。一般来说,Web应用程序适合相对较大的系统,而Web网站比较适合中小型企业网站。下面分别从它们的相同点和不同点两方面进行说明。
1.相同点
Web应用程序和Web网站有两个相同点:都用来设计和实现ASP.NET网页;都可以添加ASP.NET文件夹,如都包括App_Browsers、App_Data、App_GlobalResources、App_LocalResources和App_Themes。
2.不同点
Web应用程序和Web网站存在多个不同点,说明如下。
(1)Web应用程序Default.aspx显示有两个原有文件,分别是Default.aspx.cs和Default.aspx.designer.cs; Web网站Default.aspx有一个原有文件,即Default.aspx.cs。
(2)Web应用程序有重新生成和发布网站两项;Web网站只有一个发布网站。
(3)Web应用程序和一般的WinForm没有什么区别,如都引用的是命名空间;Web网站在引用后出现一个bin目录,该目录存在后缀名为“.dll”和“.pdb”的文件。
(4)Web应用程序可以作为类库被引用;Web网站则不可以作为类库被引用。
(5)Web应用程序可以添加ASP.NET文件夹,但是不包括bin和App_Code; Web网站可以添加ASP.NET文件夹,但是包括bin和App_Code。
(6)Web应用程序可以添加组件和类;Web网站则不能。
(7)源文件虽然都是Default.aspx.cs文件,但是Web应用程序多了对System.Collections命名空间的引用。