计算机网络与因特网——web开发技术


重点理解和掌握:
1、远程过程调用RPC概念和方法
2、远程对象调用RMI概念和方法
3、动态网页概念、实现方法和技术
4、活动网页概念、实现方法和技术

主要了解:
1、CGI概念、方法和问题
2、脚本语言概念和应用
3、Java Script技术

1远程过程调用RPC

1.1RPC概述

  • C/S软件模式,解决远程网络两端的协同工作约定,计算任务分配;因特网实际应用层中又分离为应用软件(直接面向用户和应用逻辑处理)和系统软件(管理底层设备、通信和应用进程)两大部分,应用软件可以通过操作系统软件支持的API完成网络两端的通信。
  • 套接字API是低层通信过程最直接的抽象(显式的面向通信原语方法),即指直接面向TCP/IP通信过程的编程方法;调用需要程序员了解和制定许多底层的细节:如计算机域名、IP地址、所用协议、端口等;

API是网络应用程序间通信的实现的唯一方法吗?

  • 使用API编写过客户和服务器软件的程序员都有体会,编程工作仍然是困难的,而且此种方法也容易产生代码错误(或异常处理),导致运行时出现严重问题。
  • 由于绝大部分的C/S程序遵从基本相同的通信模式(请求/响应,有连接、或无连接的通信),能否开发一些通信工具类软件供应用程序使用?只将那些无法自动生成的部分(真正业务逻辑处理和服务功能提供)留给程序员。进一步简化网络应用开发难度。

什么是过程和过程调用?

  • 过程Procedure:实际是能解决一系列相关任务的(可调用的)程序,传统面向过程编程中的子程序、模块程序。

  • 过程调用Procedure Call是面向过程编程(单机)机制。每个过程都要利用一组形式化参数定义,当过程被调用时,调用者要提供与形式化参数匹配的实际参数,参数化的过程作为一种抽象化的编程有很好效果。

我们希望利用传统的过程抽象来构造客户/服务器的通信交互方法。

1.2 远程过程调用RPC(c语言编写)

  • 远程过程调用RPC(Remote Procedure Call)是最早提出和开发C/S通信工具的机制。
  • RPC思想很简单:不再直接使用显式的通信原语的API方法,如套接字接口API方法,而是使用传统编程语言结构(设施)向开发者提供接口,但又隐藏通信细节。
  • 原理上,RPC机制允许程序员将过程放在一个或多个主机上,通过不同计算机间进行的远程过程调用自动生成代码并完成通信。

在这里插入图片描述

RPC模式规范

  • RPC模式通常在现有编程语言中扩展,设计一种符合高级语言编写规范的工具,并能自动创建处理网络通信细节的代码,使开发者更容易构建客户/服务器软件。基于工具的网络软件编程方法已广泛流行。
  • RPC模式在构建网络应用程序时,开发者更多考虑的是客户和服务器构架,本地机客户程序过程功能,服务器过程,而不要集中注意网络和通信协议问题。
  • RPC扩展过程调用机制,允许客户端跨过网络去调用服务器的过程,当发生这样的调用时,就可以使用RPC工具,RPC工具将会生成处理所需的通信过程软件。当然,程序员还是需要制定一份描述那些远程执行的过程的说明书(必须指定其参数的类型)。

利用通信插件实现远程调用过程A
在这里插入图片描述

  • 当使用通信插件后,远程过程调用被分成两部分,
  • ①主程序调用客户插件,服务器插件调用过程A,重要的是这些都是本地调用,客户插件完全可以使用跟原来过程调用相同的名字和接口(接口参数数目和类型都不变),调用程序和被调用程序都不需要改变。
  • ②客户插件和服务器插件间的通信,把真正通信任务交由插件完成。

1.3通信插件和中间件

显然远程过程中处理中,客户/服务器程序须增加一个额外的软件。

  • 客户的额外软件负责处理通过网络发送报文和等待响应的细节,
  • 服务器端的额外软件则负责处理接收报文、调用指定的过程和发送响应等方面的细节。

在网络C/S交互中负责通信任务细节的额外软件被称为:
通信插件(Commmunication Stub)
或称通信代理(Commmunication Proxy)

服务器和客户的通信插件通常采用某种工具(商业产品),在程序员给出接口细节后自动生成。

  • 服务器插件和远程过程组合成为服务器程序,
  • 客户插件和主程序以及本地过程组合成客户程序。

