B/S工作原理

转自 http://blog.csdn.net/akkzhjj/article/details/17765541

B/S疑问

  先对比C/S,在C/S中我们开发时怎么做的,是不是这样:拖控件,写方法,所有的功能基本就是这样,就像我们的机房收费系统,C/S学习完之后,我们开始B/S学习,这里我们接触的是ASP.NET的web学习,首先我们学习的牛腩新闻发布系统,感觉很简单,和之前的C/S开发有很多相似的地方,大部分实现功能也是拖控件,写方法,最多在ASP.NET中可以通过HTML、CSS设计页面(也就是前台页面),当然还可以通过Javascript去提交表单,前台后台相互调用,传输数据等等。这些当时感觉都没有什么问题,其实没有问题就是最大的问题。在学到AJAX之后,很多问题才开始认识。何为B/S,它的机制或者原理是怎样的?好了废话少说,进入正题。

Web发展及总结

客户端

HTML

  超文本标记语言。用来标记和规范文本、图片、声音、视频等多媒体元素,通过浏览器展示给我们(Web Page)。

CSS

  级联样式表。用来对HTML进行样式设计,CSS+DIV的应用使得页面的实现结构与表现分离,而CSS的学习重点在CSS的盒子模型,它是DIV排版的核心。

XML

  可扩展标记语言。字面解析不太容易理解,其实它就是用来存储传输数据的。和HTML的关系就是,在不使用XML时,HTML用于显示数据,数据必须存储在HTML文件之内;使用了XML,数据就可以存放在分离的XML文档中。这种方法可以让你集中精力去到使用HTML做好数据的显示和布局上,并确保数据改动时不会导致HTML文件也需要改动。这样可以方便维护页面。JSON对比

Javascript

  客户端脚本语言。有了HTML和CSS,虽然有了很好的页面效果,但是那是远远不够的,因为我们除了点击超链接,我们不能进行其它操作,JS的出现使网页增加了很强的互动性,准确的说JS是基于对象和事件驱动的客户端脚本语言。基于对象,学过面向对象的都知道它的强大之处,基于对象原理也是一样的;事件驱动,使得我们的网页可以向普通的WinForm程序一样,可以进行各样的鼠标、键盘等等触发操作。总而言之,JS与HTML结合在一起能及时响应客户端的操作,对表单的提交做出及时响应。

AJAX

  客户端交互技术,异步的Javascript和XML,允许客户端脚本(JS)发送HTTP请求(XMLHttp)。传统的web应用在用户提交表单然后向web服务器发送请求后,服务器接收处理穿过来的表单,然后返回一个新的网页,这样客户端页面会进行一次刷新以显示从服务端获取的数据,这样做其实没有任何错,但是如果用户在请求前后的两个页面内容相差很少,页面整体刷新没有必要,也浪费宽带,用户体验很不好。

  AJAX的产生完全解决了这个问题,Ajax技术其实就是把 JavaScript 和XMLHttpRequest对象放在 Web 表单和服务器之间。当用户向服务器请求时,数据发送给一些 JavaScript代码而不是直接发送给服务器。JavaScript代码在幕后发送异步请求,然后服务器将数据返回到 JavaScript 处理,后者决定如何处理这些数据,它可以迅速更新表单数据,而不需要更新整个页面。常见的例如谷歌地图。

Jquery

  一个Javascript框架,基本思想和用法就是"选取某个网页元素,然后对其进行某种操作",这就需要我们了解基本的DOM及Jquery基本的语法和API。它的功能很强大!

服务端

对客户端的请求做出相应的处理,实现网站动态化,说白了就是为客户端服务的。这里不多说了,下面主要说一些学习使用ASP.NET的认识。

B/S的工作原理

基本的原理也有了一些认识,下面开始分析B/S应用程序的工作原理。

  从用户的操作开始,用户在浏览器页面提交表单操作,向服务器发送请求,服务器接收并处理请求,然后把用户请求的数据(网页文件、图片、声音等等)返回给浏览器,至此一次请求完成。

  问题就在这,浏览器的请求是怎么形成怎么发送的,然后又是怎么发送到服务器端的,服务器又是如何返回的,中间又有什么操作?

  浏览器/服务器的交互

  带着问题我们看一下浏览器对服务器进行一次请求的整个过程:

  

看完图对浏览器和服务器的交互基本就清晰了。下面再对一些图中的内容进行认识。

HTTP协议

  超文本传输协议。看到超文本是不是很熟悉,是的它是通过网络传输超文本标记语言(HTML)文档的传输协议,详细的规定了浏览器和服务器相互通信的规则,我们称为 Http请求报文(浏览器向服务器发送请求的数据格式)和Http响应报文(服务器返回给浏览器的数据格式)。

HTTP协议之请求

  指的是从浏览器端到服务器端的请求信息,通过这个信息来告诉服务器用户需要的资源。

  Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE。一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

