当前位置: 首页 > 工具软件 > OpenLaszlo > 使用案例 >

OpenLaszlo

夏侯野
2023-12-01
第一章  OpenLaszlo框架
  OpenLaszlo是一个平台,它面对的是丰富的Internet应用,非常容易展开.OpenLaszlo系统框架把C/S设计
的能量和可用性与管理优势和Web应用的有效性结合起来.
1.发展模式
OpenLaszlo应用程序在Web上被人们接受是因为如下的原因:
Proxied(代理)  OpenLaszlo服务器在你的机器上运行,编译源代码并把将要执行的二进制结果发送到客户端机器上.
Solo   你用OpenLaszlo编辑器预编译程序,并使这些二进制代码可以在你服务器上得到,当它在客户端被执行的时候,应用程序直接联系其他服务器,不用由OpenLaszlo服务器来做,这被称作SeverLess或SOLO
以后的章节解释Proxied和Solo的细节上的不同。
Proxied应用程序可以做许多Solo做不了的事情,但是在应用时有更多的困难,许多时候展开慢。
SOlo应用程序展开快,有时表现很好。
许多请况下我们不需要决定用那种模式直到他们正要准备应用之前,默认的选择通常是nonproxied。在阅读下面的讨论时,注意什么时候静态展开程序,Openlaszlo服务器的实时能可能达不到。
客户/服务:大纲
OpenLaszlo服务是一个Java程序,运行在J2EE容器中.OpenLaszlo服务器可能与后台服务器和数据源用不同的协议相连.用LZX写的OpenLaszlo程序用OpenLaszlo服务器编译,成为字节码的形式运行在客户端的Web浏览器上.这是前台.通常支持实时环境,Flash5或更好的版本连贯可靠地运行在不同的操作系统上,包括windows,pocket pc,mac os,linux 和 solaris和一些移动电话平台.OpenLaszlo服务器输出的二进制代码是SWF文件格式,符合Macromedia flash play标准。OpenLaszlo体系内没有绑定在Flash上,尽管如此,今后,当OpenLaszlo被广泛应用时,OpenLaszlo将会支持其他的实时客户端。
在OpenLaszlo上下文中,客户是用户的Web浏览器上运行的LZX应用程序,服务器是OpenLaszlo服务器。Lzx客户端和OpenLaszlo服务器通过HtTP联系,OpenLaszlo服务器发送二进制代码,LZX发送XML。
图像1
3。laszlo服务器结构
OpenLaszlo服务器在一个标准J2ee应用程序服务器上或运行JRE3.1的Javaservlet容器中运行,OpenLaszlo程序运行在支持这些服务产品的任意操作系统上,支持Windows,......
OpenLaszlo服务器由五个主要的子系统组成:
接口编译器
媒体代码转换机
数据管理器
强壮的连接管理
高速缓存
图像1.2
3.1接口编译器
接口编译器由Lzx tag编译器和Script编译器组成。接口编译器激发了媒体编译器和数据管理器来编译与应用程序相关的媒体和数据源。
LZX tag和Script编译器将LZX应用程序描述标签和javascript解释成为可以执行的二进制代码,发送到客户端。这些代码被放入高速缓存中,从这里发送到客户端。依赖于这些应用程序如何被激发,以.swf html文件格式传送。
媒体代码转换器把所有类型的媒体文件转化成一个单一格式,它可以被OpenLaszlo目标客户端翻译.这使得OpenLaszlo应用程序可以播放支持的文件格式.
媒体代码转换器自动转换如下的媒体格式:Jpeg,gif,PNG,mp3,TrueType,swf.
3.2数据管理器
数据管理器包含在一个数据编译器里,把所有的数据转化到一个压缩的二进制格式文件中,可以由OpenLaszlo读出.OpenLaszlo应用程序可以通过数据库,XMLweb服务器和基于文件和可执行程序的Web服务器.
3.3持续连接管理器
持续连接管理器保证了请求OpenLasizlo发出消息的真实性和实时性.
注意:这个特征是暂时的,它在有限容量的环境中工作,但是对于低容量没有这个特征.请与Laszlo体系联系.
3.4高速缓存
高速缓存包含最近的编译的任何版本.当第一次OpenLaszlo应用程序被请求的时候,它被编译swf文件被发往客户端.一份copy被保存在服务器的casher中,随后的请求不用等待编译.
4.Laszlo客户结构
Laszlo的客户结构包含OpenLaszlo运行时间库,一个核心库编译成每一个OpenLaszlo应用程序,提供实时服务(比如一个时间控件),还有提供二维图像和声音播放.这些类库不依赖于Flashf服务或用到Flash对象模型.Flash播放器单独用于rendering引擎.
当应用程序运行时,尽管它现在没有做什么事情,但是它维持着和服务器的一个连接,所有运行LZX应用程序的容器实际可以被下载.
OpenLaszlo实时库有四个组成部分,事件体系,数据包装,规划体系,和一些应用程序服务.
4.1事件体系
事件体系可以识别并处理应用程序事件,比如用户鼠标点击,服务数据入栈等等.这个组件允许标准客户端基于事件的程序,相对于传统的Web程序,OpenLaszlo应用程序允许客户端排序,处理,验证动态显示的方法减少主服务器的处理负荷.
4.2数据包装
数据包装作为数据流通向导,接受从OpenLaszlo服务器传过来网络数据流,并绑定数据到相应的可视显示元素,比如文本框,窗口,菜单项.
4.3规划体系
规划体系提供OpenLaszlo应用程序...,这个组件可以使你用最小的程序建立动态程序接口,这使得你安放接口的不同的数接口元素,用灵活的算法,用连续的方式处理屏幕更新,与用户沟通应用程序状态的改变。
4.4Openlaszlo服务体系
OpenLaszlo包括对时间控件的支持,声音和模态对话框.
5.OpenLaszlo服务器代理OpenLaszlo应用程序的数据流
用储存在服务器上的OpenLaszlo应用程序的例子是Weather.lzx. 下面的图表暗示着应用程序如何被OpenLaszlo服务器执行。
从用户输入需求天气程序的URL开始,这个图表暗示数据流的顺序从客户端到服务器,合并XMLweb服务器的数据,把结果返回客户端。
在OpenLaszlo应用程序中,表示逻辑被分为事情逻辑和客户端上的局部执行逻辑。OpenLszlo服务器发送压缩的二进制数据到客户端,同Html格式和其他web服务程序相比减少了数据传输的数量。服务器和客户端上的高速缓存减少了不必要的代码转换和代码传输。
6。安全模型
OpenLaszlo应用程序平台支持SSL安全模型。数据在通过INternet传输过程中被SSL密码加密,客户端机器上的OpenLaszlo应用程序不能通过客户端的环境写到局部文件系统中。
OpenLaszlo应用程序用到的Web服务和数据库也是安全的,用到了个人鉴定模型,这种机制避免了用OpenLaszlo服务器作为代理或后门进入不安全案的服务或得到数据。
7。对多种设备的平台支持。
OpenLaszlo体系被设计为支持多种设备。他的动态规划机制使得简单的这些特征的调整。这简化调整应用程序在不同型号显示器和设备上的应用。
所有的OpenLaszlo应用程序可视化用基于时间而不是基于框架。这样调整不同型号设备的处理速度的不同。接口转换制定要花费500毫秒,不管框架显示的数量,程序要花费500毫秒,快得处理器处理更多的框架,但是和转换有相同的周期。
8.易实现
OpenLaszlo提供部分对Microsoft动态实现的支持。用ACtive Accessiblity和如下的设计实践,开发者可以使应用程序运行在Windows上,对许多视觉,听觉行动障碍者更容易接受。这种支持需要客户端机器上的三方软件。
第二章语言初步
Lzx是一种面向对象,基于tag的语言,用XML和JavaScript语法建立有多个Internet应用程序的表示层。这些程序被OpenLaszlo编译器编译。它们可以被展开为静止程序,或者他们被保存在OpenLaszlo服务器上。语言的说明书包括一些XML标签,和一些JavaScript应用程序接口。
LZX语言被设计为有熟悉的语法和命名规则,所以有经验的Web设计这会发现它容易学并且容易集成到他们的程序环境中。同时Lzx包含新的概念和容量这使得web应用程序比其他技术更流畅更容易响应用户的需要。
Lzx程序运行在一个可视的称作canvas的东西上,它是一些Screen real estate.在canvas上,视图的黑盒子相互作用.这些视图可以逻辑上和真实地联系在一起,有许多可以变程的属性,包括大小,位置,背景颜色,透明度,clickability,可伸展性等等.视图可以被用来储存资源,比方说图像和影视,并且动态限制与XML格式化数据.视图的这些特征可以被设定成函数,任何视图的特征可以是随时间改变的.
LZX视图在许多方面同其他的视图是一样的.但是他的数据绑定属性限制和灵活性是与其他技术不同的.
LZX程序包含声明和程序结构,并且遵从许多语言命名习惯。用LZX写的程序第一眼看上去同嵌入Javascript的动态HTML程序差不多。LZX程序同嵌入Javascript的动态HTML程序是不同的,相反LZX是在服务器上编译并成为二进制文件被下载。
在laszlo服务器上,lzx程学在OpenLaszlo服务器上被编译并下载为Flash电影,并在flash播放器上被执行。Flash播放器是一个二进制代码的执行引擎,认识这一点十分重要。没有什么从Lzx上继承下来与flash结合的。特殊情况下,lzx不依赖于Flash对象模型。
同样,因为lzx程序在服务器上编译,在Lzx程序行的Javascipt不同于在传统web应用程序上。这些函数在lzx应用程序中是不相关的1。尽管语言设计是传统的,程序完全是新的。
这一章说了LZX的传统核心的方面,这是综述,不是指南,读完这一章后,你会能够知道如何学习这门语言。依赖于你的背景和经验,你会决定在你学习LZX之前,你需要得到更多的XML和面向对象程序的知识。从另一方面说,如果你发现这些知识你都会了,你可能想跳过这写,我们建议从Laszlo基础开始。
1.语法和语义综述
在LZX中,XML被用来建立JavaScript对象,Javascrip在Lzx程序中,来操作tags创造的对象.在大多数情况下,任何可以由tag完成的都可以由Javascritp完成.尽管如此他们并不等价,而且,一个技巧一种技术总是领先于另一种技术,学习LZX就是学习tags和APIs,掌握语言,学习如何运用.
LZX附属于XML和JavaScript语法.下一段提供了一个简介,说明两种LZX语法,JavaScript和XML语法是如何一起工作的.
1.1XML
XML,extensible Markup Language,是一种W3C编码标准。在学西LZX语言之前你需要熟悉XML语言,因为两个原因,一是大多数LZX函数是在XML集中实现的,Lzx程序是真正的XML文件,不是XML的LZX 程序是不会编译的。二,Lxl程序在XML的数据包中工作.
如果你明白Tags和属性如何在XML中表示,你会米阿柏根和节点的概念,知道如何嵌套工作,你可以开始LZX了.对于更多的信息你需要浏览W3C的网站.
另一个XML和Javascript的不同是在XML中,首字母小写,而在JavaScript中首字母大写,XML型名字是用在...中,因为兼容性需要小写.
1.1.1 xml and html
如果你有html的经验,但不会xml,你会发现他们之间的许多相似之处,这里有一些xml如何不同于html的地方。这些适用于所有的xml,他们关于文本的标记<p>,<i>,<b>同html标记一样.
大小写问题.<b>不同于<B>.
属性值要有引号用"或'.
空元素要有对应项结束.
1.1.2 namespaces
openlaszlo应用程序可以用一个namespace写出来
 <canvas xlmns="
