目前有很多Web应用程序开发工具,它们都拥有一套独立的应用程序编程模型。但是无论这些模型有多大区别,它们都必须符合国际上通用的Web标准,只有这样才能使编写出来的应用程序支持多种客户端浏览器。
B/S架构应用程序的开发工具有很多,其中最被人们所熟知的是Microsoft推出的ASP.NET。
1.C/S与B/S架构的比较
C/S架构体系如图1-1所示。通常,程序员需要将开发完成的软件安装在计算机(客户机)中,将数据库安装在专用的服务器(数据库服务器)中,用户通过安装在客户机中的软件和网络进行各种数据库操作。如果是单机版应用程序,其数据库直接安装在本地计算机中即可。
图1-1 C/S架构体系
C/S架构应用程序最主要的特征就是要求客户机中必须安装客户端程序,否则无法工作 。常用的聊天工具(如QQ、微信)及一些网络游戏都属于C/S架构的应用程序。
B/S架构应用程序使用户通过浏览器即可访问,无须在本地计算机中安装任何客户端程序 。其架构体系如图1-2所示,由客户机、Web应用服务器和数据库服务器3部分组成,在中小型应用系统中,Web应用服务器可以与数据库服务器安装在同一台计算机中。在大型应用系统中,也可以将同一应用程序的不同数据处理业务分别安放在不同的Web应用服务器中(两台或多台),以实现分布式数据处理的需要。
图1-2 B/S架构体系
与C/S架构相比,B/S应用程序不需要在客户机上安装专门的客户端软件,用户在使用程序时仅需要通过安装在客户机上的Internet浏览器访问指定的网页即可。目前绝大多数微机都在使用集成了IE或Edge浏览器的Windows操作系统,也就是说,只要客户机能够通过网络访问指定的Web服务器,即可正常使用B/S架构的应用程序。
此外,在B/S架构的应用程序中,主要的数据分析和处理工作是在应用服务器中完成的,它将处理完毕的数据以HTML网页的形式推送给客户端浏览器。客户端主要用来收集用户数据、下达指令和接收服务器处理结果,所以客户机的配置要求不高,B/S架构非常适合“瘦客户端”的运行环境。
2.ASP.NET的发展历程
Microsoft最初推出的是动态服务器页面(Active Server Page,ASP)技术,它允许开发人员在静态网页的HTML编码中添加使用VBScript语言编写的脚本代码,实现初步的交互功能。
2002年Microsoft推出.NET Framework后,ASP也升级到了ASP.NET,将功能实现代码与页面表现代码彻底分离(分别保存在不同的文件中),而且在程序设计语言上支持更强大的C#和Visual Basic。之后,随着.NET Framework的不断升级,ASP.NET也在不断地更新与完善。这一阶段的ASP.NET使用的是Web窗体(Web Form)应用程序设计框架。本书的前半部分主要介绍使用Web Form框架进行Web应用程序设计的技术。
2007年底,Microsoft首次推出了基于MVC模式编写ASP.NET Web应用程序的框架,称为ASP.NET MVC,MVC是模型(Model)、视图(View)和控制器(Controller)3个单词的缩写。本书将在后续章节中对ASP.NET MVC编程技术进行介绍。
随着.NET Framework的不断更新,其稳定性及功能日趋强大。但.NET Framework对Windows操作系统有较深的绑定这一缺陷也越来越明显。为解决这一问题,Microsoft于2016年6月推出了.NET Core,对应的ASP.NET称为ASP.NET Core,这是一个开源的模块化的Framework,无论是开发Web应用程序还是移动设备应用程序,都在同一个Framework(.NET Core)下运行,而且.NET Core也可在不同的操作系统(如Windows、Linux和macOS等)上运行,实现了跨平台、跨设备应用程序开发的需要。
ASP.NET或其他任何一种B/S架构应用程序都是由一系列网页(也称为Web页)和资源文件组成的,通常以一个符合国际通用Web标准的“网站”形式展现给用户,用户也只能通过安装在计算机中的浏览器软件(如Edge、Firefox和Chrome等)访问应用程序。
需要说明的是,Web标准不是某一个标准,而是一系列标准的集合。这些标准大部分由万维网联盟(World Wide Web Consortium,W3C)起草和发布,也有一些是其他标准组织制定的标准,比如欧洲计算机制造商协会(European Computer Manufacturers Association,ECMA)的ECMAScript标准。
1999年W3C制定了HTML 4.01标准,随后公布了CSS 2.1和JavaScript标准,这些标准统称为Web 1.0标准。随着W3C对HTML 5、CSS 3、JavaScript、Canvas、SVG及移动设备开发规范等一系列新标准的发布,表示以HTML 5+CSS 3为核心的Web 2.0时代的到来。
早期的网页都是使用纯HTML标记语言编写的,以.html或.htm文件格式保存在网站中,网页之间通过超链接进行跳转,这种网页称为“静态网页”。动态网页能很好地与用户进行全方位的互动,并能根据用户的需要动态地返回不同的HTML页面。
需要注意的是, 包含了一些动画效果的页面是不能被称为动态网页的 ,动态网页强调的是与用户有交互,特别是数据方面的交互。
1.静态网页
静态网页具有以下特征 :①任何一个访问者无论以何种方式访问网页,网页的内容(文本、图像、声音和超链接等)和外观都是保持不变的;②网页中不包含除了超链接跳转以外的任何与客户端进行交互的功能。
静态网页的最大优点是访问效率高,需要服务器处理的内容十分少。而且通过Dreamwea-ver等开发软件可以很容易地进行设计。静态网页的缺点也很明显,就是当网页的内容需要变化时必须重新进行设计和发布,这对不太了解网页制作技术的普通人来说无疑是一大难题。
静态网页的访问过程如下。
1)用户通过浏览器结合网页的URL或超链接向Web服务器发出请求。
2)Web服务器定位用户希望访问的网页将其转换成HTML代码流,并通过网络传送给用户的浏览器。
3)用户浏览器对接收到的HTML代码流进行解析,并还原成网页显示出来。
2.动态网页
动态网页依据代码处理位置的不同分为 客户端动态网页 和 服务器端动态网页 。
(1)客户端动态网页
客户端动态网页是指Web服务器将HTML页面和一组包含了页面逻辑的脚本、组件等一起发送到客户端,这些脚本和组件包含了如何与用户交互并产生动态内容的指令,由客户端浏览器及其插件解析HTML页面并执行这些指令代码。常见的动态网页技术包括Java-Script、VBScript、ActiveX控件、jQuery和AJAX等。
客户端动态网页技术可以充分利用本地计算机硬件资源,在客户端完成各类数据的分析、判断和其他处理工作。由于数据处理在本地完成,减少了数据在网络上的往返传输,因此这种方式下的响应速度很快,也减轻了服务器和网络的压力。但由于数据的分析、判断和其他处理工作的程序代码需要下载到本地执行,也就带来了源代码无法隐藏的弊端,这对程序的安全性还是有一些影响的。所以,通常将客户端网页技术应用在显示特效和动画、验证用户输入的有效性等方面。
(2)服务器端动态网页
服务器端动态网页与客户端动态网页的主要不同在于所有的数据分析、判断和其他处理工作都在服务器端进行,服务器只将处理好的结果以HTML代码流的形式发送给客户端。ASP.NET就是用于开发服务器端动态网页的一个常用工具。
在服务器端动态网页方式中,保存在服务器中的数据处理程序将会被编译成二进制形式,这样既提高了程序的运行效率,又提高了源代码的保密性。但这种方式要求服务器有较高的配置,而且页面是在用户发出请求时临时生成的,尽管生成后的网页可以被缓存,但首次显示网页时的响应速度会有一些卡顿。