随着学习的深入,和编程经验的丰富,对BS应用程序有一些认识。

  在一些讨论软件技术的QQ群里,或一些社区、BBS中,经常会有一些初学者会犯一些认知性的错误。比如经常会有一些朋友提这样的一些问题:“我怎么在ASP中调用我写的这个JavaScript函数啊?”或者说“我怎么在JavaScript中调用我DAL层读取数据的方法啊?”

  对于这些问题,说实话,我也犯过,当时也纠结的不得了。现在想想,其实是对BS结构的程序没有一个整体的概念,或者可以说根本不知道什么叫BS结构的应用程序。因此,学习过程中会走不少弯路,经历不少痛苦。

  经过这几年的学习,有一些心得经验,和大家分享一下。

  要理解BS这个概念,必需要从BS应用程序的起源说起。

  BS应用程序又称Web应用程序。其实最初Web并不是应用程序,它只是一种服务,一种共享信息的服务。

  Web是什么,是网,是网络。最早的网络只是提供了一种下载并打开远端页面文件的一种服务,人们可以通过远程计算机中的地址和文件保存的路径来查看该计算机中共享的文件。这些文件通常是一页页的文本内容,在网络中访问它的那个路径称为Uniform / Universal Resource Locator(URL,统一资源定位符)。

  后来人们在页面中加入了超链接,使浏览者可以很方便的访问其它相关的文件资源。这样,从感观上我们访问的网页由一页变成了很多页,也就更奠定了“Web Page(网页)”这个名称。

  随着Web的发展,网页中加入了图片、动画、声音、视频等多媒体元素,这些东西超出了文本的概念,并且出现了一种标记语言来规范这些页面中的元素,使之更加合理的显示在用户的屏幕上。所以,这种语言就被人们称之为HyperText Mark-up Language(HTML,超文本标记语言),这种文件的扩展名为html或htm(还有其它如shtml的延生品)。而专门解悉这种语言,给用户展示完美的网页内容的程序,就被称之为浏览器。

  后来,人们发现,随着页面内容的丰富,有时候很多页面中的结构是完全相同的,只是内容不同而已。这样如果提供很多的网页文件,不仅浪费计算机硬盘空间,也非常不容易维护。所以就有人想出在远端计算机(Web服务器)中动态生成网页的方法来解决这个问题。这样就可以在硬盘中保存一份有共同页面结构的网页,在用户请求查看某个信息的时候,Web服务器根据用户请求的文件地址(URL),解悉并生成一份最终的页面内容,回传给请求者,请求者接收到以后就像普通文件一样获取并打开它。

1 //(注:这些动态生成网页的技术,最早的有CGI,后来出现ASP,PHP,JSP,ASPX等等)
1 /*
2 (注:在这里,要特别强调的一点,也就是每一个BS结构应用程序开发人员要牢记的是:
用户(请求发送者,或者称为浏览器、客户端)向远程计算机请求,
请求的永远是文件资源(后来出现的Ajax技术可以获取一段文本),
可以是网页文件、图片文件、动画文件、声音文件等等)
3  */

  至此,对于用户来说页面内容也非富了(有了多媒体),对于服务器来说页面也可以动态生成了(更易于管理)。但美中不足的是:虽然有了非常酷的页面效果,但对用户交互方面的元素太少。人总想主动的控制一些优秀的东西,而这样的网页除了点击超链接,我们不能对它进行其它更多的操作。

  这似乎是点缺憾,但对于充满智慧的劳动人民来说,这并不是什么问题。网页开发人员研究了一种可以供浏览器解释执行的脚本代码(脚本代码种类非常多,最为典型的是JavaScript),这些代码可以做为页面的内容直接写到网页文件中,也可以做为类似图片一样的外部资源被页面引入执行。

 

  有了这些页面脚本,我们的Web即刻变得炫丽起来。我们可以像普通的WinForm程序一样,使用鼠标在页面中执行单击、双击、拖放等操作(随着这些操作,衍生出来许多的浏览器事件)。

  如此,我们的BS应用程序的整个技术体系就变的完美了。

  在整个BS应用程序的发展过程中,上面提到的各个相关技术都充当着一个功能明确的独立模块。这一切都围绕着“使用户能远程获取信息”这一主线。服务器使用动态网页程序生成不同内容的Web页面,并提供相关的图片等页面外部资源;HTML是为了链接外部资源,并标记如何组织页面中的元素;浏览器负责请求服务器获取网页内容以及与之相关的其它外部资源文件,解悉页面结构,并将获取到的内容(文本内容或多媒体内容)组织起来,更加美观的呈现给用户;页面中的脚本程序是做为页面的辅助内容保存在页面中,在适时的时候响应用户的操作,执行一些浏览器内的动作。

  下面我们来看一下浏览器对服务器进行一次请求的整个过程演示图:

