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已经有半年多的学习时间,总体上对一些理论和原理进行了梳理总结,更多的知识需要我们不断地去学习。

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

  1. 菜鸟学Struts2——Struts工作原理

    在完成Struts2的HelloWorld后,对Struts2的工作原理进行学习.Struts2框架可以按照模块来划分为Servlet Filters,Struts核心模块,拦截器和用户实现部分,其中 ...

  2. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  3. HashMap的工作原理

    HashMap的工作原理   HashMap的工作原理是近年来常见的Java面试题.几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道HashTable和HashMap之间 ...

  4. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

    RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  5. ThreadLocal 工作原理、部分源码分析

    1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...

  6. Servlet的生命周期及工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  7. 代码管理工具 --- git的学习笔记二《git的工作原理》

    通过几个问题来学习代码管理工具之git 一.git是什么?为什么要用它?使用它的好处?它与svn的区别,在Mac上,比较好用的git图形界面客户端有 git 是分布式的代码管理工具,使用它是因为,它便 ...

  8. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  9. 浏览器内部工作原理--作者:Tali Garsiel

    本篇内容为转载,主要用于个人学习使用,作者:Tali Garsiel 一.介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到 ...

  10. Ajax工作原理

    在写这篇文章之前,曾经写过一篇关于AJAX技术的随笔,不过涉及到的方面很窄,对AJAX技术的背景.原理.优缺点等各个方面都很少涉及null.这次写这篇文章的背景是因为公司需要对内部程序员做一个培训.项 ...

随机推荐

  1. [Voice communications] 音量的控制

    改变音频的音量是音频处理中最基础的部分,我们可以利用 GainNode 来构建 Mixers 的结构块.GainNode 的接口是很简单的: interface GainNode : AudioNod ...

  2. MySQL 清空慢查询文件

    标签:配置慢查询 概述 本章主要写当慢查询文件很大的时候怎样在线生成一个新的慢查询文件. 测试环境:mysql 5.6.21 步骤 配置慢查询 默认的my.cnf文件在/etc/目录下 vim /et ...

  3. 掀起你的盖头来:Unit Of Work-工作单元

    写在前面 阅读目录: 概念中的理解 代码中的实现 后记 掀起了你的盖头来,让我看你的眼睛,你的眼睛明又亮呀,好像那水波一模样:掀起了你的盖头来,让我看你的脸儿,看看你的脸儿红又圆呀,好像那苹果到秋天. ...

  4. Javascript本质第二篇:执行上下文

    在上一篇文章<Javascript本质第一篇:核心概念>中,对Javascript执行上下文做了解释,但是这些都是基于Javascript标准中对执行上下文的定义,也就是说理论上的东西,本 ...

  5. 备忘-Android ViewPager 子页监听事件

    @Override public Object instantiateItem(View arg0, int arg1) { ((ViewPager) arg0).addView(mListViews ...

  6. 《Entity Framework 6 Recipes》中文翻译系列 (40) ------ 第七章 使用对象服务之从跟踪器中获取实体与从命令行生成模型(想解决EF第一次查询慢的,请阅读)

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 7-5  从跟踪器中获取实体 问题 你想创建一个扩展方法,从跟踪器中获取实体,用于数 ...

  7. vSphere Client 编辑虚拟机属性的问题

    编辑虚拟机属性的时候, 出现: vpxclient.vmconfig.cpuid 初始值设置异常之类的,重置了, 并将注册表中的所有vmvare 相关键值删除了, 还是一样的.. 后面参照https: ...

  8. JBoss AS

    即 JBoss Application Server - JBoss Community The JBoss AS community project has been renamed to the ...

  9. SQL Server 2014新特性探秘(3)-可更新列存储聚集索引

    简介      列存储索引其实在在SQL Server 2012中就已经存在,但SQL Server 2012中只允许建立非聚集列索引,这意味着列索引是在原有的行存储索引之上的引用了底层的数据,因此会 ...

  10. 我和linux的第二十二天

    这几天学校的事情比较多,空闲时间也有,但没有利用起来.前些天听国学课,发觉自己心性还是不很成熟,以前自觉遇到君子应用君子的方法相处,遇到小人用小人的方法对待,老师一句话,疏清了自己.当我们用小人的方法 ...