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. sql 笔记(mysql)

    Windows 安装mysql(zip包) 1,zip包解压到要安装目录 2,配置环境变量,Path后加mysql路径\bin 3,修改配置文件,mysql目录下my-default.ini base ...

  2. salesforce 零基础学习(五十)自定义View或者List以及查看系统原来的View或者List

    salesforce给我们提供了标准的页面,比如标准的页面包括标准的列表和标准的详细页视图.有的时候我们想要自定义视图,比如做一个项目的时候不希望使用者直接通过ID查看到标准的详细页,而是跳转到指定处 ...

  3. OpenGL学习进程(13)第十课:基本图形的底层实现及算法原理

        本节介绍OpenGL中绘制直线.圆.椭圆,多边形的算法原理.     (1)绘制任意方向(任意斜率)的直线: 1)中点画线法: 中点画线法的算法原理不做介绍,但这里用到最基本的画0<=k ...

  4. 08. Web大前端时代之:HTML5+CSS3入门系列 ~ QQ空间时间轴

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 大前端系列,主要就是使用CSS3.0来实现,注释我已经打 ...

  5. vue中v-bind:class动态添加class

    1.html代码 <template v-for='item in names'> <div id="app" class="selectItem&qu ...

  6. Android okHttp网络请求之Retrofit+Okhttp+RxJava组合

    前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下R ...

  7. 使用nginx解决跨域问题(flask为例)

    背景 我们单位的架构是在api和js之间架构一个中间层(python编写),以实现后端渲染,登录状态判定,跨域转发api等功能.但是这样一个中间会使前端工程师的工作量乘上两倍,原本js可以直接ajax ...

  8. Repository 返回 IQueryable?还是 IEnumerable?

    这是一个很有意思的问题,我们一步一步来探讨,首先需要明确两个概念(来自 MSDN): IQueryable:提供对未指定数据类型的特定数据源的查询进行计算的功能. IEnumerable:公开枚举数, ...

  9. IOS 开发中要注意的事项

    1.关于拍摄 TGCameraViewController – 基于 AVFoundation 的自定义相机.样式漂亮,轻量并且可以很容易地集成到 iOS 项目中.不会内存吃紧 2.block 中对控 ...

  10. 原创:微信小程序入口猜想?

    昨天看到一篇文章:是有一个人逆向了微信源码,从中发现了很多关于小程序的未公开内容,然后发布了出来,不过很快作者就删掉了文章,而我也没保留,只是隐约留下来一点点印象,就是作者推测了很多个入口:作者删掉的 ...