Macromedia Flex

Macromedia Flex_7分词条

Macromedia FlexMacromedia Flex
Flex表示服务器满足了某些IT开发人员的需要。他们希望开发一种应用程序,这种程序既有桌面应用程序的响应性与丰富性,又具有Web传播范围广的特性 — 即富因特网应用程序。Flex表示服务器位于一个组织的N层应用模型的表示层,用运行在客户端的可执行代码对现有的HTML生成做了加强。Flex具有基于标准的、用户熟悉的编程方法及工作流,强大的类库可创建表示层,从而提供更有效、更真实的终端用户体验。

目录 [隐藏]

Macromedia Flex 简介

 

Macromedia FlexMacromedia Flex
Adobe Flex 2 提供企业级富Internet应用的表现层解决方案。Flex系列产品提供了基于标准的编程方法和运行时服务,用于开发和部署应用(将桌面的丰富与Web的无所不及相结合)的表现层:有了Flex,开发人员可利用自身技术和基础设施构建下一代web应用程序。可用来开发数据仪表板(dashboard)、电子商务和自助式服务应用程序,提升企业的经营绩效。如果您的公司开发要转销的软件,Flex有助于您为客户提供更佳的用户体验。

Macromedia Flex Macromedia Flex 标记语言简介(2)

 

Macromedia FlexMacromedia Flex

数据访问Macromedia Flex为面向服务器架构(SOA – service-oriented architecture)而开发。在这一模型中,应用通过与分散在不同地方的服务进行交互,来完成自己的任务。例如,如果创建一个在线旅行应用,你需要与不同的服务进行交互:全球旅馆预定服务,目的信息服务,天气服务等等。这些服务可能以不同的机制来提供,并且来自不同的地方。Flex使你能在客户端汇集信息,并提供三种不同的数据服务组件,以满足对服务提供者进行特定数据访问的需求:WebService组件,HTTPService组件(一般使用XML通过HTTP进行数据访问)以及RemoteObject组件。MXML允许你用相应的WebService, HTTPService, and RemoteObject标签来设置与服务的连接。

数据绑定在许多语言中,如何在用户界面控件中显示后台数据,是件令人头疼的事情,而且非常容易出错。收集用户在控件中输入的数

