关闭

关闭

封号提示

内容

首页 第3章分布式程序设计语言.ppt

第3章分布式程序设计语言.ppt

第3章分布式程序设计语言.ppt

上传者: Jizy 2011-06-23 评分 5 0 168 23 762 暂无简介 简介 举报

简介:本文档为《第3章分布式程序设计语言ppt》,可适用于IT/计算机领域,主题内容包含第三章分布式程序设计语言分布式程序设计语言概述分布式应用程序的分类并行、高性能应用程序。通过并行性达到加速是在分布计算系统上运行应用程序的最主要的原符等。

第三章分布式程序设计语言分布式程序设计语言概述分布式应用程序的分类并行、高性能应用程序。通过并行性达到加速是在分布计算系统上运行应用程序的最主要的原因。容错应用程序。而分布计算系统具有允许部分失效的特性即由于各处理机具有自治性一个处理机的故障不影响其他处理机的正常工作所以可靠性高。程序和数据也可在若干处理机上复制而进一步增加可靠性。具有专用功能的应用程序。一些应用程序可以被构造成一组专用的服务程序。例如文件服务、打印服务、进程服务、终端服务、时间服务等。固有的分布式应用程序。有些应用程序本身就是分布的在这种情况下可以把工作站的集合看成一个分布计算系统这种应用程序必须在分布式硬件上运行。第三章分布式程序设计语言分布式程序设计语言概述分布式程序设计与顺序程序设计的区别使用多个处理机。对分布式程序设计支持的第一个要求就是系统应该具有把一个程序的不同部分分配到不同处理机上执行的能力。处理机合作。各个进程必须能相互通信和同步这是对分布式程序设计支持的第二个要求。处理部分失效。在分布计算系统中一些CPU失效时其他CPU照样工作。所以对分布式程序设计支持的第三个要求是能对系统的部分失效进行检测并恢复。第三章分布式程序设计语言分布式程序设计语言概述分布式程序设计语言的分类按并行模型来分顺序进程并行语言。这类语言使用的最基本模型是一组顺序进程它们并行运行并且通过报文传递进行通信。大部分是流行的C(或C)和FORTRAN的扩展。具有内在并行性的语言。一些研究者认为算法语言不是处理并行性的最好语言因为算法语言是内在顺序式的许多研究者研究具有内在并行性的语言如函数式语言、逻辑语言和面向对象语言。第三章分布式程序设计语言分布式程序设计语言概述分布式程序设计语言的分类按通信模型来分在物理分布的硬件上运行逻辑上分布的软件。相互使用SEND和RECEIVE原语通信在网络上发送报文。在物理非分布的硬件上运行逻辑上分布的软件。用共享主存方法实现报文传递来模拟物理报文传递通信。在物理分布的硬件上运行逻辑上非分布的软件。使用分布式共享存储器通信。在物理非分布的硬件上运行逻辑上非分布的软件。使用物理共享存储器通信。第三章分布式程序设计语言分布式程序设计语言概述分布式程序设计语言的分类容错模型和技术故障的处理模型:系统对程序员隐匿全部处理机故障。给程序员提供高层机制使得程序员能够描述哪些进程和数据是重要的以及发生崩溃后怎样恢复。实现可靠性的方法有两种:程序设计容错和通信容错。程序设计容错技术有三类:向前恢复试图确定错误所在并基于这个知识改正包含错误的系统状态向后恢复通过把系统恢复到错误发生前的状态来改正系统状态错误屏蔽利用同一个算法独立开发几个版本一个最后投票系统用于对这n个版本产生的结果进行投票并确定一个正确的结果。通信容错处理进程通信中发生的故障通信容错依赖于使用的通信方式和故障的类型。第三章分布式程序设计语言并行性的支持并行性的概念并行性。因为分布计算系统有多个处理机所以可把程序分成若干部放到多个处理机上同时运行这就是所谓的并行性。伪并行性(pseudoparallelism)即把程序表示为一组并行运行的进程但不管它们是否在不同的处理机上同时运行。并行粒度。并行单位可以是进程(如并发C)也可以是表达式(如ParAlfl)。一般说来通信代价越大则并行的粒度就应该越大。第三章分布式程序设计语言并行性的支持并行性的表示进程并行。一般说来一个进程是一个逻辑处理机顺序地执行代码具有自己的状态和数据。在语言中进程或进程类型是要被说明的就像过程或过程类型一样。进程的创建可以由说明隐式地完成也可以通过创建某种结构显式地完成。对象并行。用下述方法扩充顺序对象模型可获得并行性:()允许对象不必在收到报文时才活动()允许接收对象在返回结果后继续执行第()一次向几个对象发送报文()允许报文发送者继续和接收者并行工作。第三章分布式程序设计语言并行性的支持并行性的表示语句并行PARj=FORnAj:=AjPARSS第三章分布式程序设计语言并行性的支持并行性的表示函数并行例如表达式h(f(,),g())先计算f或g是没有关系的从而可以并行计算f和g。子句的并行下面的程序给出谓词A的两个子句:()A:B,C,D()A:E,F存在两个并行性的机会:()A的两个子句可并行工作只到有一个成功或两个都失败。()每个子句中的子定理可并行工作直到它们全都成功或其中一个失败。前一种并行性叫做OR并行性后一种叫做AND并行性。第三章分布式程序设计语言进程通信与同步的支持报文传递进程通信的表示方法:报文传递和共享数据设计报文传递的通信方式应考虑的问题:可靠的报文传递和非可靠的报文传递:可靠的报文传递需要承认报文。显式接收和隐式接收:显式接收时接收者执行某一类accept语句指明接收哪些报文以及当报文到达时采取什么行动。使用隐式接收时在接收者内自动调用程序通常在接收进程中创建一个新的线程。直接命名和间接命名:直接命名用于指示一个指定的进程名字可以是该进程的静态名字或是一个表达式。间接命名包括一个中间对象通常叫做邮箱发送者把报文送给它接收者从它那接收。第三章分布式程序设计语言进程通信与同步的支持报文传递进程通信的表示方法:报文传递和共享数据设计报文传递的通信方式应考虑的问题:对称命名和非对称命名。如果发送者和接收者相互命名则基于直接命名的方案是对称的。在非对称方案中仅发送者找接收者在此情况下接收者要与任何发送者相互作用。注意使用隐式接收报文的相互作用在命名方面总是非对称的。第三章分布式程序设计语言进程通信与同步的支持报文传递报文传递通信模式有:同步和异步点到点报文。在同步报文传送方式中发送者在接收者接收报文前一直阻塞。这样双方不仅交换了数据而且还达到同步。在异步报文传送方式中发送者并不等待接收者准备好接收其报文发送者在送出报文后立即继续工作。会合。在Ada中会合模型基于三个概念:项说明、项调用和接受语句。项说明和接受语句是服务员程序的一部分项调用在顾客端。当进程S调用进程R的一项R为此项执行accept语句时在S和R之间发生了相互作用叫做会合。acceptincr(X:intY:outint)doY:=Xend第三章分布式程序设计语言进程通信与同步的支持报文传递报文传递通信模式有:远程过程调用(RPC)。它是双向通信的另一个原语。当进程S调用进程R的过程P时由S提供的P的输入参数被送给R。当R收到调用请求时执行过程P然后把输出参数送回给S。执行P期间S阻塞直到输出参数返回。这和会合机构不同在会合机构中一旦accept语句已执行则调用者就不阻塞。一到多报文传送。很多用于分布计算系统的网络支持快速的广播或组通信设施。第三章分布式程序设计语言进程通信与同步的支持共享数据如果两个进程访问同一个变量可以实现另一种通信方式:一个进程对此变量进行设置另一个进程对它进行读。如果两个进程在同一个机器上运行变量在此机器上存储则可直接通信。分布进程的共享数据方法有:分布式数据结构和共享的逻辑变量。分布式数据结构。这种数据结构可由若干进程同时处理。Linda语言使用元组空间(tuplespace)的概念实现分布式数据结构。例如“jones”,,true是一个有三个段的元组:一个字符串、一个整数和一个布尔值。对TS定义了三个原子操作:out操作向TS加入一个元组read读TS中的一个元组in读TS中的一个元组并删除它。第三章分布式程序设计语言进程通信与同步的支持共享数据共享的逻辑变量。逻辑变量具有“单赋值”性质最初它们是未赋值的但一旦它们接收一个值就不能改变它们。这些变量被用于进程之间的通信通道。如下三个目标:goal(X,Y),goal(X,Y),goal(X)进行逻辑乘用进程P、P、P并行求解。变量X是这三个进程的通信通道最初是未赋值的。如果三个进程中的某个给X赋值则其它两个进程可使用此值。类似地Y是P和P的通信通道。第三章分布式程序设计语言进程通信与同步的支持非确定性的表示和控制进程之间的相互作用模式并不总是确定性的有时还决定于运行时条件。因此表示和控制非确定性模型被提出。选择语句和保护的(guarded)Horn子句是两种表示和控制非确定性的模型。选择语句。它是由如下形式的一组保护命令组成的:保护语句其中保护(guard)由一个布尔表达式和某一类“通信请求”组成。布尔表达式必须无副作用因为它可能在执行该选择语句过程中被计算多次。第三章分布式程序设计语言进程通信与同步的支持非确定性的表示和控制保护的Horn子句。逻辑程序本质上就不是确定性的。并行逻辑语言不是对一给定的谓词一个又一个地试验子句失败时回溯而是并行地搜索所有那些子句并且在这些并行执行期间直到有一个并行执行提交前不允许任何赋值对外部是可见的这叫做OR并行性。但是这不能无限地进行因为并行工作的搜索路径随证明的长度而指数地增长。很普遍的控制OR并行性技术是提交选择非确定性它非确定地选择一个可选择的子句取消其他子句。它是基于保护的Horn子句形式如下:A:G,…,Gn|B,…,Bmn,m目标Gi的合取(与操作)叫做保护目标Bi的合取叫做体(body)。提交操作符“|”也是一个合取操作符。第三章分布式程序设计语言逻辑上分布地址空间的语言分布式程序设计语言的分类:第三章分布式程序设计语言逻辑上分布地址空间的语言同步式报文传递语言:创建并行进程:如CSP提供简单的并行命令创建固定数目的并行进程。进程包含名字、逻辑变量和一系列语句(进程体)。CSP可以创建一组相似的进程但其数目必须在编译时是个常数。例如并行语句writer::X:real…||reader(i:)::…创建三个进程叫作“writer”、“reader()”和“reader()”。Writer有一个局部变量X。下标量i可在reader进程的体中使用。通信:CSP进程不能使用全局变量相互通信只能使用同步的receive和send。执行send或receive的进程受阻一直到其对方执行完互补的语句为止。例如X::Y!||Y::n:integerXn在进程X的语句中把值发送给Y。在进程Y的语句中从进程X读取输入并存放到局部变量n中。第三章分布式程序设计语言逻辑上分布地址空间的语言同步式报文传递语言:可传递的数据类型:简单数据和有结构的数据均可传送与赋值只要发送的值与接收它的变量类型相同。可给有结构的数据一个名字(构造符)如下例中的pair:X::Y!pair(,)||Y::n,m:integerXpair(n,m)可使用空构造符对两个进程进行同步但不传送任何实际数据。非确定性的表示:CSP中使用alternative结构表示非确定性它由一组保护(后面跟着待执行的动作)组成。保护可包含布尔表达式和一个输入语句。CSP允许进程根据当前通信的输入和名字段的信息有选择地接收。第三章分布式程序设计语言逻辑上分布地址空间的语言异步式报文传递语言:并行性单位:NIL中的并行性是基于所谓进程模型。进程不仅是并行性的单位也是模块化的单位。进程到处理机变换是实现上的问题由编译和运行时系统处理。NIL可动态地进行进程间通信路径的配置:NIL中的信口是一个排队的通信通道。在给定时间一个信口有一个指定的所有者。所有者关系可以转让给其他进程可以把信口作为报文的一部分传送或把信口作为一个新创建进程的初始化参数传送。进程可以连接其拥有的输入口和输出口。第三章分布式程序设计语言逻辑上分布地址空间的语言异步式报文传递语言:通信类型:NIL既支持同步通信也支持异步通信可把单个输入口连接到几个输出口所以在输入口可以有多个挂起的报文因而必须排队。非确定表示:NIL提供一个保护命令风格的语句用于在任何输入口上等待报文。第三章分布式程序设计语言逻辑上分布地址空间的语言基于会合的语言:Ada:并行性表示:其并行性是基于顺序进程叫作任务(task)每个任务具有一定的类型。任务由说明部分(说明其他任务如何与其通信)和一个体(包含它的可以执行的语句)组成。通信:任务通常通过会合机制通信也通过共享变量通信会合机制基于项说明、项调用和接受语句。非确定性表示:Ada使用select语句表示非确定性。这个语句用于三个目的:从一组未处理的请求中非确定地选择一个项调用有条件地调用一项(即仅当被调用的任务准备好立即接受它)和为一个项调用设置时限。容错:Ada有一个异常处理机制处理软件故障但语言定义未说明硬件故障问题。第三章分布式程序设计语言逻辑上分布地址空间的语言基于会合的语言:并发C:进程创建:它使用create原语显式地创建进程并可向创建的进程传送参数。可赋给新进程一个优先权以后新进程或其他进程还可以改变此优先权。通信:进程通过会合机构相互通信。并发C中的事务处理与Ada中的项不同可以返回一个值并支持异步事务处理(但并不返回值)。并发C支持一个比Ada中的功能更强的accept语句它根据事务处理参数的值可以有条件地接受一些事务处理。非确定性表示:使用select语句表示非确定性。容错:基于进程复制。第三章分布式程序设计语言逻辑上分布地址空间的语言基于远程过程调用的语言:DP的进程:每个处理机专用于执行一个进程但每个进程可包含几个处理线程这些线程以伪并行方式运行。通信:DP进程相互调用对方的公用过程进行通信用如下形式调用:CallPf(exps,vars)这里P是被调用进程的名字f是由P说明的过程名字表达式是输入参数返回值赋予变量vars。第三章分布式程序设计语言逻辑上分布地址空间的语言多重通信原语:SR是由一个或多个资源(resource)组成。资源是运行在一个物理节点(单处理机或共享存储器多处理机)的一个程序模块可动态创建并可选择地分配到指定机器上运行。资源可包含多个进程它们共享数据。资源可包含一个初始进程和终结进程它们隐式地被创建和运行。SR使用类似于select语句的结构处理非确定性。SR操作的定义类似过程的定义可看成一个过程或入口点(entrypoint)。第三章分布式程序设计语言逻辑上分布地址空间的语言多重通信原语:把操作的两种服务方式和两种调用方式结合起来就有四种进程通信方法。第三章分布式程序设计语言逻辑上分布地址空间的语言基于对象的语言:对象:Emerald把所有实体都看成对象。对象可以是主动的或被动的。并行性:Emerald中的并行性表现在主动对象的同时执行上。一些对象可从一个处理机上迁移到另一个上。分布式系统中很多对象可以并行运行Emerald为本地和远程调用提供相同的语义。对象的迁移可由编译程序或程序员使用几个简单原语发动。对象可作为远程操作中的参数传送。对该参数对象的每次访问都会产生另一个远程调用。为了使这类调用最佳化先把参数对象传送到目的处理机后把该对象传送回来。因为这种情况经常发生所以引入一个新的参数传送类型叫做传送调用(callbymove)以便有效地完成这种操作。第三章分布式程序设计语言逻辑上分布地址空间的语言基于原子事务处理的语言:Argus:主要特点:guardian(保护者)和action(活动)。保护者是能从崩溃中幸存下来的模块而活动是一组原子执行。为了在保持原子语义下允许活动的并行使用原子对象它是一种原子数据类型。Argus提供一些原子类型用户也可自己定义一些。Argus提供两级同步机制:用于伪并行进程的和用于并行活动的。mutex类型提供对保护者内各进程所共享的对象的互斥访问。在容错方面可把某些保护者对象说明成stable存放到坚固存储器中如果某个节点崩溃了则可在坚固存储器中检索并得到恢复。第三章分布式程序设计语言逻辑上共享地址空间的语言并行函数式语言:ParAlfl利用隐式函数并行性。函数并行性通常是细粒度的。由于可能有比处理机数多得多的任务要并行执行所以使用变换方法指定哪个表达式在哪台处理机上计算。如:(f(x)$on($self))(g(y)$on($self))通信和同步是隐式的所以不需要显式语言结构。某个计算需要另一个计算的结果但还未出来时则受阻。语义是基于迟缓计算(lazyevaluation)即一个表达式仅当其结果被要求时才进行计算。一般说来程序员不需关心计算次序但为了有效性要对计算次序进行控制。第三章分布式程序设计语言逻辑上共享地址空间的语言并行逻辑语言:并发PROLOG:并行性来自合取的各目标的AND并行计算和保护Horn子句的各保护的OR并行计算。并发PROLOG中的并行进程使用共享逻辑变量通信。同步是基于在只读变量上暂停的办法。并发PROLOG使用保护Horn子句处理非确定性。第三章分布式程序设计语言逻辑上共享地址空间的语言并行逻辑语言:PARLOG:ANDOR并行性由程序员控制。有两种不同的合取操作符:“”并行计算各合取“”串行计算各合取(自左至右)。进程通过共享变量进行通信而同步方法是在无界共享变量上挂起。PARLOG有个机构用来指定哪些进程可以为某变量产生赋值。如果输入自变量未被赋值则相应的合一将挂起当某其他进程为该变量赋值时此合一将继续。PARLOG使用保护的Horn子句用于非确定性。PARLOG中的保护可测试任何输入变量并为子句的局部变量赋值但不能给在输入自变量中传送的变量赋值。第三章分布式程序设计语言逻辑上共享地址空间的语言基于分布数据结构语言:Linda:Linda的目标是将程序员从并行计算和并发事件的思考中解脱出来从而使并行程序设计在概念上类似于顺序程序设计。Linda使用简单原语eval创建顺序进程但不为程序设计人员提供方法把进程变换到处理机上实际上并不需要因为每个处理机执行一个进程。Linda使用元组空间通信模型。进程通信要向TS插入新元组、读和移去现存的元组。进程同步方法是使用阻塞read和in操作等待元组可用。Linda的容错网络内核是基于TS的复制上的。第三章分布式程序设计语言逻辑上共享地址空间的语言基于分布数据结构语言:Orca:这种语言的并行性是基于顺序进程。使用显式的fork原语派生新的子进程并把参数传送给它。参数可以是数值也可以是由该子进程的说明部分指出共享的抽象数据类型。进程之间通信通过共享数据对象间接地进行。每个对象都属于抽象数据类型每个抽象数据类型的定义由说明部分和实现部分组成。说明部分列出可对该给定类型的对象进行的各种操作。一个操作的实现可由一个或多个保护语句组成。如果是这样一个操作的调用受阻直到至少有一个保护成功接着非确定性地选择一个为真的保护执行其语句不再受阻。共享数据对象模型在分布式系统中有效的实现方法是复制对象。如果共享对象不经常改变可在经常读它的处理机上维持副本对本地副本进行读操作就可减少通信开销。第三章分布式程序设计语言分布式控制描述语言DCDLDCDL中的通用符号:第三章分布式程序设计语言分布式控制描述语言DCDLDCDL中并行性表示:DCDL中的并行单元是语句。一组并行语句表示为:S||S||…||Sn而一组顺序语句表示为:SS…Sn一组语句可以用语句优先图表示SSS||SSS||S第三章分布式程序设计语言分布式控制描述语言DCDL选择语句:一个选择语句表示为:GCGC…GnCn选择语句选择其组成的被保护的命令之一执行。如果多余一个命令可被选择选择将是不确定的。如下的选择语句xym:=xyxm:=y表示如果xy将x赋予m如果yx将y赋予m如果xy并且yx则将x或y之一赋予m。第三章分布式程序设计语言分布式控制描述语言DCDL重复语句:一个重复语句指定其组成选择语句的交互次数这些语句带保护或不带保护它的形式有如下三种:.*带保护的选择语句.*不带保护的选择语句.(n)选择语句在第一种情况下当所有的保护都经过时重复语句终止。在第二种情况下执行不终止。第三种是一个特别的重复语句其重复的次数最多为n。第三章分布式程序设计语言分布式控制描述语言DCDL重复语句:例:给出一个确定的数组b:m:n其中<m<n找出数组b中的一个确定值x。i:=j:=*imxbi,jj:=jjnskipj>ni:=ij:=第三章分布式程序设计语言分布式控制描述语言DCDL重复语句:例:确定一个mn的矩阵a:m:n中某一行的所有元素是否全部为i:=p:=m*ipj:=q:=n*jqai,j=j:=jai,jq:=jj=np:=ijni:=ifound:=(im)第三章分布式程序设计语言分布式控制描述语言DCDL语句并发(或并行)的条件当两个语句并发执行时可能产生与顺序执行不同的结果。让我们先定义两个符号:()R(Si)Si的读集即在Si中被引用的所有变量的集合。()W(Si)Si的写集即在Si中被修改的所有变量的集合。Bernstein提出了以下三个条件对于两个并发执行的语句S和S必须满足这三个条件才能使它们并发执行的结果与它们以任意次序顺序执行的结果相同。()R(S)W(S)=Ф()R(S)W(S)=Ф()W(S)W(S)=Ф第三章分布式程序设计语言分布式控制描述语言DCDL语句并发(或并行)的条件我们可以用Bernstein条件来寻找语句中可以并行执行的最大子集。为此我们定义了一个无向图节点集由给定语句集组成如果Si||Sj则节点Si和Sj相连可以并行执行的最大的语句子集对应于最大的完全子图。第三章分布式程序设计语言分布式控制描述语言DCDLDCDL中的通信输出命令的形式为:sendmessagelisttodestination其中destination是一个进程名(一对一通信)或代表所有其他进程(一对所有通信)的关键字all。输入命令的形式为:receivemessagelistfromsource其中source是一个进程名这个输入命令支持显式和隐式的报文接收。隐式的报文接收表示为:receivemessagelist第三章分布式程序设计语言分布式控制描述语言DCDLDCDL中的通信例:用如下递归的方法计算f(n)=f(n)nn>并且f()=。p(i:n)::=*receivemfromp(i)m=sendtop(i)m>sendmtop(i)receiverfromp(i)sendmmrtop(i)p()::=sendntop()receiveresultfromp()第三章分布式程序设计语言分布式控制描述语言DCDLDCDL中的通信例:Fibonacci数列是由递推公式F(i)=F(i)F(i)(i>)定义的一个整数数列其初始值F()=F()=。这里有两种算法。算法一:定义一系列进程:f(i)用于计算F(ni)如果(ni)大于f(i)从f(i)接收(ni)并把(ni)传递给f(i)。然后f(i)等待f(i)和f(i)的结果把它们相加并把相加的结果传递给f(i)和f(i)。f()::=sendntof()receivepfromf()receiveqfromf()ans:=qf(i)::=receivenfromf(i)n>sendntof(i)receivepfromf(i)receiveqfromf(i)sendpqtof(i)sendpqtof(i)n=sendtof(i)sendtof(i)n=sendtof(i)sendtof(i)f()::=receivepfromf()在上述算法中f()是用户进程f()是虚进程。算法二。这个算法使通信只限于邻居之间即f(i)只能和f(i)和f(i)通信。f()::=n>sendntof()receivepfromf()receiveqfromf()ans:=pn=ans:=n=ans:=f(i)::=receivenfromf(i)n>sendntof(i)receivepfromf(i)receiveqfromf(i)sendpqtof(i)sendptof(i)n=sendtof(i)sendtof(i)第三章分布式程序设计语言分布式控制描述语言DCDLDCDL中的通信容错容错是通过检测故障并随之对系统进行重新配置而实现的。以下是用DCDL描述的故障检测过程。sender::=setuptime(t)senddiagnosticsignaltoreceiverreceiveackfromreceiverstatus:=normaltimeout(t)status:=abnormal个有故障的处理机将被发送方节点通过检查状态变量的值发现。公共网关接口(CGI)公共网关接口(CGI)在Internet上运行程序由于数据处于外地计算机上可能分布在相距甚远的多台设备中甚至于HTML程序本身也在外地计算机中再加上HTML程序可能同一时刻有多个用户运行从而使得HTML程序的运行不同于DOS/Windows等平台下应用程序的线性运行了。1   公共关系接口CGI(CommonGatewayInterface)是客户机与外部应用程序交互信息的基本方式。基于WWW的客户机服务器应用中客户机(通常即为浏览器)和服务器通过网络采用http协议彼此通信。http等候来自Web客户机的请求并对它们作出响应。1   公共关系接口CGI(CommonGatewayInterface)是客户机与外部应用程序交互信息的基本方式。基于WWW的客户机服务器应用中客户机(通常即为浏览器)和服务器通过网络采用http协议彼此通信。http等候来自Web客户机的请求并对它们作出响应。1.HTML程序的上载一个HTML程序设计完成后只有将它上载(upload)到某一个http服务器(host)中才可以被用户执行。http服务器中有固定的路径用于存放HTML程序使之能被Internet上任何用户检索执行。例如:1.HTML程序的上载一个HTML程序设计完成后只有将它上载(upload)到某一个http服务器(host)中才可以被用户执行。http服务器中有固定的路径用于存放HTML程序使之能被Internet上任何用户检索执行。例如:cdmkdirPublicHomePagecdPublicHomePageftp<HTML程序所在地主机名>...get<HTML程序>...quitchmodax<HTML程序>至此HTML程序上载工作已完成。cdmkdirPublicHomePagecdPublicHomePageftp<HTML程序所在地主机名>...get<HTML程序>...quitchmodax<HTML程序>至此HTML程序上载工作已完成。.CGI程序的调用与结果回送FORM中的信息可以由CGI程序接收。CGI程序运行后回送结果给前端。HTML调用CGI程序的方法是:在FORM的Action属性中指定CGI程序回送结果的方法是:产生或调用URL将HTML程序文本送给前端机。.CGI程序的调用与结果回送FORM中的信息可以由CGI程序接收。CGI程序运行后回送结果给前端。HTML调用CGI程序的方法是:在FORM的Action属性中指定CGI程序回送结果的方法是:产生或调用URL将HTML程序文本送给前端机。.前端数据的输入HTML允许前端用户输入数据其语句如下:<inputtype="radio"name="变量名"value="值1">显示信息1<br><inputtype="radio"name="变量名"value="值2">显示信息2<br>...<inputtype="submit"value="Clicktosubmit">.前端数据的输入HTML允许前端用户输入数据其语句如下:<inputtype="radio"name="变量名"value="值1">显示信息1<br><inputtype="radio"name="变量名"value="值2">显示信息2<br>...<inputtype="submit"value="Clicktosubmit">.CGI程序的调用为了前后台交换信息必须调用CGI程序调用方法为<formmethod=“post”action=“CGI程序名”>注:所有CGI程序通过form方式调用。.CGI程序的调用为了前后台交换信息必须调用CGI程序调用方法为<formmethod=“post”action=“CGI程序名”>注:所有CGI程序通过form方式调用。.CGI中接收数据CGI程序中首先应判明前台传送数据的长度然后一位一位地接收到自己的变量中而进行所需的处理。getenv(“CONTENTLENGTH”)求得CGI数据长度getchar()取得CGI中一个字节参数。.CGI中接收数据CGI程序中首先应判明前台传送数据的长度然后一位一位地接收到自己的变量中而进行所需的处理。getenv(“CONTENTLENGTH”)求得CGI数据长度getchar()取得CGI中一个字节参数。、其它环境变量除了传送数据之外还可通过预先确定环境变量变量把一些附加信息传送到外部程序。主要的环境变量:、其它环境变量除了传送数据之外还可通过预先确定环境变量变量把一些附加信息传送到外部程序。主要的环境变量:REMOTE-ADDR:产生执行程序请求的客户机的IP地址。用途:用于防止未经许可的客户机访问你的应用。REMOTE-HOST:正在运行的客户机名称。REMOTE-USER:SERVER-PORT:已接收请求的服务器端口号通常为。QUERY-STRING:当使用GET方式时存储着传送到服务器的数据。REQUEST-METHOD:GET/POST?CONTENT-LENGTH:客户机传送到服务器的数据的长度程序用这个变量来了解将从标准输入设备读取多少数据HTTP-REFERER:与你的CGI建立联系的URL。REMOTE-ADDR:产生执行程序请求的客户机的IP地址。用途:用于防止未经许可的客户机访问你的应用。REMOTE-HOST:正在运行的客户机名称。REMOTE-USER:SERVER-PORT:已接收请求的服务器端口号通常为。QUERY-STRING:当使用GET方式时存储着传送到服务器的数据。REQUEST-METHOD:GET/POST?CONTENT-LENGTH:客户机传送到服务器的数据的长度程序用这个变量来了解将从标准输入设备读取多少数据HTTP-REFERER:与你的CGI建立联系的URL。、实例:<HTML><head><Title>ThesisasimpleexampleofCGI<Title><head><Body><FormACTION=“SinpleCGIexe”>姓名:<inputname=“Name”Value=“陈”><br>年龄:<inputtoname=“Age”><br><inputtype=“Submit”Value=“Click”如Subject><form><body><HTML>、实例:<HTML><head><Title>ThesisasimpleexampleofCGI<Title><head><Body><FormACTION=“SinpleCGIexe”>姓名:<inputname=“Name”Value=“陈”><br>年龄:<inputtoname=“Age”><br><inputtype=“Submit”Value=“Click”如Subject><form><body><HTML>SimpleCGIC如F:编译成SimpleCGIexeprint(“Contenttype:texthtml”)print(“ConnectCGIVariables”)n=if(getenv(“CONTENTLENGTH”))n=atoi(getchar(“CONTENTLENGTH”))for(I=I<nI)putchar(getcharl)fflush(stdout)SimpleCGIC如F:编译成SimpleCGIexeprint(“Contenttype:texthtml”)print(“ConnectCGIVariables”)n=if(getenv(“CONTENTLENGTH”))n=atoi(getchar(“CONTENTLENGTH”))for(I=I<nI)putchar(getcharl)fflush(stdout)ASP技术ASP技术ASP是一种嵌入了用JavaScript和VBScript书写的程序代码的HTML网页。该程序并不必送至客户端解释执行而是由IIS解释在服务器中运行并将运行结果生成HTML语句与ASP中非脚本代码合并生成完整网页。基于Web的系统往往需要浏览器(前端)WebServer(第二层应用服务器)、DatabaseServer(后端第三层))等部分。基于Web的程序往往有基于浏览器和基于服务部两部分。常用browser有IE与NetScape。标准HTML适应于任何浏览器而种种浏览又有其各自的扩充HTML版本。另外有关Script语言(如Javascript)与高级语言(如Java)可用于各种浏览器。.JavaScript语法有些与Java相似但与Java完全没有关系是一门Script语言比Java要方便得多。JavaScript程序部分运行在WebServer端部分运行在Browser端(界面部分)。例:<scriptlanguage=“JavaScript”>functionJavaAlert(){alert(“TheJavaScriptishere”)}.JavaScript语法有些与Java相似但与Java完全没有关系是一门Script语言比Java要方便得多。JavaScript程序部分运行在WebServer端部分运行在Browser端(界面部分)。例:<scriptlanguage=“JavaScript”>functionJavaAlert(){alert(“TheJavaScriptishere”)}VBScriptVBScriptVBScript类似于VB语言同属于InterDev子集。其实JavaScript与VBScript大体相同前台作界面后台作数据访问操作。前端:<ScriptLanguage=“VBScript”><Scrip>后端:<>、ASP相关实现技术、ASP相关实现技术()Clientside与ServersideWeb程序中有Clientside与Serverside两部分HTML语句:<scriptlanguage=……>~~~<script>中的语句部分全是clientsideJavaScript中<server>~~~<server>中的语句是serversideVBScript中<~~~~>中的语句是serversideASP程序必须以asp为扩展名。()Parameters的传送()Parameters的传送Web程序之间传送参数与信息必须是用特定的技术。ASP中有ApplicationRequestSession三种方式。()Application这是公共变量的定义方法一经定义与赋值在每个调用它的程序与进程。例Application(”txtAnZen”)=”WhoAreYou”,从此在系统运行中任何地方变量txtAnZen均变为”WhoAreYou”,这一点是必须特别注意的因为每处(无论哪个进程)的此变量会变成”WhoAreYou”()Request这是URL呼出时的message传送方式传送方式:URLtxtAnZenlevel=WhoAreYouintAge=接受方式:txtMylevel=RequestQueryString(“txtAnZenlevel”)()Session每个Session时保存data的方法Form中的变量可被clientside和serverside两方的Javascript或VBScript程序读取。serverside(Asp中)RequestForm(“txtAnZenlevel”)clientside(VBScript)DocumentformtxtAnZenlevelDocumentformtxtAnZenlevelvalue()Asp中取信息与传送结果()Asp中取信息与传送结果三个Asp预定义对象:Requst,Response,Server用Request对象方法,如QueryStringForm等。其中QueryString读环境变量Form读来自Form的信息送结果:用Response对象(write)实现。如:Responsewrite(“ContextType:texthtml”)Responsewrite(“<HTML>”)ResponsewritetxtAnZenlevelResponsewrite(“<ahref=serversideNTTDMainasptxtAnZenlevel=password=xyz>回到主页<a>”)()与数据库连接()与数据库连接建立于数据库的ADO连接Setcnn=ServerCreateObject(“ADODBConnection”)建立一个对象其中Server为数据库操作对象打开该连接cnnopen数据源名用户名口令设置SQL语句(DefineaSQLstringstrSQL=”select*fromTsecuritywhere”strSQL=strSQL”UserID=’”strUserID”’”创建一个Record对象setrs=ServerCreateObject(“ADODBRecordSet”)打开RecordSetrsOpenstrSQL,cnn,adOpenDynamic其中strSQL是SQL语句cnn是连接名adOpenDynamic(动态读写)是打开方式使用方法whilenotrsEOFtxtUserName=rsFields(“UserName”)rsMoveNextend回收资源rsclosecnnclose

精彩专题

职业精品

上传我的资料

热门资料

资料评价:

/ 76
所需积分:1 立即下载

意见
反馈

返回
顶部

Q