作者:朱金灿

来源:http://blog.csdn.net/clever101

说实话写这篇文章超出了我的能力范围之外(因为我并没有多少Web开发经验),我所期待的是能起一个抛砖引玉的作用——希望高手来指出我的错误,让我也学到正确的知识。之前我一直在思考这样一个问题:一个网站的前台和后台是如何进行数据传递的呢?即前台如何把用户的输入传递给后台,后台又是如何把处理结果发送回前台,比如你登录google网站,输入一个关键字,google网站如何把你输入的关键字传递给后台,然后后台根据你输入的关键字经过处理后得到搜索结果,又是如何把搜索结果发送回前台从而呈现给用户面前的呢?

今天向一个同事抛出了这个问题,感到大致明白了这一过程。B/S系统其实也是采用传统的分层架构的,分为不同的层次,需要不同的语言来配合开发的。我把网站开发所需要的语言归纳为下表:

层次及开发语言

功能

备注

静态页面层,开发语言语言:html

描述网页元素,就是你所看到的网页的样子

脚本逻辑层,开发语言:Javascript或Jscipt等

客户端的一些简单的逻辑处理,比如输入验证等

事务处理层,开发语言:C#、Java和php等

服务器端的事务逻辑处理

后台处理层,开发语言:C/C++等

服务器端的后台数据处理

不是所有的B/S系统都有这一层

一个人从登录网站输入数据到看到处理结果是这样一个流程呢?它大致是这样的:

看完上面的流程图,可能你和一样还有很多疑问:

比如,为什么需要Javascript或Jscipt这一层,直接把用户输入的数据直接提交给服务端处理岂不是更省事吗?这是因为服务器端的计算资源是很宝贵的,比如你输入一个E_mail地址,它的格式是否正确就完全可以在客户端的Javascript这一层进行判断,何须劳烦服务器端呢?这样做是为了减轻网络负担和服务器端的负担。

比如html网页是如何和C#、Java和php编写的代码绑在一起的呢?原来html网页可以指定C#、Java和php的编写的处理代码文件(jsp、php之类的)。

比如C#、Java和php编写的处理程序又是如何把用户数据传递给由C/C++编写的服务器后台处理程序的呢?方式有很多种,假如是Windows服务器的,可以考虑进程内的调用COM组件(这样做的优点是方便传输数据,缺点是安全性不好,比如容易遭受到缓冲区攻击之类的),也可以进程间调用,比如用shell命令直接起一个进程(优点是调用方便,缺点是比如linux服务器的话需要一定的授权)。也可以采用网络通信的方面,比如Java这边起一个socket,C/C++这边起一个socket接受数据进行处理。

比如C/C++编写的服务器后台处理程序又是如何把处理结果送回前台的呢?网站早存在一个空的处理结果页面,C/C++编写的服务器后台处理程序可以把处理结果填充到这个处理结果页面中。至于如何填充的细节还有待研究。

B/S系统的前台和后台数据转递机制探究的更多相关文章

  1. js前台与后台数据交互-前台调后台

    转自:http://blog.csdn.net/wang379275614/article/details/17033981   网站是围绕数据库来编程的,以数据库中的数据为中心,通过后台来操作这些数 ...

  2. Django模板系统(非常详细)(后台数据如何展示在前台)

    前面的章节我们看到如何在视图中返回HTML,但是HTML是硬编码在Python代码中的这会导致几个问题:1,显然,任何页面的改动会牵扯到Python代码的改动网站的设计改动会比Python代码改动更频 ...

  3. js前台与后台数据交互-后台调前台(后台调用、注册客户端脚本)

    转自:http://blog.csdn.net/wang379275614/article/details/17049721 客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后 ...

  4. js前台与后台数据交互

    客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...

  5. 一、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    背景: 目前业界很流行的MVC(model-view-control)开发模式,理解为 模型是Bean, 视图是 Html/Jsp, 控制是Servlet, 关联数据库的Dao web的运行机制: 数 ...

  6. 二、JSP、servlet、SQL三者之间的数据传递(前台与后台数据交互)

    2.收信息来到表单提交时URL所指向的servlet文件,获取传递过来的参数值

  7. java中产品分类返回给前台页面 后台数据组装

    public ResultBean getSpfl(Integer yyb) { ResultBean res = new ResultBean(); try { JSONArray data = n ...

  8. C# 前台和后台POST提交信息的实现方法

    一.系统A(官网)与系统B(第三方支付平台)数据交换的方式 1.1  页面浏览器方式:系统A以构造Form表单的方式,通过系统A客户的浏览器重定向到系统B(向系统B发送请求),B系统完成交易后,将交易 ...

  9. 前台返回json数据的常用方式+常用的AJAX请求后台数据方式

    我个人开发常用的如下所示: 之所以像下面这样下,一是前台Ajax,二是为安卓提供接口数据 现在常用的是返回JSON数据,XML的时代一去不复返 JSON相对于XML要轻量级的多 对JSON不是十分熟悉 ...

随机推荐

  1. pycharm 配置autopep8(亲测可行)

    autopep8是一个可以将Python代码自动排版为PEP8风格第三方包,使用它可以轻松地排版出格式优美整齐的代码.网络上有很多介绍如何在pycharm中配置autopep8的方案,但很多方案中还是 ...

  2. 淺談Unity 5.4新功能:Light Probe Proxy Volume

    作者:CHRISTOPHER POPE 原文連結 Unity 5.4進入到Beta的階段.当中一個特別的功能是光照探頭代理Light Probe Proxy Volume(LPPV).本篇會向大家介紹 ...

  3. amazeui学习笔记一(开始使用5)--藏品collections

    amazeui学习笔记一(开始使用5)--藏品collections 一.总结 1.藏品collections:一些 Amaze UI 中没有的功能.amazeui认为好的解决方案.像图表绘制里面的百 ...

  4. C#程序集引入无效的解决方法

    在项目类库中已经引用了相关了类库,生成解决方案也没问题,但是到了后置代码,通过using引用其他类库的时候,再生成解决方案或者生成单个类库,就会报“未能找到类型或命名空间“xxx"(是否缺少 ...

  5. Windows Forms 窗体篇

    1,显示窗体 非模式: Form form = new Form(); form.Show(); 模式: Form form = new Form(); form.Show(); 2,拥有者窗体与附属 ...

  6. 00103_死锁、Lock接口、等待唤醒机制

    1.死锁 (1)同步锁使用的弊端:当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步.这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁.这种情况能避免就避免掉: synch ...

  7. 为什么出现ORM

    ORM(Object Relational Mapping)对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术 . 为什么出现ORM? 面向对象的特征:我们通常使用的开发语言J ...

  8. [Angular] Implement a custom form component by using control value accessor

    We have a form component: <label> <h3>Type</h3> <workout-type formControlName=& ...

  9. C#基础数据类型与字节数组(内存中的数据格式)相互转换(BitConverter 类)

      在某种通讯协议中(如 Modbus),可能需要把一些基本的数据类型内存中的表示形式转换成以字节数组的形式,方便传送.C/C++中可以利用指针等操作完成,但C#中没有指针,咋办呢?可以用BitCon ...

  10. oled的一套stm32实验2(自己的实验)

    stm32与OLED屏接口的引脚介绍: CS————GPIOD3: RST————GPIOD4: DC—————GPIOD5: D0——————GPIOD6: D1——————GPIOD7; 上是我参 ...