深入理解Web3D的关键技术及其应用实现
马颖峰 陈华chenhua1982618@tom.com
陕西师范大学 新闻与传播学院 陕西 西安 710062
【摘要】近年来Web3D已经成为Internet上3D文件的标准,围绕Web3D的实现技术及工具的开发受到业界的普遍重视,运用不同的开发工具和技术来建构网上三维环境,也引起网络教育应用研究者的关注。本文对Web3D的核心技术及其网络传输和呈现特点进行了比较,对实现技术进行了归类研究,并结合技术特点指出了开发和应用时应该注意的问题。
【关键词】Web3D;X3D;核心技术;实现技术
Web3D Core Technology and Realization
Ma Yingfeng Chen Hua
Shaanxi Normal University College of News and Media Shaanxi Xi'an 710062
Abstract :Recent years Web3D already became the 3D document standard on Internet, the field takes generally about the realization technology and the tool development of Web3D,constructs the three dimensional environment on the net by the different development tools and the technology, also caused the attention of the application of network education researchers. This article to carry on the comparison about the Web3D core technology , its the network transmitted and presents the characteristic, and has conducted the classification research to the realization technology, and has pointed out what questions should pay attention when development and application by union technology characteristic.
Key words: Web3D; X3D; Core technology; Realization technology
前言
网络多媒体技术的出现使不受时间、地域、对象限制的学习活动成为可能,从而改变了传统的教学方式,已成不争之实。尽管以网络技术为支撑的网络教育取得长足的发展,但是,网络教学还无法为学习者提供象传统教学那样的真实体验,使网络教学的效果受到质疑。所以,有人认为“在Internet环境下如何为学习者构建丰富的多媒体教学资源和有效的学习环境,这是网络教学所面临的主要难题”。近年,提高网络传输效率方面的努力从未间断,且多数已实用化,以3D图形生成和传输为基础的网络三维技术(即Web3D技术)便是代表。由于Web3D技术以其特有的形象化展示、强大的交互及其模拟等功能,增强了网络教学的真实体验,而受到关注。
一、关于Web3D
Web3D可以简单的看成是Web技术和3D技术相结合的产物,是互联网上实现3D图形技术的总称。从技术的亲缘关系来看,Web3D技术源于虚拟现实技术中的VRML分支,1997年,VRML(VRML Consortium)协会正式更名为Web3D(Web 3D Consortium)协会,并制定了VRML97新的国际标准。至此,Web3D的专用缩写被人们所认识(这也是常常把Web3D与虚拟现实联系在一起的原因)。
2004年被ISO审批通过的由Web3D协会发布的新一代国际标准—X3D,标志着Web3D进入了一个新的发展阶段。由于X3D把VRML的功能封装到一个可扩展的核心之中,能够提供标准VRML 97 browser的全部功能,且有向前兼容的技术特征;此外,X3D使用XML语法,从而实现了与流式媒体MPEG-4的3D内容的融合;再者,X3D是可扩展的,任何开发者都可以根据自己需求,扩展其功能。因此,X3D标准受到业界(如3Dlabs,TI Technologies, Blaxxu,Nexternet,OpenWorlds,ParallelGraphics,Sony Electronics等)广泛支持。
X3D标准使更多的Internet设备实现生成、传输、浏览3D对象成为可能,无论是Web客户端还是高性能的广播级工作站用户,都能够享受基于X3D所带来的技术优势。而且,在X3D基本框架下,保证了不同厂家所开发的软件的互操作性,结束互联网3D图形标准混乱的局面。目前,Web3D技术已经发展成为一个技术群,成为网络3D应用的独立研究领域,也是网络教学资源和有效的学习环境设计和开发中受到普遍关注的技术。
二、Web3D的核心技术及其特征
目前,走向实用化阶段的Web3D的核心技术有基于VRML、Java、XML、动画脚本以及流式传输的技术,为网络教学资源和有效的学习环境设计和开发、组织不同形式的网络教学活动,提供了更为灵活的选择空间。由于采用了不同的技术内核,不同的实现技术也就有不同的原理、技术特征和应用特点(见表1)。
表1:Web3D的核心技术及特征对比
Web3D的 核心技术 |
实现原理 |
技术特征 |
应用特点 |
基于 VRML技术 |
服务器端提供的是VRML文件和支持资源,浏览器通过插件将描述性的文本解析为对应的类属,并在显示器上呈现出来。 |
通过编程、三维建模工具和VRML可视化软件实现;在虚拟三维场景展示时,文件数据量很大。 |
高版本浏览器预装插件;文件传输慢,下载时间长;呈现的图像质量不高;与其他多技术集成能力及兼容性弱。适合于三维对象和场景的展示。 |
基于 XML技术 |
将用户自定义的三维数据集成到XML文档中,通过浏览器对其进行解析后实时展现给用户。 |
通过三维建模工具和可视化软件实现;在三维对象和三维场景展示时,文件数据量小。 |
需要安装插件;文件传输快,可被快速下载;呈现的图象质量较好;与其他多技术集成能力强;兼容性好。适合于三维对象和场景的展示。 |
基于 Java技术 |
通过浏览器执行程序,直接将三维模型渲染后实时展现三维实体。 |
通过编程和三维建模工具来实现;在三维对象和三维场景展示时,文件数据量小。 |
不需要安装插件;文件传输快,可被快速下载;呈现的图象质量非常高;兼容性好。适合于三维对象和场景的展示。 |
基于动画 脚本语言 |
在网络动画中加入脚本描述,脚本通过控制各幅图像来实现三维对象。 |
通过脚本语言编程来实现;在三维对象和三维场景展示时,文件数据量较小 |
需要插件;文件传输快,可被快速下载;呈现的图象质量随压缩率可调;兼容性好。适合于三维对象和场景的展示。 |
基于流式 传输的技术 |
直接将交互的虚拟场景嵌入到视频中去。 |
通过实景照片和场景集成(缝合)软件来实现;在场景模拟时,文件数据量较小。 |
需要下载插件;用户可快速浏览文件;三维场景的质量高;兼容性好。实现360度全景虚拟环境。 |
三、Web3D的实现技术
1.基于编程的实现技术
开发Web3D最直接的方法是通过编程来实现。其编程语言主要有:虚拟现实建模语言VRML,网络编程语言Java和Java3D,并且需要基层软件或者驱动库的支持,如:ActiveX,COM和DCOM等。其中,使用最为广泛的是VRML和Java3D。
VRML语言就是采用其提供的节点、字段和事件来直接编程,但工作量大,开发效率低,直接表现很复杂的场景很困难,必须借助其它可视化编程工具,才能实现对复杂场景的构建。另外,VRML所提供的API 远不能满足应用程序开发的要求,且复杂、不易使用。
Java3D是在OpenGL、DirectX等三维图形标准的基础上发展起来的,它的编程模型是基于图像场景的,这就消除了以前的API强加给编程人员的繁琐细节,允许编程人员更多的考虑场景及其组织,而非底层渲染代码。因此,Java3D 为Web3D提供了很好的功能支持。
基于编程的Web3D实现技术,有编程工作量大且较难掌握的共同缺点,特别是对于不熟悉计算机编程的学科老师,通过编程将Web3D技术引入到教学中较难。
2.基于开发工具的实现技术
为了提高Web3D技术的实用性,近年来,一些公司开发了专门针对Web3D对象建构的可视化开发工具(如Cult3D,Viewpoint,Pulse3D,Shout3D,Blaxunn3D等),从而为不熟悉编程的人员开发Web3D对象提供了方便的实现途径。这些专门的开发工具,尽管用法和功能各异,但开发过程一般都包括:(1)建立或编辑三维场景模型;(2)增强图形质量;(3)设置场景中的交互;(4)优化场景模型文件;(5)加密等。
其中三维建模是Web3D图形制作的关键,许多软件厂商都把3Dmax作为三维建模的工具。对于特别复杂的场景,也可以采用照片建模技术来建立三维网格模型。近年推出的商品化软件有Canoma,Photo3D,ImageModeler等。
通过开发工具实现Web3D的开发,流程简单、观并易掌握。
3.基于多媒体工具软件的实现技术
利用Flash、TVR等多媒体工具软件,不通过编程就很方便进行Web3D的开发。
在交互式矢量动画软件Flash中,对导入的序列图像或已拼接的360度的全景图像,通过ActionScript设置交互而形成的3D对象或全景虚拟环境,能实现360度视角可见的图像的控制。由于该技术具有矢量性,所以,具有画面清晰度不因缩放而降低、文件小等优点。另外,由于采用micromedia的Shockwave技术,从服务器端向浏览器端传输只是一些绘图指令,所以能够实现在低带宽上的高质量浏览。但需要安装ShockwaveFlash的Plugin才可观看。
Apple公司的QTVR(QuickTime)AuthorStudio是基于图像缝合技术实现全景图像空间构建,再将全景图像制作成QTVR文件,实现网上浏览。QTVR在真实感、速度和文件大小等方面非常吸引用户。Apple公司近年推出的基于Windows操作系统的开发工具VR ToolBox,使开发用于网络教学的QTVR更为便捷和高效。
4.基于Web开发平台的SDK的实现技术
通过Web的SDK实现Web3D的技术近来受到关注,其中WildTangent和EON技术成熟,应用广泛。
WildTangent将Java和Javascript 与DirectX进行封装,提供了简化而且强大的程序开发环境。用户只要使用WildTangent网络驱动配合脚本语言或者所选择的程序语言,就能创造出动态、眩目的3D效果(可以包含二维平面图形、声音以及三维模型) 。而且,WildTangent网络驱动通过下载的控件能够实现与IE和Netscape浏览器兼容。由于Wildtangent技术具有很强的交互性, 使得WildTangent的应用范围非常广泛,但要用WildTangent创造出交互效果,用户必须具备一定的脚本语言基础。
EON Studio是一套多用途的3D/VR内容整合制作套件,开发者不需撰写复杂的程序,就能轻松快速的建构互动虚拟内容。具有功能强、易学易用、表现逼真、安全性好、制作的档案很小等特点。
四 、结束语
Web3D技术以其强大的交互性、更强的真实感及在网络上易于传输的特点,展现出了它在网络教育中的独特优势和潜力。采用Web3D技术来模拟实验环境,特别是一些危险、费用昂贵、操作危险性高(易燃、易爆)的化学实验,地震波传播、火山喷发等不易在真实环境中实现的地理实验,具有非常现实的意义。随着技术的发展,WEB3D技术的功能会更强、实现的技术会更加丰富。
推荐阅读
-
深入理解JSP的九大内置对象及其在四个作用域中的应用
-
深入理解JSP第四部分:EL表达式的探索与应用,包括各类数据的获取、内置对象的使用、运算功能实现、数据回显、自定义函数和fn方法库的应用
-
深入理解Web3D的关键技术及其应用实现
-
深入理解与实践:AT89C51单片机的中断系统及其应用实验解析
-
【2022新手指南】Java编程进阶之路 - 六、技术架构篇 ### MySQL索引底层解析与优化实战 - 你会讲解MySQL索引的数据结构吗?性能调优技巧知多少? - Redis深度揭秘:你知道多少?从基础到哨兵、主从复制全梳理 - Redis持久化及哨兵模式详解,还有集群搭建和Leader选举黑箱打开 - Zookeeper是个啥?特性和应用场景大公开 - ZooKeeper集群搭建攻略及 Leader选举、读写一致性、共享锁实现细节 - 探究ZooKeeper中的Leader选举机制及其在分布式环境中的作用 - Zab协议深入剖析:原理、功能与在Zookeeper中的核心地位 - RabbitMQ全方位解读:工作模式、消费限流、可靠投递与配置策略 - 设计者视角:RabbitMQ过期时间、死信队列与延时队列实践指南 - RocketMQ特性和应用场景揭示:理解其精髓与差异化优势 - Kafka详细介绍:特性及广泛应用于实时数据处理的场景解析 - ElasticSearch实力揭秘:特性概述与作为搜索引擎的广泛应用 - MongoDB认知升级:非关系型数据库的优势阐述,安装与使用实战教学 - BIO/NIO/AIO网络模型对比:掌握它们的区别与在网络编程中的实际应用 - Netty带你飞:理解其超快速度背后的秘密,包括线程模型分析 - 网络通信黑科技:Netty编解码原理与常用编解码器的应用,Protostuff实战演示 - 解密Netty粘包与拆包现象,怎样有效应对这一常见问题 - 自定义Netty心跳检测机制,轻松调整检测间隔时间的艺术 - Dubbo轻骑兵介绍:核心特性概览,服务降级实战与其实现益处 - Dubbo三大神器解读:本地存根与本地伪装的实战运用与优势呈现 ----------------------- 七、结语与回顾
-
理解DDNS的工作机制及其在Linux环境下的应用与实现
-
理解DDNS的工作机制及其在Linux环境下的应用与实现
-
包婷婷 (201550484)作业一 统计软件简介与数据操作-SPSS(Statistical Product and Service Solutions),"统计产品与服务解决方案"软件。最初软件全称为"(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为"统计产品与服务解决方案",标志着SPSS的战略方向正在做出重大调整。为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。 1984年SPSS总部首先推出了世界上第一个统计分析软件微机版本SPSS/PC+,开创了SPSS微机系列产品的开发方向,极大地扩充了它的应用范围,并使其能很快地应用于自然科学、技术科学、社会科学的各个领域。世界上许多有影响的报刊杂志纷纷就SPSS的自动统计绘图、数据的深入分析、使用方便、功能齐全等方面给予了高度的评价。 R统计软件介绍 R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。 与其说R是一种统计软件,还不如说R是一种数学计算的环境,因为R并不是仅仅提供若干统计程序、使用者只需指定数据库和若干参数便可进行一个统计分析。R的思想是:它可以提供一些集成的统计工具,但更大量的是它提供各种数学计算、统计计算的函数,从而使使用者能灵活机动的进行数据分析,甚至创造出符合需要的新的统计计算方法。 该语言的语法表面上类似 C,但在语义上是函数设计语言(functional programming language)的变种并且和Lisp 以及 APL有很强的兼容性。特别的是,它允许在"语言上计算"(computing on the language)。这使得它可以把表达式作为函数的输入参数,而这种做法对统计模拟和绘图非常有用。 R是一个免费的*软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R主页那儿可以下载到R的安装程序、各种外挂程序和文档。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。 二、R语言 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个*、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。 R作为一种统计分析软件,是集统计分析与图形显示于一体的。它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的帮助系统,相比于其他统计分析软件,R还有以下特点: 1.R是*软件。这意味着它是完全免费,开放源代码的。可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。[2] 2.R是一种可编程的语言。作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。而且学会之后,我们可以编制自己的函数来扩展现有的语言。这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。大多数最新的统计方法和技术都可以在R中直接得到。[2] 3. 所有R的函数和数据集是保存在程序包里面的。只有当一个包被载入时,它的内容才可以被访问。一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.[2] 4.R具有很强的互动性。除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF文件。另外,和其他编程语言和数据库之间有很好的接口。[2] 5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、最前沿的统计学家思维的聚集地.[2] R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。 但是请不要忘了:R是免费的(R is free)。R语言源代码托管在github,具体地址可以看参考资料。[3] 。 R语言的下载可以通过CRAN的镜像来查找。 R语言有域名为.cn的下载地址,有六个,其中两个由Datagurn,由 中国科学技术大学提供的。R语言Windows版,其中由两个下载地点是Datagurn和 USTC提供的。 三、stata Stata 是一套提供其使用者数据分析、数据管理以及绘制专业图表的完整及整合性统计软件。它提供许许多多功能,包含线性混合模型、均衡重复反复及多项式普罗比模式。用Stata绘制的统计图形相当精美。 新版本的STATA采用最具亲和力的窗口接口,使用者自行建立程序时,软件能提供具有直接命令式的语法。Stata提供完整的使用手册,包含统计样本建立、解释、模型与语法、文献等超过一万余页的出版品。 除此之外,Stata软件可以透过网络实时更新每天的最新功能,更可以得知世界各地的使用者对于STATA公司提出的问题与解决之道。使用者也可以透过Stata. Journal获得许许多多的相关讯息以及书籍介绍等。另外一个获取庞大资源的管道就是Statalist,它是一个独立的listserver,每月交替提供使用者超过1000个讯息以及50个程序。 四、PYTHON
-
windows下进程间通信的(13种方法)-摘 要 本文讨论了进程间通信与应用程序间通信的含义及相应的实现技术,并对这些技术的原理、特性等进行了深入的分析和比较。 ---- 关键词 信号 管道 消息队列 共享存储段 信号灯 远程过程调用 Socket套接字 MQSeries 1 引言 ---- 进程间通信的主要目的是实现同一计算机系统内部的相互协作的进程之间的数据共享与信息交换,由于这些进程处于同一软件和硬件环境下,利用操作系统提供的的编程接口,用户可以方便地在程序中实现这种通信;应用程序间通信的主要目的是实现不同计算机系统中的相互协作的应用程序之间的数据共享与信息交换,由于应用程序分别运行在不同计算机系统中,它们之间要通过网络之间的协议才能实现数据共享与信息交换。进程间通信和应用程序间通信及相应的实现技术有许多相同之处,也各有自己的特色。即使是同一类型的通信也有多种的实现方法,以适应不同情况的需要。 ---- 为了充分认识和掌握这两种通信及相应的实现技术,本文将就以下几个方面对这两种通信进行深入的讨论:问题的由来、解决问题的策略和方法、每种方法的工作原理和实现、每种实现方法的特点和适用的范围等。 2 进程间的通信及其实现技术 ---- 用户提交给计算机的任务最终都是通过一个个的进程来完成的。在一组并发进程中的任何两个进程之间,如果都不存在公共变量,则称该组进程为不相交的。在不相交的进程组中,每个进程都独立于其它进程,它的运行环境与顺序程序一样,而且它的运行环境也不为别的进程所改变。运行的结果是确定的,不会发生与时间相关的错误。 ---- 但是,在实际中,并发进程的各个进程之间并不是完全互相独立的,它们之间往往存在着相互制约的关系。进程之间的相互制约关系表现为两种方式: ---- (1) 间接相互制约:共享CPU ---- (2) 直接相互制约:竞争和协作 ---- 竞争——进程对共享资源的竞争。为保证进程互斥地访问共享资源,各进程必须互斥地进入各自的临界段。 ---- 协作——进程之间交换数据。为完成一个共同任务而同时运行的一组进程称为同组进程,它们之间必须交换数据,以达到协作完成任务的目的,交换数据可以通知对方可以做某事或者委托对方做某事。 ---- 共享CPU问题由操作系统的进程调度来实现,进程间的竞争和协作由进程间的通信来完成。进程间的通信一般由操作系统提供编程接口,由程序员在程序中实现。UNIX在这个方面可以说最具特色,它提供了一整套进程间的数据共享与信息交换的处理方法——进程通信机制(IPC)。因此,我们就以UNIX为例来分析进程间通信的各种实现技术。 ---- 在UNIX中,文件(File)、信号(Signal)、无名管道(Unnamed Pipes)、有名管道(FIFOs)是传统IPC功能;新的IPC功能包括消息队列(Message queues)、共享存储段(Shared memory segment)和信号灯(Semapores)。 ---- (1) 信号 ---- 信号机制是UNIX为进程中断处理而设置的。它只是一组预定义的值,因此不能用于信息交换,仅用于进程中断控制。例如在发生浮点错、非法内存访问、执行无效指令、某些按键(如ctrl-c、del等)等都会产生一个信号,操作系统就会调用有关的系统调用或用户定义的处理过程来处理。 ---- 信号处理的系统调用是signal,调用形式是: ---- signal(signalno,action) ---- 其中,signalno是规定信号编号的值,action指明当特定的信号发生时所执行的动作。 ---- (2) 无名管道和有名管道 ---- 无名管道实际上是内存中的一个临时存储区,它由系统安全控制,并且独立于创建它的进程的内存区。管道对数据采用先进先出方式管理,并严格按顺序操作,例如不能对管道进行搜索,管道中的信息只能读一次。 ---- 无名管道只能用于两个相互协作的进程之间的通信,并且访问无名管道的进程必须有共同的祖先。 ---- 系统提供了许多标准管道库函数,如: pipe——打开一个可以读写的管道; close——关闭相应的管道; read——从管道中读取字符; write——向管道中写入字符; ---- 有名管道的操作和无名管道类似,不同的地方在于使用有名管道的进程不需要具有共同的祖先,其它进程,只要知道该管道的名字,就可以访问它。管道非常适合进程之间快速交换信息。 ---- (3) 消息队列(MQ) ---- 消息队列是内存中独立于生成它的进程的一段存储区,一旦创建消息队列,任何进程,只要具有正确的的访问权限,都可以访问消息队列,消息队列非常适合于在进程间交换短信息。 ---- 消息队列的每条消息由类型编号来分类,这样接收进程可以选择读取特定的消息类型——这一点与管道不同。消息队列在创建后将一直存在,直到使用msgctl系统调用或iqcrm -q命令删除它为止。 ---- 系统提供了许多有关创建、使用和管理消息队列的系统调用,如: ---- int msgget(key,flag)——创建一个具有flag权限的MQ及其相应的结构,并返回一个唯一的正整数msqid(MQ的标识符); ---- int msgsnd(msqid,msgp,msgsz,msgtyp,flag)——向队列中发送信息; ---- int msgrcv(msqid,cmd,buf)——从队列中接收信息; ---- int msgctl(msqid,cmd,buf)——对MQ的控制操作; ---- (4) 共享存储段(SM) ---- 共享存储段是主存的一部分,它由一个或多个独立的进程共享。各进程的数据段与共享存储段相关联,对每个进程来说,共享存储段有不同的虚拟地址。系统提供的有关SM的系统调用有: ---- int shmget(key,size,flag)——创建大小为size的SM段,其相应的数据结构名为key,并返回共享内存区的标识符shmid; ---- char shmat(shmid,address,flag)——将当前进程数据段的地址赋给shmget所返回的名为shmid的SM段; ---- int shmdr(address)——从进程地址空间删除SM段; ---- int shmctl (shmid,cmd,buf)——对SM的控制操作; ---- SM的大小只受主存限制,SM段的访问及进程间的信息交换可以通过同步读写来完成。同步通常由信号灯来实现。SM非常适合进程之间大量数据的共享。 ---- (5) 信号灯 ---- 在UNIX中,信号灯是一组进程共享的数据结构,当几个进程竞争同一资源时(文件、共享内存或消息队列等),它们的操作便由信号灯来同步,以防止互相干扰。 ---- 信号灯保证了某一时刻只有一个进程访问某一临界资源,所有请求该资源的其它进程都将被挂起,一旦该资源得到释放,系统才允许其它进程访问该资源。信号灯通常配对使用,以便实现资源的加锁和解锁。 ---- 进程间通信的实现技术的特点是:操作系统提供实现机制和编程接口,由用户在程序中实现,保证进程间可以进行快速的信息交换和大量数据的共享。但是,上述方式主要适合在同一台计算机系统内部的进程之间的通信。 3 应用程序间的通信及其实现技术 ---- 同进程之间的相互制约一样,不同的应用程序之间也存在竞争和协作的关系。UNIX操作系统也提供一些可用于应用程序之间实现数据共享与信息交换的编程接口,程序员可以通过自己编程来实现。如远程过程调用和基于TCP/IP协议的套接字(Socket)编程。但是,相对普通程序员来说,它们涉及的技术比较深,编程也比较复杂,实现起来困难较大。 ---- 于是,一种新的技术应运而生——通过将有关通信的细节完全掩盖在某个独立软件内部,即底层的通讯工作和相应的维护管理工作由该软件内部来实现,用户只需要将通信任务提交给该软件去完成,而不必理会它的具体工作过程——这就是所谓的中间件技术。 ---- 我们在这里分别讨论这三种常用的应用程序间通信的实现技术——远程过程调用、会话编程技术和MQSeries消息队列技术。其中远程过程调用和会话编程属于比较低级的方式,程序员参与的程度较深,而MQSeries消息队列则属于比较高级的方式,即中间件方式,程序员参与的程度较浅。 ---- 4.1 远程过程调用(RPC)
-
深入理解 TypeScript 的高级类型及其应用方法