程序员通常采用各种软件工具和成熟编程方法来快速构建网络C/S程序,并提高软件的可靠性,而不需从通信角度过多考虑。

中间件的逻辑模型
在这里插入图片描述
介于传统应用程序和系统平台(操作系统、硬件系统)之间的通用服务工具被称之为中间件middleware。

  • 中间件主要特点:满足大量应用的通用需求,可运行在多种硬件和操作系统平台上,支持分布式计算(为跨网络、硬件和操作系统的应用提供交互的标准协议),以及支持标准的接口。
  • 使用中间件的最大优点在于网络编程开发更加容易,程序员可以可以使用他们熟悉的传统编程技术来设计和构架网络分布式程序。
  • 在这里插入图片描述
    中间件/应用服务器封装请求参数,标准,使申请更快
  • 除通信功能中间件外,还有如数据库访问、安全等其它中间件,在后来对象组件结构中演化为公用组件

RPC中间件产品

  • 最早采用远程过程调用的产品如:
    SUN公司ONE RPC(Open Netwok Computing RPC),
    开放软件基金的DCE RPC(Distributed Computing Environment RPC),
    微软远程过程调用MSRPC;
  • 利用这些工具来生成能在网络计算机间传递远程过程调用的C/S插件。

2 远程对象调用RMI

  • 90年代开始,程序设计方法从面向过程转变为面向对象,基本结构单元为对象,对象由数据项和对其操作的方法构成,方法调用是OOL(Object-OrientedLanguage)最基本控制机制。
  • 在面向对象的编程模型中,系统由若干个对象组成,系统的运行通过对象之间的消息传递和事件通知来实现。
  • 分布式对象是将面向对象的编程模型应用到分布式应用中的一种程序模型。

RPC的基本原理是否同样可以应用于分布式对象?

  • 在分布式系统中,如何应用面向对象的模型,屏蔽分布式进程之间相互通信的细节,为系统运行和上层应用开发提供一致的程序模型,这就是分布式对象和远程方法调用RMI(Remote Method Invocation)要解决的问题
  • 由于对象调用处理涉及对象、方法、消息、状态和接口等一系列细节,比RPC调用显得更加复杂(通常接口和参数定义)。

远程对象调用的基本原理模型
在这里插入图片描述
进程A、B在不同的主机上,进程A内的对象AO需要调用进程B内对象BO的方法和过程是:
对象AO获得对象BO远程代理的应用,BO远程代理将这个方法调用编码(包括方法和参数),发送到对象BO在本机的骨架(对象的属性方法的空架子),骨架解码,调用对象BO的相应方法,结果放回的过程和调用过程相反。

RMI 实现模型
在这里插入图片描述
基于RMI中间件产品

  • 公共对象请求代理结构CORBA(Common Object Request Broker Architecture)
  • 微软COM/DCOM(Distributed Component Object Model)(进化为COM+后融入.NET架构)
  • SUN公司的基于Java的远程方法调用 RMI(Remote Method Invocation)等。

3动态网页

3.1 Web文档发展背景:

  • HTML、HTTP和Web浏览器创建了分布式、非线形的文档集合,很好解决了文档发布、文档相关链接和浏览问题,但对信息发布某些重要需求不能实现,如快速变化信息(股票行情)、过程处理信息、交互类信息、以及效果信息。
  • Web发布信息和数据库访问相联系,使Web系统和管理信息系统、业务系统相联系 。
  • 如何解决Web页面的自动生成问题 ?