HTTP协议之响应

  接收和解析请求信息后,服务器返回一个HTTP响应信息。也就是将将生成的HTML文档发送给浏览器。

  关于HTTP的内容很多,没有实践操作很多机制很难弄清楚,HTTP协议日后再续,现在的理解能够明白Ajax的交互原理即可。因为在Web开发中的Ajax也是使用请求和响应的模式与服务器传递信息的。

ASP.NET平台

  ASP.NET中web开发原理也符合B/S的提交请求并处理返回这个模式,只不过我们开发的过程没有考虑,也不需要考虑它的底层实现,ASP.NET封装了其底层的处理机制,使很多任务只需要通过拖拽控件就可以实现,这个过程我们感受不到web的内容处理变化。这最大的好处让我们学习ASP.NET变得简单,也更容易开发,这是我们从C/S到B/S过渡最好的工具。

  任何一个学习不仅学习它的技术,理解它的本质原理更能帮助我们来深入的分析问题,提高技术。万变不离其宗,B/S的学习结束了,不然,其实才刚刚开始。

结束语

  B/S已经有半年多的学习时间,总体上对一些理论和原理进行了梳理总结,更多的知识需要我们不断地去学习。

时间: 2024-12-22 07:23:29

B/S工作原理的相关文章

Android ListView工作原理完全解析(转自 郭霖老师博客)

原文地址:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了,它专门用于处理那种内容元素很多,手机屏幕无法展示出所有内容的情况.ListView可以使用列表的形式来展示内容,超出屏幕部分的内容只需要通过手指滑动就可以移动到屏幕内了. 另外ListView还有一个非常神奇的功能,我相信大家应该都体验过,即使在ListView中加载非常非常多的数据,比如达到

LVS集群之工作原理

  首先我们要了解LVS的工作机制: LVS里Director本身不响应请求,只是接受转发请求到后方,Realservers才是后台真正响应请求. LVS 工作原理基本类似DNAT,又不完全相像,它是一种四层交换,默认情况下通过用户请求的地址和端口来判断用户的请求,从而转发到后台真正提供服务的主机,而判断这种请求的是通过套接字来实现,所以四层就可以实现. 而且这个转发的过程对用户而言是透明的(简单的讲,就是用户访问DR的IP,而DR转发给RSS,而用户不知道这个过程) LVS的工作模式: 1.D

47 监控系统基础及zabbix介绍、zabbix工作原理及安装配置、zabbix on CentOS7、zabbix配置

02    zabbix工作原理及安装配置 配置环境 node1192.168.1.120CentOS6.7 node2192.168.1.121CentOS6.7 1.安装配置zabbix #安装前准备 [[email protected] ~]#yum -y install mysql-server mysq [[email protected] ~]# mysql mysql> CREATE DATABASE zabbix CHARACTER SET utf8; mysql> GRANT

inode工作原理及软连接与硬链接

 inode工作原理及软连接,硬链接 inode: 在linux文件系统中,不管什么类型的文件,保存在磁盘分区中时,系统都会分配一个编号,叫做索引节点index node,简称inode inode里面存储了文件的很多参数: 文件类型,权限.UID,GID,属主,属组 链接数(指向这个文件名路径名称个数) 该文件的大小和不同的时间戳 指向磁盘上文件的数据指针 .... 在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)

quarze的工作原理

quartz的工作原理 http://lavasoft.blog.51cto.com/62575/181907/ 几种定时任务的比較 http://blog.sina.com.cn/s/blog_6940cab30101a5pv.html

Java虚拟机工作原理详解

原文地址:http://blog.csdn.net/bingduanlbd/article/details/8363734 一.类加载器 首先来看一下java程序的执行过程. 从这个框图很容易大体上了解java程序工作原理.首先,你写好java代码,保存到硬盘当中.然后你在命令行中输入 [java] view plaincopy javac YourClassName.java 此时,你的java代码就被编译成字节码(.class).如果你是在Eclipse IDE或者其他开发工具中,你保存代码

HashMap工作原理、深入理解JVM、正则

HashMap工作原理: http://www.importnew.com/7099.html: http://blog.csdn.net/ghsau/article/details/16843543: http://blog.csdn.net/ghsau/article/details/16890151. 深入理解JVM: http://www.importnew.com/17770.html: http://www.cnblogs.com/dingyingsi/p/3760447.html.

[Java] SSH框架笔记_SSH三大框架的工作原理及流程

Hibernate工作原理及为什么要用? 原理:1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件2.由hibernate.cfg.xml中的<mapping resource="com/xx/User.hbm.xml"/>读取并解析映射信息3.通过config.buildSessionFactory();//创建SessionFactory4.sessionFactory.openSession();//打

Servlet生命周期和工作原理

Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的<Servlet></Servlet>之间添加如下代码: <loadon-startup>1</loadon-startup&g

[转]ZK工作原理

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其发展历程无需赘述.在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在某些应用中使用,因此需要有一种可靠的.可扩展的.分布式的.可配置的协调机制来统一系统的状态.Zookeeper的目的就在于此.本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本