http://www.laszlosystems.com/2003/05/lzx">...</canvas >
or without:
  <canvas>...</canvas>
如果没有namespace,编译器默认它到Lzx namespace.
1.2JavaScript
Javascript是一门最初在netscape的Brendan eich为了应用在netscape2.0浏览器上的语言.它慢慢的成功并广泛应用在其他浏览器中.保留了他的标准,ecma使这门语言标准化成为ECMAScript,并且现在控制了它的发展.尽管有许多细微的不同之处,但他们可以经常交替使用.Ecmascript是一门纯语言,Javascript是一门语言还是可以用能够在大多数浏览器上的联合库.在本书中,我们延续一般的用法,script表示用javascript写的代码.
为了写出有意义的代码,你需要熟悉javascript的一些地方
基本控制结构
对象模型
松散的数据类型
程序中namespaces的范围
你会发现一些Lzx的特点,例如,你熟悉Java但不熟悉javascript,你会需要知道语言上的关键的不同,如数据类型,对象模型,程序中namespaces的范围等等.
就像其他标记语言一样比如perl,python, javascript是一们松散类型的语言,你可以声明一个变量,不用定义它的类型.这样式的程序易读,但是这使得数据类型错误更常见且不容易探测.
javascript的面向对象特点不严格.他没有包或接口,比如它没有finalize classes.最后,局部和全局的变量的行为对于java程序来说是出乎意料的.
相反的,如果你是一个有经验的javascript程序元,你可能不得不忘掉一些假定,特别是对于一些库和函数的实用性.而且,lzx有更完整的面向对象程序模型,Lzx有类和继承性.
如果你没有java和javascript的经验,你可能想先熟悉javascript在你想深入lzx之前.
1.3  dot语法
lzx用dot语法指示出对象和成员之间的关系.考虑表达式
this.that
在javascript中,this表示一个对象,that表示它的属性或方法.现在考虑lzx代码段
<view name="beatles">
  <view name="george"/>
