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. ABP理论学习之MVC视图

    返回总目录 本篇目录 介绍 AbpWebViewPage基类 介绍 ABP通过Abp.Web.Mvc Nuget包集成了MVC视图.因此你可以像常规那样创建MVC视图. AbpWebViewPage基 ...

  2. Linux学习之Exam系统发布

    配置时间:2015年11月27日 配置人:撰写人:微冷的雨   Happy 01.Linux安装图 欢迎页面 桌面 02.Linux命令之文件目录操作 给北大青鸟五道口校区创建三个机房(L4,L5,L ...

  3. Npm install failed with “cannot run in wd”

    Linux环境下,root账户,安装某些npm包的时候报下面的错误,例如安装grunt-contrib-imagemin时: Error: EACCES, mkdir '/usr/local/lib/ ...

  4. My first makefile to compile multiple C files

    I have three files to compile: main.c, func.c,  func.h The steps: 1   main.c   to   main.o 2   func. ...

  5. Java 浅析三大特性之一多态

    Java 浅析三大特性之一多态 之前我们的文章讲了Java的封装和继承,封装讲的时候,并没有体现出来封装的强大之处,反而还要慎用封装.因为这时的封装还没有和多态联系到一起,还无法看出向上转型的厉害之处 ...

  6. struts1二:基本环境搭建

    首先建立一个web项目 引入需要的jar包 建立包com.bjpowernode.struts创建LoginAction package com.bjpowernode.struts; import ...

  7. SQL Server中使用Check约束提升性能

        在SQL Server中,SQL语句的执行是依赖查询优化器生成的执行计划,而执行计划的好坏直接关乎执行性能.     在查询优化器生成执行计划过程中,需要参考元数据来尽可能生成高效的执行计划, ...

  8. javascript运动系列第四篇——抖动

    × 目录 [1]原理介绍 [2]代码实现 [3]实例应用 前面的话 在运动系列中,前面分别介绍了匀速运动.变速运动和曲线运动.下面介绍一种特殊的运动形式——抖动 原理介绍 抖动其实是往复运动的一种特殊 ...

  9. Android之OptionsMenu与Notification的实现

    OptionsMenu是Android提供的一种菜单方式,我们知道当智能机刚兴起时,手机上都会有一个MENU(菜单键),当我们点击时,默认我们打开Android提供的默认菜单,本篇我么就一起来学一下, ...

  10. 应用程序框架实战三十:表现层及ASP.NET MVC介绍(一)

    本文将介绍表现层及ASP.NET MVC的一些要点,特别是ASP.NET MVC的一些抽象和封装技巧,如果你对MVC还不了解,可以参考<ASP.NET MVC4 高级编程>,作者Jon G ...