1.  首先浏览器请求服务器

2.  服务器接收到浏览器的请求

3.  服务器解悉浏览器请求的URL,根据URL确定请求的目标资源文件。这个资源文件通常是一个动态页面(如ASP,PHP,JSP,ASPX等文件)的网络地址(MVC结构的程序例外)。Web服务器根据动态页面文件的内容,和URL中的参数,调用相应的资源(数据库或文件)组织数据,生成HTML页面。(注意这里生成的是一个HTML文档,里面可能包含JavaScript代码等,这里在服务器端不管HTML文档里的具体内容)

4.  生成HTML文档以后,服务器响应浏览器的请求,将生成的HTML文档发送给浏览器

5.  浏览器接收请求得来的HTML文档

6.  浏览器对HTML文档进行解悉,并请求相关的资源文件(JS,CSS,多媒体资源,内嵌网页)等。(在这里浏览器解悉完HTML文档以后,就会进行呈现,但同时也会向服务器发送请求来请求其它相关的资源文件)

7.  服务器接到浏览器对资源文件的请求以后,将相应的资源文件响应给浏览器

8.  浏览器接收到请求来的资源文件,整理并呈现到页面中

9.  在进行页面呈现的时候,浏览器会从上到下执行HTML文档,当遇到相应的页面脚本的时候,会对脚本进行分析,并解释执行相应的脚本代码

  其实在第6步以后,我们就可以看到一部分页面内容了,不过可能是纯文本内容,没有样式,没有图片或其它资源。待到浏览器请求得到某资源的时候就会进行组织呈现。直到整个页面显示完成。

  不过最后我们要重点理解的是,在服务器端,HTML是做为一个文本文件进行处理的,包括HTML中的脚本,都被服务器端程序视之为文本。到浏览器中,呈现HTML时执行JavaScript脚本程序,就纯粹是一个独立的的小程序了,程序的运行边界是浏览器,也就是说它不可能超越浏览器运行。而浏览器和服务器之间交互就只能使用“请求”+“响应”的模式进行,Web开发中的异步交互技术Ajax也是使用该模式与服务器传递信息的。

  扯蛋一句:服务器和浏览器理论上是在两台不同的计算机中运行的,所以它们不可能共享内存中的变量或者方法。而且他们根本就不是同一时间运行的,所以也不可能共享这些数据。

转载于:https://www.cnblogs.com/zourui4271/p/4922952.html