</view>
在这个例子中,george为
beatles.george
这里george是beatles的child
下面的文章中,lzx支持类和对象的属性方法.例如如下的代码是相等的:
JavaScript:
myview = new LzView;
myview.setAttribute (bgcolor, red);
XML tag:
<view name="myview" bgcolor="red"/>
 
并且两种情况下,myvies的背景颜色可以通过myview.bgcolor得到. dot习惯提供访问对象的方便的方法.
1.4 case 敏感性
lzx的case的敏感性依赖与你正在编译的对象.象3.1中,你可以编译成swf6, swf7, or swf8 结果.应用程序编译成swf6不是case敏感的.你不能只用case区别标志符.例如你定义一个局部变量date,你不能用javascript date 构造函数 new date().
swf7对象是默认的,应用程序编译成swf7和swf8是完全case敏感的.这意味着无论何时你用一个变量,他必须是定义在一个case中.
swf6中的应用程序不能运行在swf7中,反之亦然.
Regardless of the target, having variables that differ only in case is, depending on the target, at best confusing. Therefore it's good practice to avoid using names that are spelled the same but differ only in capitalization.
1.5 lzx文件定义类型和schema
XMLschema定义Lzx标签集并且可以用于配置有一个编辑器.文件定义类型也是可以用到的,尽管由于程序的目的没有需要知道.
LZXschema在openlaszlo编译其中用到保证lzx程序格式正确.例如,schema确定了什么view标签包含什么特征.如果你的程序包含有特征的没有用schema定义的view标签,它编译的时候会有一个警告.
Lzx允许你定义你自己的标签.

 类似资料:

相关阅读

相关文章

相关问答