Macromedia FlexMacromedia Flex
据,并传给远程服务也常常是件乏味的事情。Flex的特色之一,就是提供了双向的数据绑定机制:你可以将用户界面控件绑定到服务调用的数据结果集上,反过来,也可以将服务的参数绑定到用户界面控件输入的值上。下面是一个简单的股票报价应用。例子使用了WebService标签来设置与XMMethods提供的股价web服务进行连接。这个例子阐明了Flex的双向绑定功能。getQuote方法的symbol输入参数被绑定到symbol TextInput组件上。quote标签被绑定到getQute方法的调用结果上。{symbol.text}{wsStock.getQuote.result} 图4.股价应用 实际上,Flex数据绑定机制比传统的重取/显示(retrieve/display)方式更胜一筹:在Flex应用中,你可以将任意对象的任意属性绑定到另一任意对象的任意属性值上。使用层级样式表CSS)Flex使用层级样式表标准来保证用户界面的一致性,并使应用更易于维护。就像在HTML中一样,你可以在应用中嵌入一个指向外部的样式表,或在特定的标记元素下将某种风格定义为其属性。样式表还允许定义字体。所需字体定义内嵌于应用的字节码中,即使用户的机器上没有这样的字体,也能被正确的渲染出来。下面是一个名为main.css的外部样式表。@font-face {src: url("LucidaSansRegular.ttf");font-family: mainFont;}.error {color: #FF0000;font-size: 12;}.title {font-family: mainFontBold;font-size: 18;}TextArea {backgroundColor: #EEF5EE;}特效复杂Internet应用常常被拿来和客户/服务器应用进行比较。因为它们提供了同一级别的用户体验。但是,容易忽视的区别是,两者的用户各具特点。使用客户/服务器应用的客户通常是备受折磨后,最终适应了他们需要面对的用户界面。而复杂Internet应用的客户通常是临时性的用户。在这样的条件下,一个不直观的用户界面将会丧失机会。适当的使用特效,如浮动提示和进度状态,有助于客户直观的了解当前内容。在MXML中,你可以通过设置动画达到这一目的。

Macromedia Flex 总结

 

Macromedia FlexMacromedia Flex
Flex语言包含了一个丰富的用户界面组件库,MXML(一种基于XML的标记语言)和ActionScript(基于ECMA 262的、强类型面向对象编程语言)。MXML用于排布用户界面和处理应用中其他方面的问题,而ActionScript用来处理用户交互逻辑。由于Flash平台的普及,Flex使开发者可以开发广泛的应用程序。开发者可以使用工业标准(如XML,CSS和SVC)和他们所熟悉的模式和范例来创建应用。Flex的分离协作方式和Macromedia公用组件模型也使得开发者和界面设计者能更好的进行协作,在可靠的、易于维护的架构上生产出在用户体验方面有突破性的产品。关于作者从1994-2000年,Christophe Coenraets 服务于Powersoft公司,该公司现在已被Sybase并购。他用Java工作始于1996年,并成为公司Java and Internet Application 部门的技术专员。Christophe后来加入Macromedia公司成为公司J2EE应用服务器JRun的技术专员。Christophe在这一职位上开始研究复杂Internet应用,着手将Flash前端与J2EE后端进行集成,Christophe目前是Macromedia的 new developer-centric Rich Internet Applications initiative的高级专员。过去的十年间,Christophe经常在全球范围的研讨会中发言。

Macromedia Flex Macromedia Flex 标记语言简介[1]

 

Macromedia FlexMacromedia Flex
Christophe CoenraetsMacromedia Flex 专员 Christophe[原作]http://www.macromedia.com/devnet/flex/articles/paradigm.html[翻译]samhoo(samhoophone@yahoo.com)[注]转载请保持全文完整Macromedia Flex(开发代号为Royale)是一个展现服务器,开发者可以用它来开发新一代的“复杂Internet应用”(RIAs - Rich Internet Applications)。复杂Internet应用融合了桌面应用的可用性和web应用的易于管理的优点。Flex是一个在J2EE应用服务器或servlet容器安装的展现服务器。它拥有丰富的用户界面组件、用于排布这些组件的基于XML的标记语言,以及可以处理用户交互的面向对象编程语言。这些技术的给我们带来的是:使用Flash播放器渲染复杂Internet应用,使用工业标准和开发者熟悉的方式进行开发。Flex开发与部署模要开发并部署这个应用,一般要经过以下步骤:1. 用你熟悉的IDE或Flex的“所见即所得”开发工具编写HelloWold.mxml文件。

2. 把该文件部署到应用服务器上。一般可以通过拷贝HelloWorld.mxml到某个web应用的目录下,或将HelloWorld.mxml作为应用的一部分打包到WAR文件中去。当一个用户首次请求HelloWorld.mxml的时候,服务器会将MXML代码编译为Flash字节码(一个SWF文件)。然后服务器将产生的SWF文件发往客户端,让Flash播放器执行。对同一个MXML文档的并发请求,服务器将跳过编译过程,直接返回相同的编译结果。如果你对JavaServer Pages比较熟悉,就会发现它们的模型非常相似。就像JSPs被编译为Java字节码(servlets)一样,MXML文件将被编译为Flash字节码。二者的主要不同在于:在Flex中,产生的字节码是在客户端执行的,而由JSP产生的Java字节码(servlet)是在服务器端执行的。通过Flex,你可以将复杂客户端应用无缝的集成到

Macromedia FlexMacromedia Flex
已有的商业逻辑中。使用MXML用户界面组件拥有丰富的用户组件是Flex的一大特色。除了传统的数据输入控件(Text InputTextArea,CheckBox,RadioButton,ComboBox等等),MXML还包括了一些高级组件,用于维护结构化数据(Tree 组件)和大数据集(DataGrid 组件)。为了清晰的组织数据及其处理过程,Flex还提供了导航组件(Tab,ViewStack,Accordion等等)。为了更易于组织用户界面,Flex容器还定义了布局管理策略,用于指明一个组件相对与另一个组件的位置。Flex组件库提供了大量的、可实现不同布局策略的容器。比如,在HBox中的组件将被水平排列,而在VBox中的组件会被垂直排列,而在Grid中组件将以行列的方式进行排列,就象HTML的table一样。View容器中没有定义任何布局管理策略,因此你可以用x,y坐标来指定组件的位置。下面给出一个在Flex环境下、具有三个面板的传统e-mail界面。HBox容器中的Tree是水平排列的,而VBox容器中的DataGrid和TextArea则是垂直排列的。编写ActionScript代码Flex语言是事件驱动的。MXML将事件作为标签的属性,你可以为它编写事件监听器。比如,Button组件有一个click属性,ComboBox,List和Tree组件有一个change属性,等等。对于简单的交互,可以在标签的事件属性上直接编写ActionScript语句。例如,在HelloWorld应用中,存在Button的click事件监听器中的ActionScripts语句,能把source TextInput 的内容拷贝到destination TextInput中。当逻辑更为复杂的时候,可以定义独立的ActionScript函数,然后在组件的事件监听器中调用。例如,你可以象下面一样,重写HelloWorld应用:
Macromedia FlexMacromedia Flex
function copy() {destination.text=source.text}创建一个MXML文件,实际上是创建了一个类。定义在标签中的ActionScript函数是该类的方法。你可以在MXML文件或独立的文件中定义ActionScript函数。选择哪种方法,取决你所在的组织,后一种方法可以对开发团队进行更好的分工。定义自己的组件在Flex中,你可以从头开始,或通过扩展Flex组件库中已有的组件,来创建自己的组件。创建组件就象创建一个应用一样:用MXML排布用户界面,用ActionScript编写用界面逻辑。下面的一个例子是,通过扩展VBox类来创建简单的信用卡选择组件。组件的名字就是源文件的名字。如,源文件的名字是CreditCardChooser.mxml,组件的名字就是CreditCardChooser,这样,这个标签名就可以用了。下面的例子就用上了刚才创建的CreditCardChoose组件。界面开发者还能在Macromedia Flash开发环境中创建复杂的可视化组件,并存为SWC文件。当然,也可以只用ActionScript定义来整个组件,这种方法一般用于定义应用中的非可视组件。你可能会为这样商业对象创建非可视组件——例如,包含客户端逻辑的购物车,或是应用中helper类。

Macromedia Flex Macromedia Flex Builder 2

 

Macromedia FlexMacromedia Flex

这个速学教程向你介绍项目在Macromedia Flex Builder 2中的概念和教你该如何创建项目。在Flex Builder中,全部Flex应用程序都被包含在项目里面。 在Flex Builder中创建Flex应用程序之前,必须创建项目。当你在Flex Builder中创建项目,一个主应用程序文件会跟隨被创建。你能增加另外的资源。如:自定義MXML组件文件,ActionScript文件,以及其他的资源来组成你的Flex应用程序。1.启动Flex Builder,从主菜单中选择File > New > Flex Project。新Flex项目向导出现。创建项目將會透过向导的步骤来指导你。2.因为你将会不用使用Flex服务器,选择No选项并点击Next。下一个屏幕要求你指定项目的名字和文件储存的位置。3.在Project Name中输入QuickStart。这个是项目的名称,当你创建一个新的项目后,Flex Builder会产生一个以你的项目名称为基础的Flex主应用程序文件

4.在Project Location中,确定路径为:X盤:\Documents and Settings\your_user_name\My Documents\Flex\QuickStartFlex Builder将会

Macromedia FlexMacromedia Flex

为你产生这一个文件夹。作为新项目的默认位置是我的文档文件夹中的Flex文件夹。5.确定Main Application File指定为QuickStart.mxml。当编译时这个选项决定项目中的那个MXML为主应用程序文件。6.确定Output Folder指定为bin。这个选项决定, Flex Builder将会把你编译的Flex应用程序放置在那里(SWF文件与HTML文件).默认时,Flex Builder将放置编译后的SWF文件到项目的bin文件夹中。7.点击Finish。Flex Builder创建一个新的项目与显示它在Navigator视图中。Flex项目向导自动地产生项目文件,输出文件夹(bin), Flex Builder将会把你编译的Flex应用程序放置在那里。还有主应用程序文件(QuickStart.mxml)。学习在Flex中基于约束的布局当用户重设置Flex应用程序窗口大小时,你想组件在你的布局中是聪明地自我调节大小时,基于约束的布局就能发挥它的作用。你将使用Canvas容器创建基于约束的布局。Canvas容器使组件的大小与位置更有弹性。

它附属你当Canvas容器重设置大小时自动伸缩与移动组件的能力。例如,如果当用户将应用程序窗口拖大,你想TextInput文件本框的宽度跟着伸长,

Macromedia FlexMacromedia Flex

你能固定文件本框与Canvas容器左边与右边的位置,那么文件本框的宽度将被窗口的宽度而设定。注意:在Flex中,所有的约束是相对于Canvas容器边缘设置的。不能相对于其它的控件而设置。创建基于约束的布局的第一个步骤是在Canvas容器中放置组件。在Flex的容器中,只有Canvas容器是支持绝对坐标。像Macromedia Flash的场景一样,你能拖放与放置组件到Canvas容器的任何位置。对于象素点的准确性来说,你能设置x与y轴。在这部分里,将插入与放置组件来组成一个简单的反馈表单。1.打开QuickStart项目,选择File > New > MXML Application,在File Name中输入Layout.mxml。2.在Navigator视图中右击Layout.mxml文件,选择Application Management > Set As Default Application,将它指定为默认被编译的文件。3.在设计视图中,从Components面板(Window > Show View > Components)中拖放一个Label与一个TextInput控件到Canvas容器里。4. 使用鼠标拖动Label与TextInputl控件肩并肩在Canvas容器3 分之1下的位置上(其实只要放到Canvas容器里就可以,下面会进行具体的调整)。5.在Flex属性面板中,展开General与Layout属性面板。设置General与Layout属性的选项出现。如果你看到的视图与上面的不一样,那请点击视图工具条上的View As Form按钮。

6.在Canvas容器上,选择Label控件与在Flex属性面板给Label设置以下属性: text: Emai x: 20 y: 607. 在Canvas容器上,选择TextInput控件与在Flex属性面板给TextInput设置以下属性: x: 90 y: 60 width: 3008. 在工具条上点击Code按钮,将视图转为代码视图。

Macromedia FlexMacromedia Flex
Layout.mxml文件将包含下面的MXML代码:程序代码: 9.在标签后面输入下面的代码来插入剩下的Flex控件:程序代码:你能通过工具条上点击Design按钮来预览已做好的布局。这个布局将如下图:10.保存文件。11.点击工具条上的Run按钮。浏览器自动打开并运行你的Flex应用程序。注意: 浏览器必须了安装Flash Player 8.5,Flex 2应用程序才能在浏览器中运行。12.拖动应用程序的窗口的边缘,使应用程序的窗口变大或变小。组件仍然保持与窗口的左与上边缘的绝对坐标位置,在重设置应用程序窗口大小时,他们不会伸长与缩小。例如:如果你将窗口缩小, Button控件将消失, TextInput与TextArea控件将被留下一部分。下一个步骤设置对控件有约束性的布局,当用户在重设置应用程序窗口大小时,他们会自动调整大小。定义约束的布局给组件在你的布局定位完后, 你将定义约束的布局,它能使组件跟随应用程序窗口自我调整大小。1.在设计视图,选择TextInput组件。2.在Flex属性面板,确定Layout类别已被展开。Layout类别包含设置固定的选项。3.定义约束的布局,在Layout类别中点击左边与右边的固定选框,并在左边文本框输入90,右边文文本框输入60。这是TextInput控件与Canvas容器的左边与右边保持的距离,如下:这两个固定选框, 跟随窗口固定TextInput控件的左右两边。在文本框中输入的数字是指定TextInput控件与Canvas容器保持的距离有多远(单位:像素(pixels))。这些约束在MXML代码里被表示如下:程序代码: 4.在Canvas容器中选择TextArea控件,在Flex属性面板中,选择所有的四个固定选框并输入与边缘保持的距离,如下: left: 90 right: 60 top: 90 bottom: 190extArea的Flex属性面板如下:5.在Canvas容器中选择TextArea控件,在Flex属性面板中,选上右边与下边的固定选框,并在右边文本框输入60,下边文本框输入150。6.保存文件,等待Flex Builder直到编译完成应用程序,再点击工具条上的Run按钮

Macromedia Flex Macromedia Flex 安装注册方法

 

Macromedia FlexMacromedia Flex
Flex是作为Java应用程序服务器的模块形式存在,用来解析MXML文件生成SWF文件.
试用版的Flex自带一个Java应用程序服务器(JRun4)先看看你的机器和系统达到安装Flex的要求了吗?
http://www.macromedia.com/software/flex/productinfo/systemreqs/再来看看Flex应用程序都能做写什么事情呢?
http://flexapps.macromedia.com/flex15/explorer/explorer.mxml我们开始安装了,直接选择Integrated JRun4/Macromedia Flex(整合JRun4/Flex)安装.装完后启动JRun4,打开浏览器输入下面地址就可以看到例子.http://localhost:8700/samples 试用版以两种模式运行:1,试用模式(只能使用60天,不限制功能和访问IP)试用模式过期后自动变成开发模式

2,开发模式(无限使用时间,但只允许5个IP访问)这两种模式编译生成的SWF文件都会在一天后失效.Flex试用版输入正确注册码后就变成正式版,也就没有了上面的那些限制.正式版的Flex安装好后安装目录下有三个WAR文件1:flex.war(核心模块)2:samples.war(例子)3:profiler.war(应用程序监视器,查看应用程序运行情况和检测瓶颈问题.)使用之前你要做的事情就是把他们放到JAVA应用程序服务器默认站点根目录下解开,然后重启服务器就可用了.可以使用Winzip解压,或者在命令提示符下输入:jar -vxf 要解压的文件.warJAVA应用程序服务器推荐使用ResinTOMCAT.官方给出支持的应用程序服务器列表如下:Macromedia JRun 4 Updater 2 IBM WebSphere Application Server 5 BEA WebLogic Server 7 or 8.1 Tomcat 4.1.29 or 5.0.18 具体配置方法看Luar的文章:http://www.luar.com.hk/flashbook/archives/000260.php 正版用户升级为正式版的方法:要升级为正式版,你必须提供你的注册码信息 (购买Flex后即可获得).需要到命令提示符进入Macromedia/flex/bin目录下如果安装选择的独立Flex,输入下面命令:licensetool -install 注册码 ../flex.warlicensetool -install 注册码 ../samples.war如果安装选择的是整合JRun4/Flex,输入下面命令:licensetool -install 注册码 ../jrun4/servers/default/flexlicensetool -install 注册码 ../jrun4/servers/default/samples

Macromedia Flex 整合 Macromedia Flex和 Java

 

Macromedia FlexMacromedia Flex

那么当前的解决方法有什么问题吗?如果应用程序运转正确且允许用户是有生产力的,那么可能没什么错误。但是曾经有很多web开发员抱怨当使用浏览器作为客户机时会限制性能。 这是一些当前开发web应用程序时遇到的问题:1.浏览器以不一致的方式解释scripting 语言, 譬如Java 语言。 这迫使开发员多次写同样的代码来调节各个浏览器。2.简单用户接口会影响到譬如选中, 基于向导的表单, 和大表格数据集的处理,这使得在浏览器上需要更多额外的代码。 3.HTML 是有限的,静态的标记语言是无法是扩展的。 4. 在用户接口之内进行事件处理可能是富挑战性的。 因为被反馈的HTML 页一次只能被显示一页, 而事件没有回到服务器之前又是无法更新其它页的。 5. 只能通过Cookie来达到连续的应用状态,Cookie它是不支持对象的。

6.使用浏览器开发偶尔连接的客户机几乎是不可能。很多Web开发员都知道这个事实: 当前工具设置有局限性。当在浏览器上工作时开

Macromedia FlexMacromedia Flex

发员必须查找解决方法。对于开发员和用户来说用一台瘦客户机是承受不了当前的性能的。Rich Internet Applications为了克服这些局限性,考虑用RIA来开发。 如今RIA给用户一台胖客户机来扩展浏览器所承受不了的性能。 最普遍应用的J2.EE 的RIA 客户机是Java 和Flash。 当开发大型的数据中心的应用程序时, RIAs 真的是很强的。开发RIA的几个可行方法是JDNC (JDesktop Network Components), Laszlo, Thinlet, Java Web Start, 和Macromedia Flex。RIA能解决问题前面已经说过了。 下面是RIAs的一些特征:1. RIAs提供了和浏览器一样的UI组件, 而且它还提供新的本地的更加丰富的组件。 比如包括一个数字步进, 滑动控制, 一个轴向数据网格要素和菜单栏。 2.成熟的RIA应用允许布局管理器由如下构成,譬如制表符浏览器, 折叠,树结构和其它能和AWT and Swing开发相媲美的布局控制。 3.RIAs 提供拖放能力。 4.RIA 里的语言是一致的,它贯穿于所有客户机, 不必为不同的实施而重写。5.在用户接口,不必每个action都是请求/回应模式。通过富互联网应用,用户与UI 相互对话,如果需要也只需要向服务器发出请求。 RIAs 会运用HTTP 协议方法把数据提交给应用服务器。但是, 通常更好的用RIAs的机制是远程, 它会根据RIA 来支持不同的方式。RIAs提供扩展的与HTTP进行通讯的协议。 6.事件处理横跨多个组件是可能的。

7.RIAs 允许您不使用HttpSession就可以在客户机存储更多信息。 这减少了在应用服务器里所占的内存。
8.状态的连续广播,

Macromedia FlexMacromedia Flex

通常是以对象的形式,它提供了创建偶尔连接的客户机的可能性。RIA是相当新的技术,它介绍了开发时涉及到的应用。 它不能解决所有应用, 它是要依赖某种实现。 但是, 如果您认为您的应用可受益于一个更加富有的UI 设计, 那么RIA 也许就可以为您服务。 本文现在将集中于一个RIA 解决方法, Macromedia Flex, 并且集中讨论一下。Macromedia Flex  Macromedia Flex是RIA的一台商业表示层服务器。因为这是Flex applications.用的环境,所以必需要安装Flash插件。 多数浏览器已经装备了Flash插件,对于RIA来说这也有助于正当使用Flex。 我们来讨论一下不用Java 插件而使用Flash插件来与J2.EE 应用服务器通话的意义所在。 开发员使用二个核心语言创建Flex应用。 第一核心语言是MXML, 即Macromedia Flex Markup Language,它拥有一套丰富的XML 标签,这些标签允许开发员设计用户接口。 MXML 也可以被认为是XUL, 或XML UI 语言。不同于HTML,这些标签是可以扩展的, 它拥有应用程序所需要的额外能力。 其他MXML 结构可以被叫做远程对象, 在model中存储返回的数据, 并且对MXML 构件可以自定义您自己的感观。  

第二个Flex开发核心语言是ActionScript 2.0, 它是一个ECMA 支持的语言,与JavaScript 语言类似。 ActionScript 原理是被编码在MXML 页里面的。 这是较强的面向对象的语言,这对于java开发者来说是比较熟悉的。 ActionScript 而且有很大的事件处理能力,

Macromedia FlexMacromedia Flex

它允许应用程序回应动态用户交互。 由于ActionScript 运行在Flash插件里面,所以它不同于在浏览器里进行JavaScript编码,不需要重写几个同样编码的版本来支持不同的浏览器。MXML 和ActionScript 是基于文本的语言, 可以写在一个简单文本编辑器或 一个IDE 工具譬如Eclipse, 或一个更加老练的工具象由Macromedia 公司的Flex Builder里。 如果您接触过Java, XML, 和scripting 语言譬如JavaScript 语言的话, 那么您在学习Flex时就要稍微转下弯了。Flex服务器负责把MXML 和ActionScript 组件转换成以.SWF 文件的形式的Flash字节码。这个过程类似于用Java Web应用容器把JSP 文件编译成servlets。在Flash运行环境下,SWF 文件被执行在客户机里。 Flex服务器提供其它服务譬如缓存, 并发, 和处理远程对象请求。给您现有的结构介绍一个RIA 框架。

现在你对RIA 概念的已经有些了解了, 让我们看看怎么把RIA 引入到您现有的结构中去。 其中我们也将着重论述怎样把RIA表现在一个层状应用中。 此外, 也会讲到当用Flex与一些普遍的公开的框架的结合开发时存在的一些潜在的问题。 这些实例将有助于引入RIA 到您的结构中

Macromedia FlexMacromedia Flex
去。就让我们先由辨认层状结构开始。一个结构可能包括以下几层: 表示层, 业务代表层,业务综合服务层, 和持久层。 这是各自层的基本实现:Flex Business Delegates Spring Framework Hibernate 接下去的内容将集中讲解每一层。我现有的MVC 表示层是怎么样的?在Web应用程序中表示层是用来给用户传递用户界面, 处理后端服务请求, 并且存储信息数据模型用的。对刚接触RIA的开发员最初可能会倾向于重新使用现有的Struts。 但是, 象Flex这些开发产品都提供了他们自己的MVC 结构。 难道您真地需要维护一个包括二个MVC 结构的表示层吗?以下是当Flex客户机通过Struts组件向Java 服务器作出请求时的实例。在被更高层接收之前,Flex客户机的请求会先被发送到Struts表示框架。 怎样不集成Flex and Struts和其它Java组件。表示框架譬如Struts是由HTTP传送HTML 请求来运行的。 当用Flex客户机来使用HTTP 协议时, 开发员就会出于对性能和面向对象的优点考虑,通过HTTP来使用远程对象而反对提交请求的方式。 所以, 有序化的使用这两个表示框架会提供协议配错。 除非您有特定需要直接地用RIA来集成Strut ,这样才可以避免。 图2 显示一个当使用Flex 和 Struts时更好的解决方法 介绍Flex 和 Struts与其它Java 组件。建议怎么安排分离的Flex组件 和 Struts组件共存。 但这是有条件的,这需要在当应用程序请求并行RIA 组件和轻量Struts组件的时候。开发员应该运用RIA 客户机来做点什么。对于那些熟悉页面请求应答模式的传统Web开发员来说,这是一个明确的思想上的转变。象Flex这样的RIA 产品并非像Struts一样是请求或回应驱动。 RIA 客户机负责在任何情况下更新UI而不必回到服务器。当使用RIA时Struts不只是您唯一想的事了。 熟悉这类型技术需要时间。 在经历这些曲折以后, 最大的问题是Java服务器端组件的综合化。 这也并非是针对RIA概念。

前面我们已经讨论了一些表示层相关的,下面我们讨论其它层在我们的应用结构是怎么受影响的。我们已经重置了我们的表示层

Macromedia FlexMacromedia Flex

组件; 我们怎么把它与业务层集成在一起呢?Flex是一个可扩展的RIA 框架,它提供了很多方式与您的J2.EE 组件通信。Flex提供了HTTP 通信,万维网服务通信,还有Macromedia 的私有的AMF (ActionScript 传讯格式化) 网关。AMF 网关是一个高性能二进制协议,它近似于Flash remoting协议。远程对象运用HTTP 协议被发送到AMF 网关。Flex为每个这些通信协议提供MXML 标签, 这样一来极大的减少编制程序复杂度。此外, Flex允许您以或异步或同步方式对您的企业等级启用远程调用。 通过使用一种异步远程购买权, 用户就能够对客户机进行一些操作并且即使当发生在传统万维网应用中时也不被拦截。 您能阻拦用户与使用同步调用的UI交涉。让我们来考虑一下怎么让Flex和我们的业务综合化层集成呢。 为这我们将使用Spring框架作为我们的综合化层, 但这对您选择实施什么综合化层并没有限制。让我们假设一下您有您的服务运行在Spring microcontainer里, 并且您需要由Flex调用远程对象。  

因为Flex对Spring完全不了解,您也许可以考虑添加一个separate, 即一个薄层作为代表您的service components。 并且, 因为Spring对Java接口起到了很大作用,所以我们可以建立一个代表对象,这个代表对象实施着和Spring服务一样的Java 界面。 这些代表对象将提供

Macromedia FlexMacromedia Flex
一个减弱了的网关,它从Flex和综合化层中分离。 您需要做的唯一的事是在Flex配置文件中配置这些对象因此他们能与AMF 网关共同操作。 这里有一个实例将说明代表对象是怎样被配置在server-side flex-config.xml Flex配置文件里的: com.meagle.flexro.FlexBusinessDelegatestateless-classtruefalseOrderUserAdmin初看Flex你会发现它一些有附加能力,类似于像设置安全性啦,决定委派对象是否申明啦。当Flex发一个远程的对象呼叫到内层时,它将会干扰一个Flex的委派Java对象.委派对象将会负责对呼叫内层或者服务层 (比如Spring).作为结果的对象将通过AMF网关返回到Flex客户端,这个对象被称为ActionScript对象.这里是一个MXML代码的例子, Flex客户端用MXML代码来远程调用并将结果存储到一个数据模式中.用ActionScript equivalents写的Java的域对象在AMF网关里来回传递。这个过程开始于一个请求,这个请求是从Flex服务器通过AMF网关到应用程序的其他层。

一个返回对象的图,将会被通过其他Java层,最后通过一个AMF网关返回到服务器。一旦这个对象通过网关他们就将被转变为ActionScript equivalents。在ActionScript Order对象里你应该注意Object.registerClass这个特别方法。AMF 网关用这个Object

Macromedia FlexMacromedia Flex

.registerClass  方法在Java ActionScript之间来拆整对象。这个方法把客户端的ActionScript 类注册到对服务器端的Java 类。因为这些对象是很相似的,所以你在一个稍微不同的格式里不想重写你的域对象也是可理解的。像XDoclet 和蚂蚁之类的工具允许你自动地产生这 些ActionScript  对象而不是手动地编码。现在你能像在Flex客户里的ActionScript equivalents操作你的Java对象了 Flex与持久层集成在使用一个在web上定义好的耦合的体系结构的应用程序中,你不直接和你的持久层对话。使用Flex不应该改变这个体系结构。在大部分情况下,集成层将代替你和你的持久层对话。通常是使用Data Access Object (DAO)来完成的. Data Access Object (DAO) 是用来连接诸如数据库的永久存储的数据的。Flex客户端不直接访问集成层甚至不直接了解这个层,因为它构筑了一个紧密的联结。让我们用Hibernate来作为持久层的一个例子。 

 当在Macromedia's AMF gateway环境下使用Hibernate和远程对象时,会有一对错误。Hibernate用户知道你不能访问一个不含有已初始化Hibernate会话对象的集合。访问一个没有被初始化的动态代理对象的集合会导致运行时错误。The AMF 网关不知道如何特定

Macromedia FlexMacromedia Flex
的去寻找Hibernate动态代理对象。一个潜在的方法是面向方面的编程(AOP)。即将一个即将传送给AMF网关的对象作为委代对象,移除动态代理。这是一个包含传递结果对象给拦截器,反复寻找使用映射并没有被初始化的代理对象的过程。如果找到什么无用的代理对象或集合,将他们设置为null。这是一个cross-cutting关注,可以作为一个方面,进而使用AOP语言,比如JBoss AOP, AspectJ, Spring AOP等等。AOP拦截器应该被应用于业务代理层的对象。验证典型的J2EE web应用程序有许多种身份验证模式。它有可能是基于容器的身份验证模式,或者是一些自定义密码的用户验证。像Flex之类的RIA 服务器允许你在大多数的应用程序服务器上使用Flash客户端的自定义身份验证格式和基于容器的身份验证。此外,如果你看一看上面的业务授权结构的例子的话,你会发现,为了安全起见你可以分配任务给这些对象。甚至在AMF网关中还有很多异常分支,允许开发者们获取HttpRequest、HttpResponse和ServletConfig对象来改进您想使用的、带有授权对象的安全性。总结这篇论文引入了一些概念,目的是为了让您了解当您使用诸如Flex之类的RIA时的权衡和潜在的缺陷。不论你使用的是Flex还是其它的RIA工具,在构筑应用程序的时候都会考虑最重要的是什么。当评估一个RIA框架时,要确定它有足够的可扩充性来对应应用程序的需求。此外,在RIAJava之间传送对象时,需要注意要谨慎的构筑综合性的问题。

附图

上传图片 

互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于www.hudong.com

被引用: 本词条已被如下媒体引用 我来补充
开放分类: 我来补充

讨论区

更多>>

编辑者

共2人协作

相关词条

上海交通大学出版社
PB
JDBC
java数据库连接
网格
iis
Asp.net
远程数据服务
RDS
EJB
更多

所属任务

Copyright © 2005-2009 hudong.com Ltd. All Rights Reserved. 互动在线 版权所有