??xml version="1.0" encoding="utf-8" standalone="yes"?> 安装Amfphp 1.9 beta 2 目前amfphp1.9的最新版是amfphp1.9 beta2Q可以到 http://www.5etdemi.com/uploads/amfphp-1.9.beta.20070126.zip下蝲。将其解压羃到硬盘,拯到apache的web目录下。键?a href="http://localhost:8080/amfphp/gateway.php">http://localhost:8080/amfphp/gateway.phpQ会出现amfphp|关的一个说明文件。AMFPHP基本的安装已l完成?/p>
四、安装AMF扩展 最新版的AMFPHP加入了一个AMF扩展Q它是用C写了一个AMF协议的解码和~码器,执行效率大大提升。尤其是大的数据源的时候,用php~码可能会超时而不能完成的操作Q用AMF扩展可以完成?安装比较易: 1. 下蝲 ?a >http://www.teslacore.it/projects/amfext/amfext-0.8.7a-bin.zip下蝲Q将php_amf.dll解压~到PHP根\径下\ext中?/p>
2. 配置 打开php.iniQ加上下面这一行:extension=php_amf.dll 我们不需要对AMFPHP 本n做Q何修Ҏ者配|。系l会自动监测那个扩展是否存在Q存在就会自动应用,否则׃使用PHP的解码和~码?/p>
好了Q将其web׃nQ别名ؓflashservices。支持Amfphp的Web应用配|好了。我们只需要将写好q程服务cL到Amfphp根目录\services中就可以在Flash和Flex中访问了?/p>
五、本地化讄 因ؓPHP默认的编码语a是ISO-8859-1Q要使前面配|的Web应用支持体中文,最好的Ҏ是打开Amfphp根\径下的gateway.phpQ将 $gateway->setCharsetHandler("utf8_decode", "ISO-8859-1", "ISO-8859-1");修改?font color="#993300">$gateway->setCharsetHandler("iconv", "GBK", "GBK");卛_。要解决MySQL中的中文q问题Q请?font color="#993300">mysql_query("set names 'gbk'");?/p>
然后在Q何地方可以调用它Q?br />
Rich Internet Application (RIA) 出?HTML 提供的传l用L?(UI) 控g的标准有限集合,比如文本框、复选框或单选按钮。RIA 为用h供了丰富得多的控仉合,以及一U更加高U的服务器交互机制。?RIAQ当从浏览器提交数据Ӟ用户不必h面Q他们可以仅h面的一部分Q具有更好的错误处理Q等{?/p>
本文内容包括Q?
术语 “Rich Internet Application” 已经出现几年了,但该概念q被UCؓQ?
Internet 是信息的巨大来源Q许多技术在努力以高U和用户友好的方式改q?Web 上的信息传递和存储性能。在大多?Web 应用E序中,大量处理发生在服务器端,只有用户交互发生在客h端。从而服务器承担了沉重的数据和处理负蝲Q以及网l通信中不断增加的依赖性?/p>
传统的基于客h-服务器的架构h高的灉|性和丰富性,但随着 Web 的成长而日渐消亡。一个原因是~Z客户机应用程序的一致性和标准化。现在,勿庸|疑Q浏览器是已l被Z普遍接受?Web 工具。但是,它缺乏智能处理。所以责d于可以交付更丰富的用户体验ƈ能在客户端进行简单处理的客户机应用程序。RIA 提供了设计更好、更快、更吸引人ƈ更无限可用的用户体验的机?—?全部在浏览器中实现?/p>
致力?Web ?internet UI 层的开发h员通常?UI 层上q行试验Q尝试可以在最外部支持下有效工作的各U?RIA 工具。但是,在多数情况下Q浏览器需要一些支持以使插件、扩展或下蝲在浏览器内部无缝工作?/p>
本文讨论有助于ؓ业务案例定最?RIA 选择的工具和参数。本文不可能讨论 RIA 的所有因素,但我重点介l您在评?RIA 技术时审核的一些重要特性? 评估 RIA 技术时Q需要考虑下列因素Q?/p>
h面的一块而不是整个页面有非常显著的好处,因ؓ它直接依赖于|络量。刷C块得应用程序更快、更可用q用户h更好的视觉体验。它q有助于更好地管理错误?/p>
假设用户在网上执行一个操作或W一个Q务,q且数据在后台提交给服务器。然后用户在同一面上l执行另一个Q务。同Ӟ来自W一个Q务的反馈已经q回q更新同一面的某个部分。因此,如果q样设计|页Q则会工作和Q务更有效率?/p>
本节讨论当前 UI 技术提供的一些不同选项?/p>
Laszlo 是领先的开放源码^収ͼ用于?Web 中?Flash 来开发和交付 RIA。Flash 播放器最初具有一个小插g以在览器中q行 Flash 文g。因为其高可靠性和兼容性,它被扩展用于创徏闪烁的动d片。后来的版本合ƈ了一些重要的脚本兼容性、与服务器的数据交换QFlash 6 d了双向音频和视频通信?/p>
Laszlo 已经扩展了该丰富性,使用脚本语言来生?Flash q交付给览器。它提供了一个用于构?RIA 的开发源?XML 本地q_?/p>
它只需要在M览器上安装 Flash 5.x+。脚本以一U叫?LZX 的基?XML 的语a~写。LZX 是一U面向对象的Z标记的语aQ?XML ?JavaScript 语法创徏动态生成的 Flash 文g。服务器上的 LZX ~译器编?LZX 文gq将 Flash 发送到览器中。实际的数据交换是以 XML 形式q行的,LZX 控g使用 XPath 来表C?XML。事件也很容易与控gl定。每个控件定义一l可以从父事件承事件的事g?a >清单 1 中的CZ展示了如何用事件?/p>
您将发现 Laszlo 易于学习、开发新lg、组件化q与M Web 应用E序集成。与其他 RIA 工具相比Q它h丰富的组件库?/p>
LZX 能够?HTTP ?Web 服务使用 SOAP ?RPC 协议在后台请求服务器Q而无需h面。插件已l就l,可以Q?Web 应用E序文g?Laszlo 库集成。当前,Z Eclipse ?IDE 可供开发用。还有一些工具可用于在客L?LZX 中进行调试。有的是,它们q提供了 Lzunit 框架以用于测?Laszlo 应用E序?/p>
最q,Laszlo 宣布了支持用相同的现有框架应用程序以 DHTML 交付l浏览器。这使您可以选择配置时希望将应用E序交付?DHTML q是 Flash。Laszlo q扩展了?Ajax C和多个设备交付的支持?/p>
?1 展示?Laszlo ?Dojo 的示例?/p>
XML 用户界面语言 (XUL) ?Mozilla 的基?XML 的跨q_语言Q用于描q应用程序的用户界面。它提供了可用于面中的现成lg库。目前,它仅应用于基?Gecko 的浏览器中,比如 Mozilla Firefox ?Netscape 6 以上版本?/p>
XUL 使用Z XML 的标记语a描述用户界面控g。它提供了各U流行的?Internet 控gQ比如菜单、选项卡、树和弹单。XUL 使用文档对象模型 (DOM) 存储节点树。加载了所?XUL 文g之后QXUL 所有标记解析ƈ转换为层ơ文档结构的节点。然后可以用此 DOM l构、DOM l构的方法以?XUL 函数提供的其他方法来查ƈ修改数据。您始终可以?JavaScript 讉Kq操?DOMQƈ使之像典型的 HTML 控g一h于处理。每个控件和每个节点都具有多个属性来定义其外观和l构?/p>
从远E位|访问时Q浏览器像处?HTML 或其他浏览器内容一样处?XUL 文g。但是,当它们作为扩展而本地安装在?chrome pȝ的浏览器中时Q条目将收到讉Kpȝ和书{Ҏ权限。在q种情况下,它可以执行其他的Ҏ操作?/p>
Mozilla 览器本w也是一lY件包Q其中包?XUL 文g、JavaScript 和样式表Q但它是相当大的而且非常复杂的扩展?/p>
XUL 使用 eXtensible Bindings Language (XBL) q行l定。每个控件可以?Mozilla ?XBL 被绑定。XUL 使用 RDF 格式Q可用于存储资源。可以用其他格式的数据Qƈ从中创徏 RDF 数据Q该数据绑定到 XUL 格式?/p>
因ؓ XUL cM?XML 文gQ所以可以?IDE 的Q何文本编辑器?XML ~辑器。因为相同的底层代码处理所?XUL 文g、HTML ?SVGQ所以可以?CSS 属性设|?XUL 文g的样式。它对定位具有内|支持,因ؓ所有文本内容在览器中是保持分ȝ?/p>
皮肤 ?Mozilla 中由 CSS 文gl成Q定义浏览器的用L面。可以ؓ不同的外观修改和创徏皮肤Q而无需更改代码。它cM于通过d功能来扩展浏览器 API 的功能?/p>
如果?Mozilla Firefox 中运?清单 2 中的文gQ它呈C个文本框和按钮?/p>
XForms 1.0 提供了一U新的用于联Z互的q_独立标记语言。W3C 已经出现了用于实?XForms 的规范,而且 XForm 被认为是 HTML 形式的任者?/p>
XForms 独立于表C备。无需对传l浏览器、PDA Ud电话、语a览器、甚至一些更奇怪的新兴客户机(比如 instant messengerQ进行Q何更改,可以传?XForms。这使得 XForms 成ؓ更吸?RIA 的工兗?/p>
?XForms 中,实际数据QXML 表单定义Q与表单表示分离。这U设备独立的 XML 表单定义叫做 XForms 模型Q可以用于许多标准的或专用的用户界面?/p>
XForms 用户界面提供了一l标准的可视控gQ旨在于替换当今?XHTML 表单控g。它们可用于 XHTML SVG 或其他组、语a览器组中,q可以独立开?XForms 的用L面组件。XForms 模型被引用在每个 XForms 控g中以呈现数据。它遵@ XPath 以引?XML 中的元素。提交数据时Q它只能提交已填充的 XML 数据模型?/p>
XForms 使用 XML 事g来处理事件和动作。XML 事g指定事g、观察者和处理E序。正?清单 3 所C, 可以?XForms ?AJAX 集成。当前,?W3C 中,可以扑ֈ 20 多个 XForms CZ实现。许多供应商Q其中包?IBMQ已l开发了 XML ?XForms 引擎Q参?参考资?/a> 中的 XML Forms PackageQ。Mozilla 已经宣布?Mozilla q行的所有^C支持 XForms。要查看 XForms 实现的优UCZQ请参阅 参考资?/a>?/p>
清单 3 展示了一个简单的 XForms CZQ显CZ一个用 FormFaces™ 实现呈现的文本框和按钮?/p>
Dojo 是用 JavaScrip ~写的开放源?DHTML 工具包。Dojo Toolkit 提供了一l核心库Q和一l丰富的不同的Y件包库,每个库提供特定的函数。Dojo 提供较低U的 API 来编写可UL?JavaScript q简化复杂的脚本。可以很Ҏ很快地原型化交互部件和动画转换。它提供了事件系l、I/O 软g包和一般语a增强的库。可以用 Dojo ~写脚本QƈҎ您的需要包括Q意多个可用的 API?/p>
Dojo q提供了一l可直接用于M应用E序中的部件库。可以用其中一些核心小部g作ؓ UI 控gQ比如菜单小部g、选项卡集、树部件等{。还有一般函敎ͼ比如布局部件、日期选择器、SVG 部件等{?/p>
Dojo Z单个标记语言构徏Q提供了声明和用响?DHTML 界面lg的简单方法?a >清单 4 展示了一个简单的 Dojo lgCZQ它?HTML 面中一个面向用LҎ按钮?/p>
Dojo 工具包还包括一些调试选项。AJAX Toolkit Framework (ATF) 可用作功能强大的 IDE。这?IBM ?Emerging technology Toolkit (ETTK) 的一部分Q是一l特D的新兴技术。ATF 主要Z Eclipse Web 工具目Q允许支?DOM 览、JavaScript 调试{等?/p>
最q,Dojo Foundation 宣布了与 Laszlo 的合作协议。按照该协议Q您可以?Laszlo 的开放源码项目中使用 Dojo Toolkit。同PLaszlo 将库A献给 Dojo FoundationQ从而促q开放源码社区的发展?/p>
Macromedia Flex 是另一U基?Flash 的用L面。它提供位于应用服务器顶层的 Flex 表示服务器,q从该服务器动态生?Flash 文gQ然后交付给览器。这?Flash 文g在浏览器?Flash 播放器内部执行,q允许用户交互、执行操作、甚至生?SOAP、HTTP ?AMF h以连接回服务器?/p>
布局?UI lg在一U基?XML 的语a MXML 中定义。Flex 为可视组件、容器以及远E服务对象和数据模型提供了丰富的 MXML 扩展cR它q与控gq行数据l定Qƈ讉K服务器端数据?/p>
ECMA 脚本语言 (ActionScript 2) 嵌入?MXML 中以处理事g、系l事件或构造复杂的数据模型。这是一U面向对象的语言Q类g JavaScript ?ECME 脚本。与 XForms 一PFlex 保持数据模型、数据表C、数据验证器和数据服务分(cM?MVC 样式Q?/p>
到达 MXML 的所有请求都通过 Flex ~译器进行处理,该编译器~译 MXML q生?SWFQ然后将光速缓存,直到它被修改q最l交付给览器ؓ止?/p>
M XML ~辑器都可用于编?MXML 脚本Q但 Macromedia q提供了一个特D的 IDE q行 Flex 应用E序开发,叫做 Flex Builder 1.5。它的优Ҏ?Flex 服务器集成。它q提供了一些组Ӟ允许q接服务器、执行正常的 HTTP 调用、连接远E?Java™ 对象q从览器本w与 Web 服务交互。它可以与现有的 J2EE ?.NET 应用E序模型集成?/p>
清单 5 展示?Macromedia Flex 代码的一个示例?/p>
Macromedia Flex 看v来类g Laszlo。二者都是丰富的功能强大的基?Flash 的应用程序。Laszlo 位于 Flash 引擎外,所以性能可能有所Ơ缺Q但它具有其他优炏V?/p>
下表比较了上文讨的五U技术以?AltioliveQ一U丰富的企业应用E序Q?/p>
我们已经讨论了五U技术,当然q有其他一些技术。许多公怋用各U技术提供了非常特别?RIA 原型。尽一一讨论q些技术超Z本文范围Q但下面q些技术值得一看:
本文介绍?RIAQ讨Z当前?UI 技术,q推荐了其他技术。我希望工具比较帮助您Ҏ需要作Z个正的选择。每U技术都有不同的优点Q从而基于您的需要ؓ开发h员提供了丰富的控仉合?/p>
本文讨论的技术ؓ用户带来一些新奇的东西Qƈ提供了更丰富的用户体验。您现在可以跨越览器ƈ呈现l?PDA、跨q_的移动设备,q用音频、视频、图像和动画来丰富用户体验。RIA 几乎包含?XMLQ因?XML 无疑是优胜者?/p>
来Q我预计 RIA 会?Web UI 转换C一U别中扮演重要的角色Qƈ帮助准备支持 Web 2.0?/p>
1、AMF3支持Q包含了RemoteObjectQ你可以情用在Flex2上?br />
2、JSON(Javascrīpt Object Notation,轻量U的数据交换格式)支持Q附加到gateway.phpQ现在json.php你更好的在Flash中用自qJSON服务。这里有两个例子QMochiKit ?Spry。XML-RPC 同样被支持?br />
3、一个新的浏览器。值得一提的是例EMochiTest同样是可以用在JSON模式的例E。所以你可以自己证实它的可以同时运行在AMP和JSON模式下?br />
4?this->methodTable的最后?从现在开始是可以被忽略的。所有的Methods都可以间接的使用默认倹{?/p>
<?php
class Hello{
function sayHello(){
return "Hello World";
}
}
?>
后台代码很简单,用过1.0版本的h可能发现q里没有Ҏ表了Q我觉得q个改进使得业务Ҏ和框架解耦了是个非常好的改进Q,Z单这里不讲私有gateway.php配置直接调用公有的gateway.php,Hello.phpUd到amfphp\services下面Q这h务器端就完成了?br />
下面是客L的编?
无意中在|上发现了一个很好封装flash.net.ResponderQ?flash.net.NetConnection q两个类的代码这里公布给大家一起学习一?br />
/*
Remotingc?br />
负责FLASH与数据库交互
*/
package {
import flash.net.Responder;
import flash.net.NetConnection;
public class Remoting extends NetConnection {
/*
构?br />
@param gatewayURL remoting|关地址
@param amfType 使用AMF3或AMF0
*/
public function Remoting(gatewayURL:String,amfType:uint) {
super();
this.objectEncoding=amfType;
this.connect(gatewayURL);
}
//##########################################################################
//
//Ҏ
//
//##########################################################################
/*
* q程q回函数
* @param remoteMethod:q程c?Ҏ名paramq程Ҏ所需要的参数onResultFun:q回数据所调用的方法句?onFaultFun同理.
*
*/
public function respond(remoteMethod:String,onResultFun:*,onFaultFun:*,... param):void {
var parameters:Array=param;
if (param.length > 0) {
parameters.unshift(remoteMethod,new Responder(onResultFun,onFaultFun));
this.call.apply(this,parameters);
} else {
this.call(remoteMethod,new Responder(onResultFun,onFaultFun));
}
}
}
}
var remote:Remoting;
remote=new Remoting("http://localhost/remotinggame/gateway.aspx",0);
remote.respond(remotingҎ?onRuslt,onFault,参数1Q参?....);
function onRuslt(re:*):void{
trace(" onRuslt:"+re);
}
function onFault(fe:*):void{
trace(" onFault:"+fe.code);
}
下面用上面封装的cL实现HELLOWORLD
package {
import flash.display.Sprite;
public class Hello extends Sprite{
private var remoting:Remoting;
public function Hello (){
init();
}
private function init():void{
remoting=new Remoting("http://localhost:8080/amfphp/gateway.php",3);
remoting.respond("Hello.sayHello",onGetData_Ruslt,onGetData_Fault);
}
private function onGetData_Ruslt(re:*):void{
trace(re);
}
private function onGetData_Fault(fe:*):void{
for(var what in fe){
trace(what+" fe:"+fe[what]);
}
}
}
}
]]>
什么是 XPathQ?/strong>
XML Path Language ?W3C 推荐的语aQ设计用于寻址 XML 文档中的信息?a >XPath 的主要目的在于导?XML 文档中的M节点和属性?/td>
清单 1. CZ simplelaszlo.lzx
<canvas width="500" height="80">
<view>
<text align="center" valign="middle">Hello, World!</text>
<button >Update
<method event="onclick">
Debug.write("Button pressed");
</met>
</button>
</view>
</canvas>
?1. ?Laszlo ?Dojo 创徏?RIA 囄
清单 2. CZ simplexul.xul
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="example-window" title="Example 2.4.1"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<label control="label" value="Enter some text"/>
<textbox id="textid"/>
<button id="yes" label="Yes"/>
</window>
XML 事g
XML 事g 是一U?XML 语言Q能够一致地事件监听器和关联的事g处理E序?DOM 事g集成。当事g发生Ӟ它被通过文档树\径分配给元素Q目标)Qƈ可以再次传递回树中。观察者可以响应\径中的事件?/td>
DOMActivate
是事Ӟ消息元素是处理程序,父触发器是观察者?/p>
清单 3. 昄?FormFaces 实现呈现的文本框和按钮的 XForm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:form=http://www.w3.org/2002/xforms
xmlns:ev="http://www.w3.org/2001/xml-events" xml:lang="en">
<head>
<title>Simple example</title>
<link rel="stylesheet" type="text/css" href="xforms.css" />
<script type="text/javascript" src="../../formfaces.js"></script>
<form:model>
<form:instance>
<data xmlns="">
<greeting>Hi there!</greeting>
</data>
</form:instance>
</form:model>
</head>
<body>
<form:input ref="greeting" incremental="true">
<form:label>Greeting:</form:label>
</form:input>
<form:trigger>
<form:label>Trigger</form:label>
<form:message level="modal" ev:event="DOMActivate">You clicked
button</form:message>
</form:trigger>
</body>
</html>
清单 4. CZ dojosample.html
<button dojoType="Button2" widgetId="helloButton">Hello World!</button>
You need to include the Dojo widgets library that is required in your HTML page.
<script type="text/javascript">
dojo.require("dojo.widget.*");
dojo.require("dojo.widget.Button2");
</script>
清单 5. Macromedia Flex 代码CZ
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://macromedia.com/2003/mxml">
<mx:Form label="Employee Information">
<mx:FormItem label="First Name">
<mx:TextInput id="firstName" />
</mx:FormItem>
</mx:FormItem>
</mx:Form>
<!-- The myEmployee data model. -->
<mx:Model id="myEmployee">
<name>
<first />
<last />
</name>
<department />
<email />
</mx:Model>
mx:Binding source="firstName.text" destination="myEmployee.name.first" />
</mx:Application>
?1. 工具比较
技?/th>
览器技?/th>
脚本
丰富?/th>
亮点
Laszlo
Flash、XML
LZX 文g+JavaScript
?/td>
易于学习Q丰?/td>
Mozilla XUL
XUL 语言
XUL 文g+JavaScript
?/td>
依赖览器,功能强大
XForms
Xform
取决于实?/td>
限于一定程?/td>
讑֤中立Q遵?W3C
Dojo
JavaScript
HTML+JavaScript
限于一定程?/td>
Z JavaScript。正在成长,可适应?/td>
Macromedia Flex
Flash、XML
MXML 文g
?/td>
非开放源码。Macromedia 的专有工兗?/td>
Altiolive
Applet、XML
Java
限于一定程?/td>
http://www.altio.com/
]]>
引入?packageQ包Q??namespaceQ命名空_ 两个概念。其?package 用来理cd义,防止命名冲突Q?namespace 则用来控制程序属性方法的讉K?/p>
新增内置cd int (32比特整数)QuintQ非?2比特整数Q?用来提速整数运;
新增 * cd标识Q用来标识类型不定的变量,通常在运行时变量cd无法定时用。在 AS2 中这U情况下需要用 Object 赖作为类型表识;
新增 is ?as 两个q算W来q行cd查。其?is 代替 AS2 中的 instanceof 来查询类实例的承关p,?as 则是用来q行不抛错误的类型{换?
新增 in q算W来查询某实例的属性或其prototype中是否存在指定名U的属性?
新增 for each 语句来@环操?Array ?Object实例?
新增 const 语句来声明常量?
新增 Bound Method 概念。当一个对象的Ҏ被付值给另外一个函数变量时Q此函数变量指向的是一?Bound MethodQ以保证对象Ҏ的作用域仍然l持在声明此Ҏ的对象上。这相当?AS2 中的 mx.util.Delegate c,?AS3 中这个功能完全内|在语言中,不需要额外写代码?
AS3 的方法声明中允许为参数指定默认|实现可选参敎ͼ?
AS3 中方法如果声明返回|则必L返回?
AS2 中表C方法没有返回值的 Void 标识Q在 AS3 中变更ؓ void?
OOP斚w的增?/strong>
通过cd义而生成的实例Q在 AS3 中是属于 Sealed cdQ即其属性和Ҏ无法在运行时修改。这部分属性在 AS2 中是通过cȝ prototype 对象来存储,而在 AS3 中则通过被称?Trait 的概念对象存储管理,无法通过E序控制。这U处理方式一斚w减少了通过 prototype l承链查扑ֱ性方法所耗费的时_所有父cȝ实现Ҏ和属性都会被直接复制到对应的子类?Trait 中)Q另一斚w也减了内存占用量,因ؓ不用动态的l每一个实例创?hashtable 来存储变量。如果仍然希望?AS2 中类实例在运行时的动态特性,可以类声明?dynamic?/p>
API斚w的增?/strong>
新增 Display APIQ AS3 可以控制包括 Shape, Image, TextField, Sprite, MovieClip, Video, SimpleButton, Loader在内的大部分 DisplayList 渲染单位。这其中 Sprite cd以简单理解ؓ没有旉轴的 MovieClipQ适合用来作ؓlg{不需要时间u功能的子cȝ基础。而新版的 MovieClip 也比 AS2 多了对于 SceneQ场景)?LabelQ桢标签Q的E序控制。另外,渲染单位的创建和销毁通过联合 new 操作W以?addChild/removeChild {方法实玎ͼcM attachMovie 的旧Ҏ已被舍弃Q同时以后也无须d理深度倹{?
新增 DOM Event APIQ所?在DisplayList 上的渲染单位都支持全新的三段式事件播放机Ӟ?Stage v点自上而下的播报事件到 target 对象Q此q程UCؓ Capture PhaseQ,然后播报事gl?target 对象Q此q程UCؓ Target PhaseQ,最后在自下而上的播报事Ӟ此过E称?Bubbling PhaseQ?
新增内置?Regular Expressions Q正则表辑ּQ支持,?AS3 能够高效地创建、比较和修改字符Ԍ以及q速地分析大量文本和数据以搜烦、移除和替换文本模式?
新增 ECMAScript for XML (E4X) 支持?E4X ?AS3 中内|的 XML 处理语法。在 AS3 ?XML 成ؓ内置cdQ而之前的 AS2 版本 XML 的处?api 转移?flash.xml.* 包中Q以保持向下兼容?
新增 Socket c,允许d和写入二q制数据Q通过 AS 来解析底层网l协议(比如 POP3, SMTP, IMAP, NNTP {)成ؓ可能Q Flash Player 可以q接邮g服务器和新闻l?
虽然在很多方面,Silverlight表现Z?/span>Flash更佳的性能Q例如与AJAXl合更紧密,更容易动态生成,Ҏ索引擎更友好Q开?nobr>工具集成度更高,{等。本文作者还是从以下四个斚w列D?/span>Silverlight无法取代Flash的理由?/span>
技术潜?/strong>
对于一个专业开发者,在考虑选择哪门技术的时候,很重要的一个方面就是这门技术的
在短旉内,Silverlight会表现出强大的潜力。微软是一家资本雄厚的大公司,典型的微软模式就是,微Y会ؓSilverlight砸很多钱Q让Z怿q是一门值得学习的技术。我知道有许?/span>Flash开发者已l通过开?/span>Silverlight目赚取了可观的收入Q这些项目是?/span>Redmond直接或间接援助的?/span>Adobe在这个方面完全不能和微Y竞争。虽?/span>Adobe也有雄厚的资金,但还q比不上微Y那样富到可以C一个小国家?/span>
从长q来看,Z?/span>Silverlight开发中学到的基本知识也不会昙花一现。但是,如果你真的对开发跨q_交互?/span>WEB感兴,Silverlight技术未来将会在很大E度上把你的
结Q?/span>Flash也许没有?/span>Silverlight淘金般的发展潜力Q但它是一门非常确立和成熟的技术(98%的安装基Q其?/span>85%以上?/span>Flash Player 9版本Q,它还会l扩大它的用范_q在相当长的旉内在开发交互式Web领域E_增长。当前微软在推动Silverlight发展斚w投入了大量的金钱Q但是在未来如果微Y不再象现在这样往里面研R的话Q?/span>Silverlight的前景就另h担忧了?/span>
q行?/strong>
大多数对q两门技术的讨论都集中在其虚拟机的性能上。很正常Q一个^台的成功性在很大E度上决定于它的性能。对?/span>SilverlightQ我q不是了解太多,但从现有资料看来Q当?/span>1.0beta VM基本上是SVG/WM接口。它q不支持构gQ?/span>AKA controlsQ,没有现成的语a解释器,也没有太多另人兴奋的亮点。而在新发布的α?/span>Silverlight 1.1中这些方面有了明昄改进。但?/span>Adobe在这斚wq是处于领先CQ成熟的跨^台开发体验,对目标市Z有更深入的理解?/span>
接口大小和实用性也是考察的重要因素?/span>Flash playerQ包括两个虚拟机、大量的功能E序Q只?/span>2MBQ功能残~Z全的Silverlight1.0 beta?/span>1.2MBQ?/span>Mac上是5.3MBQ。支持动态语aq行?#945;?/span>Silverlight 1.1扩大?/span>4.2MBQ?/span>Mac上是10.3MBQ,如果要浏?/span>Managed SilverLight的网?/span>,得下蝲q个Runtime,q对于储存空间拮据的手机pȝ来说,q是E嫌庞大些。我预计来q会更加庞大。接口大在几年前也许还不是什么大问题Q但它仍然会Ҏ受度有很大的影响。在另一个方面说来,与网l相q的电脑上已l有98%都安装了Flash player了,它能自动更新Q可以在Windows、Mac和Lunix上运行,是发布后升最q速的软g产品Q前提是用户接受新版本)?/span>
结Q如果微软在q些斚wl箋改进Q?/span>Silverlight会有非常大的潜力。不q的是,我看C们动作缓慢?/span>Adobe仍大规模的领先,在实用性和普及率方面?/span>
开发工?/strong>
我看q?/span>Expression suiteQ它l我留下了深d象,微Y对它做了很大的改善。他们从Adobe的成功中学习长处q改q了其缺炏V微软有许多开发实用开发工Ll验Q这在它们的Expression工具中就可以看出。在q方面,Adobeq没有太多创建开发工Ll验。微软正在对Expressionq行更新?/span>Adobe也在做着一件深q的事,是集成他们的开发工具创Z个凝聚性的
从另一个角度,微Yq没有开发设计工Ll验Q事实上他们对设计者还不够了解。他们的工具只能?/span>Windowsq_上用,q从一开始就切断了一半的设计者市场。在今年的微?/span>MIX大会上,一位参会者在会间询问LyndaQ?/span>Lynda.com站长Q,如果设计者们熟悉Expression后将如何转到Windowsq_上去。她回答说她自己是?/span>Mac用户Q但她不会{?/span>Windows上去。我?/span>Lynda的诚实鼓掌,我相信这也清楚的证实了微软要惌抵制者们改变原来的工具ƈ不是一件容易的事?/span>
结Q微软将会徏立更完善的开发工具集Qƈ提供更佳的集成工兗但是,他们事实上是不愿意支?/span>Macs的,他们q不能深入的理解创造性和设计者是他们的要実?/span>Adobe对创造的程有很深入的理解,它们对跨q_的支持性是微Y不能比敌的?/span>
未来势
虽然很容易被忽视Q但q是一个非帔R要的问题。ؓ什么微软会构?/span>SilverlightQ微软的长远意图是什么?现在主要猜测是用来抢占Flash的RIA应用市场Q但Ҏq去的观察,微Y的行动一直很E_Q我惌一ơ也不会例外?/span>
微Y因ؓ其经怼在一Ҏ术已被事实证明是成功后,再进入这个领域而臭名昭著,他们会扔q大量的金钱逐渐L杀竞争Q一旦Ş成垄断,技术的发展׃遇到很大的阻。微软也l常会因一时的怪念头而放弃对跨^台特性的支持。确实,他们提供的很多跨q_产品到最后都会因为某U冠冕堂皇的理由被抛弃或半途而废Q?/span>MAPI in Entourage, IE, VBScript in Office, Windows Media versioning and DRM, heck, 甚至HaloQ?/span>
Adobe也不是慈善家Q但他们已经证明自己的品能够成功的支持跨^台特性,即在交互式WEB面开发上真正意义上的竞争者ƈ不多Q但Adobe一直在对品进行改q?/span>Silverlight会迫使他们做的更好。D个例子,如果没有Silverlight的出玎ͼ我们能否如此快的?/span>Linux上看?/span>Flash player9也将会是个疑问?/span>
结Q如果消灭掉?/span>FlashQl追求跨q_Ҏ就不会是微软最佛_益的选择了,也很难保证持l对光新。做Z个长期的Mac用户Q我真的不能怿微Y的意图,但是看到?/span>Silverlight的压力下Adobe的持l改q也是一件另人高兴的事?/span>
l论Qȝ说来Q我怿Silverlight的潜力,其在短期内微Y砸进大量金钱的效果会比较明显。在不远的将来,微Y的开发工具也可能会更加健壮,比vAdobe提供的工h更高的集成度Q但是仅仅支?/span>Windowsq_的特性会让大量的开发者和设计者与Silverlight保持距离。我怿Silverlight接口会是一个合适的q行时程序,但它不会?/span>Flash player那样打包到用字节计算Q也决不会达到象Flash那样的安装普及率?/span>