深入理解BS结构应用程序相关推荐

  1. ERP之软件体系架构-深入理解B/S结构应用程序

    随着学习的深入,和编程经验的丰富,对BS应用程序有一些认识. 在一些讨论软件技术的QQ群里,或一些社区.BBS中,经常会有一些初学者会犯一些认知性的错误.比如经常会有一些朋友提这样的一些问题:&quo ...

  2. 什么是BS结构、CS结构、RIA结构程序

    B/S结构 B/S结构,即Browser/Server(浏览器/服务器)结构,Web应用程序,即在浏览器下运行的程序为Web应用程序.在浏览器中运行的程序为BS结构的程序.BS应用程序无需在本地有它的 ...

  3. 【190416】BS结构的VC++消息发送程序源代码

    源码下载简介 BS结构的VC++消息发送程序,实际 就是一个简单的聊天程序,包括服务端和客户消息发送端,服务端用来监听端口,客户端类似QQ聊天窗口的形式,属点对点聊天,通过本程序可了解一些网络基本知识 ...

  4. 一定要理解的两种常见软件开发体系结构(CS/BS结构)的区别!!!

    CS/BS架构 ==黄色标注部分重点注意== CS结构 BS结构 CS结构与BS结构比较 ==有问题可以在评论指正,欢迎讨论,谢谢大家!!== 黄色标注部分重点注意 CS结构 •CS(Client/S ...

  5. MYSQL专题-由简到繁理解索引结构

    大家可能都听过数据库索引,当然作为开发者来说其实大部分时间也用过索引.但是可能有的人知道索引是干什么的,但是对于索引的结构却不是很了解.所以这篇博客我会谈谈对索引结构的一些知识以及分享如何从零开始一层 ...

  6. 深入浅出理解索引结构

    (一)深入浅出理解索引结构 实际上,您可以把索引理解为一种特殊的目录.微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引.簇集索引)和非聚集索引(nonc ...

  7. JavaWeb学习笔记五:BS结构系统的结构和协议

    访问html地址,可以展示一个用户列表页面.但是这个用户列表页面是写死在HTML文件当中的.这种资源我们称为静态资源.怎么能变成动态资源.显然需要连接数据库. 连接数据库需要JDBC程序,也就是说需要 ...

  8. 1.0 BS结构软件类型介绍

    软件的类型的分类 1.嵌入式软件(非电脑里的程序)eg.手机里的,家中电冰箱的程序 2.系统软件 eg.操作系统,数据库 3.应用软件,分为:单机应用和网络应用软件.eg.电脑里面的计算器是单机软件 ...

  9. 什么是CS和BS结构,两种结构的区别

    什么是CS和BS结构,两种结构的区别 什么是CS和BS结构,两种结构的区别 什么是C/S和B/S结构? C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型 ...

最新文章

  1. AI突破难题才能预见未来
  2. [原创] Matlab 指派问题模型代码
  3. [置顶] 贝叶斯分类(一)
  4. Ubuntu composer安装失败解决方案
  5. 拼多多“京东化”:自建物流重农卖菜是赚谁的钱?
  6. CVPR2017有哪些值得读的Image Caption论文?
  7. Cobertura和Maven:集成和单元测试的代码覆盖率
  8. matlab自带优化工具箱,二元一次函数
  9. 中国象棋游戏设计与实现
  10. 管家婆单机版_安稳之托 祝福管家婆软件25周年
  11. 超五类屏蔽双绞线和计算机电缆区别,什么是超五类网线?双绞线(网线)常用种类的区别详解...
  12. java写快递柜管理系统
  13. 中图杯获奖作品计算机组,中图杯大赛试卷
  14. Cubieboard2开发要点简记
  15. 判断空间上三个点是否共线问题【找bug篇】
  16. 笔记本手机都能用,轻松实现100W快充,AOHi 100W氮化镓PD 充电器体验
  17. 【华为OD机试-按身高和体重排队-Java】
  18. Deepspeed:让大规模深度学习更快更省资源的神器
  19. App上架应用市场操作流程
  20. 爬虫网络请求之JS解密一(百度企业信用)

热门文章

  1. linux的sed命令是什么,linux sed命令
  2. Excel中这四个常出错的地方,你一定中过!
  3. Nginx:限流、缓存、黑白名单等功能详解!
  4. SQL语言基础:数据库语言概念介绍
  5. 盘点阿里程序员常用的 15 款开发者工具
  6. Mysql bat脚本编写_第一次编写bat脚本
  7. 徒手撸了个markdown笔记平台
  8. 【笔记】spring定时器时间配置实例
  9. Linux目录配置及应放置的内容
  10. 谈谈一些有趣的CSS题目(十六)-- 奇妙的 background-clip: text