3.2 Web文档的三种基本形式和特点:

  1. 静态文档,Web服务器固定位置存放的固定HTML(每次访问返回结果是确定的)。静态文档优点:简单(它含有简单直接的格式规范,因此它可以由完全不懂编程的人员创建),可靠(在被创建和测试之后,他是永远有效的),高性能(浏览器可快速显示一个静态文档,并将拷贝放入缓存提高今后存取该文档的速度)。适合副本缓存。静态文档缺点:缺乏灵活性(内容变化时重新人工设计,比较耗时,不适合频繁变化的信息文档
  2. 动态文档, Web服务器返回由运行应用程序创建的网页结果(每次访问返回结果是变化的)。报告最新信息能力,但复杂、需要编程(环境和创建)从浏览器的角度来看,动态网页与静态网页是毫无分别的。因为他们均使用HTML,浏览器并不知道服务器所返回的网页是来自磁盘文件,还是有计算机程序动态输出。
  3. 活动文档, Web服务器返回的是程序副本,由浏览器在本地运行该程序(可以和用户交互和不断改变显示)。持续信息更新能力(主动更新)和动画,编程技巧和安全性风险。

3.3 动态Web文档的CGI实现:

动态文档的Web服务器根据HTTP请求中URL判别怎么做?定位和取出静态文档,或选择生成该文档的应用程序,并执行应用程序和利用其输出结果构建的网页。
1、CGI标准:

  • CGI(Common Gateway Interface),由NCSA(国家超算应用中心)开发,规定Wwb服务器与实现动态网页应用程序的进行交互,这种应用程序也被称为CGI应用程序;是一种最早的动态网页技术。
    CGI一般性指导框架,编程语言和细节由程序员选择,可根据任务不同,选择不同编程语言;CGI输出除生成HTML外,还可以是图象等不同文档类型。
  • CGI标准允许CGI应用程序参数化,即每次服务器可以传递参数给CGI程序,参数值也可以由浏览器提供,浏览器在URL上增加的附加信息。
  • CGI应用程序使用驻留在服务器上的临时文件存放状态信息(多次调用期间程序所保存的信息)。
    关键和少量状态信息通过Cookie形式传递给浏览器;当再次跟Web服务器联系时,浏览器在请求中嵌入Cookie和服务器交流,加快CGI应用程序的执行过程。

CGI应用程序开发主要缺点:

  • 1、一次执行CGI应用程序必须生成一个完整网页,编程工作量稍大。但许多情况下,动态网页具有一个固定页面框架,而每次只需动态改变部分内容,即所谓模板或框架结构(价格发布、股票行情等)。
  • 2、每个用户请求服务器CGI都要为其创建一个新进程,当多个用户发出请求时影响服务器处理效率,严重时服务器会崩溃掉。
  • 3、CGI程序是磁盘文件,不是常驻内存的,当访问频繁调用会导致大量的磁盘IO操作,影响性能。

固定页面框架+变化部分内容的页面结构(即模板或框架结构),它是HTML和脚本信息(程序脚本)/嵌入命令的混合形式,完成动态网页的装配。
在这里插入图片描述
Servlet是一个Java对象,它接受用户的请求,分解请求数据和执行相关逻辑代码,最后将执行结果返回给用户。作为一个Java对象,当Servlet加载到内存后可被多个请求重复利用。JSP技术是以Java Servlet为基础的动态网页构作技术,它是Java Servlet技术的一个成功应用。

目前动态网页的主要技术主要有:

  • ASP(动态服务器页面),由VB 编写脚本信息+IIS(微软Web服务器)紧密集成。
  • JSP(Java服务器页面),运行平台无关的动态网页技术,页面内含由 Java编写的脚本信息。
  • PHP(超文本预处理页面),采用Perl语言编写的动态网页技术。
  • Servlet 目前是服务器端完成控制的脚步语言。

4 活动Web技术

4.1活动Web技术产生背景:

  • 显示动画的需要:在动态文档被创建时,动态文档中的页面已经固定下来,不能产生“动画”效果。
  • 实现用户端信息不断自动更新:例如:显示股票价格需要不断更新显示,而无须用户操作。
  • Web页面交互操作:浏览器通常只有解析显示功能,而没有输入功能。
  • B/S中当客户端由C演变为B后,最大问题是丢失了客户端主动计算功能。需要一种更主动显示Web技术,信息在文档被载入浏览器之后可以改变。

活动Web技术思想:

  • 活动文档不需要服务器为多个客户的更新不断计算,而是希望把计算任务交给浏览器。当浏览器请求主动文档时,服务器返回一个浏览器可以本地执行的特殊小程序。
  • 一旦服务器将其拷贝发送给浏览器,服务器就不在负责进一步的执行或更新。因此,活动Web文档方法不需要使用服务器大量CPU资源,且不需要服务器不断传输更新的信息(如早期Server Push方法),因而可降低服务器负载和网络带宽。

活动Web技术特点
所谓“活动”并不是网页上的GIF动态图片,应具有以下几个特点

  • 1,“交互性”:即网页会根据用户的要求和选择而动态改变和响应,这是今后Web发展的大势所趋。
  • 2,“自动更新”:即无须手动更新HTML文档,便会自动生成新的页面,可以大大节省工作量。
  • 3,“因时因人而变”:即当不同的时间,不同的人访问同一网址时会产生不同的页面。

4.2 活动网页实现技术:

早期实现技术:将不断更新的任务交给服务器,这种机制称为Server Push机制,该机制需要服务器定时产生文档和拷贝,本质上,服务器不断运行与动态文档相关的应用程序,产生一个含有最新信息的输出,然后服务器将它主动推送发给浏览器用于显示。从用户的角度看,网页的内容在浏览时会不断自动改变。
存在问题:由于动态网页的内容依赖于服务器,服务器Push多个用户的网页时,必须同时运行与网页相关的动态应用程序,则会产生更新延迟、网络带宽的限制,产生延迟及导致服务器负载过度。

脚本语言技术
Web活动文档实现技术的主流是基于脚本语言。

  • 脚本语言介于标记语言(HTML)和编程语言(C、C++、 Java等)之间。
  • 脚本语言与编程语言主体相似(语言描述、变量和程序代码组成等),但是精简的子集,最大的区别是编程语言语法和规则更为严格和复杂,而脚本语言简单、轻便。
  • 脚本语言是一种解释性的语言,一般由相应的脚本引擎(解释器)来解释执行, 不需要编译成可执行文件二进制代码形式存在执行。
  • 脚本语言一般都是以文本形式存在,类似于一种命令.

Applet脚本技术

Java Applet是Java 语言编写的一些小应用程序,这些程序可直接嵌入到页面中,由支持Java的浏览器解释并执行,进而产生特殊效果。它可以大大提高Web页面的交互能力和动态执行能力。包含Applet的网页被称为Java-powered页。

当用户访问这样的网页时,Applet被下载到用户的计算机上支持Java的网络浏览器中执行,所以它的执行速度不受网络带宽或者Modem存取速度的限制,用户可以更好地欣赏网页上Applet产生的多媒体效果。

脚本弥补了HTML语言的缺陷(无计算能力),是Java与HTML折衷的选择。
Applet小应用程序的实现主要依靠java.applet包中的Applet类。Applet应用程序必须嵌入在HTML页面中,才能得到解释执行;同时Applet可以从Web页面中获得参数,并和Web页面进行交互。含有Applet的网页的HTML文件代码中必须带有<applet>和</applet>这样一对标记。

一个HTML文件增加Applet有关的内容只是使网页更加富有生气,如添加声音、动画等这些吸引人的特征,它并不会改变HTML文件中与Applet无关的元素。

Java Script技术

  • script是从Applet改进(更轻型化), java script是一种基于对象和事件驱动,并具有安全性能的脚本语言。与HTML超文本标记语言、Java 脚本语言一起实现在一个Web页面中连接多个对象,与Web客户交互作用。
  • script源码在浏览器中可由脚本引擎直接解析(Applet可能需要编译后嵌入),是HTML与Script函数集成的轻便方法。script代码将会在页面载入时立即执行。如没有在 script对象中定义language 属性,浏览器就会尝试使用恰当的脚本引擎。

java script 基本特点:

  • 1、java script被定位为客户端的脚本语言,提供一个简易编程方式,与其它脚本语言一样,java script是一种解释性语言, 在运行过程中被逐行地解释。与HTML标识结合在一起,从而方便Web用户的使用操作。
  • 2、 java script简单性主要体现在:首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 其变量类型是采用弱类型(非严格数据类型)。
  • 3、 java script是一种基于(面向)对象的语言,这意味着它能运用自己已经创建的对象。因此,许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。
  • 4、是一种安全性语言,不允许访问本地的硬盘,不能将数据存入到服务器上,不允许对网络文档进行修改和删除,只能通过浏览器实现信息浏览或动态交互。
  • 5、java script采用以事件驱动的方式进行响应,它可以直接对用户或客户输入做出响应,
  • 6、java script具有跨平台性(依赖于浏览器),与操作环境无关,只要能运行浏览器的计算机,并支持java script的浏览器就可正确执行。
  • 7、 JavaScript将初始的有效性检查放到Web浏览器上来做,只将“有效”的数据传回服务器,大大提高服务器的效率,(比较CGI脚本,需要Web服务器分配专门的资源来执行有效性检查)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值