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