[Flex 2] 01 RIA

来源:互联网 发布:sqlserver log 编辑:程序博客网 时间:2024/06/05 00:54

 

#####################
#B/S & C/S
#####################

    B/S(Browser/Server,浏览器-服务器)结构,客户端只需浏览器即可,跨平台性较好;简化了客户端的工作,相应地对服务器性能要求较高;与此同时,因为它(尽管有AJAX)无法从根本上改变“网络应用程序的表示层建立于HTML页面”这个影响用户体验的“万恶之源”(HTML在设计之初只是为了展示文本),故用户体验得不到质的提升。

    C/S(Client/Server,客户端-服务器)结构,可在服务器和客户端间平衡服务处理量;客户端需安装专门的软件,故对平台有一定限制要求;安装和维护的工作量大,不过其用户体验比较好。

      富因特网应用程序(RIA)的出现开始从根本上改变这一局面。Adobe公司推出的Flex框架无缝地整合了FlashActionScript以及MXML,并提供了丰富的可扩展用户界面及数据访问组件,使开发人员能够快速构建出具有丰富数据演示、强大客户端逻辑和集成多媒体的富因特网应用程序。Flex极大地提高了Web界面的用户体验和人机交互性,它的出现预示着因特网应用程序的面貌将焕然一新。

 

######################
# RIA
######################

首先对比三个网站:
    Apress http://www.apress.com/
    TravelClick http://www.travelclick.net/
    FlexStore http://examples.adobe.com/flex2/inproduct/sdk/flexstore/flexstore.html

      其中,第一个为传统的HTML网站,第二个/*(书中原网址已不可用,现取其替代品)*/Flash/*(书中站点为FlashMX 2004构建,此处具体不详)*/构建,第三个则用Flex技术构建。考虑下面问题时,可对比上面的网站加以分析。

      传统方式下,构建网页时,我们所想的是从一个页面转到另一个页面。举例:
            通常,我们在浏览器中输入一个URL地址,即发送一个请求。该请求在几微秒内被路由器传遍世界各地之后,最终会停在我们请求的页面所在的Web服务器上。这个Web服务器随后再次通过世界各地的路由器,将被请求的HTML页面发送回我们的Web浏览器,浏览器会阅读该页面上的HTML代码,并显示结果。如果我们请求的是存储在数据库中的信息,则收到请求的Web服务器就必须把信息传递给一个应用程序服务器(ColdFusionJSPASPASP.NET或者PHP),后者再把信息传递给一个数据库服务器。接着,数据库服务器会把信息传回应用程序服务器,后者会用该数据写好HTML代码。然后,应用程序服务器把代码传回Web服务器,Web服务器会和之前一样,再把它发回到我们的浏览器加以显示。

      这种技术虽然管用,但不高效,因为每请求一个页面,这一整套过程就必须从头再来一遍。而且,因特网应用程序(如Apress网站)与桌面应用程序(如Googleearth)的整体外观和感觉是非常不同的。传统HTML环境中,用户交互仅限于表单和几个按钮,而常规桌面项,如菜单,则常常很不好用。这些桌面工具的添加常常会引起文件大小的急剧增加,从而导致更加缓慢的加载时间。为了解决这些需求(用户体验及高效性),Macromedia(Adobe)FlashMX的推出引入一个新的术语:富因特网应用程序(RichInternetApplication,RIA)。这项基于Flash的技术克服了传统HTML的局限之处,其感觉和桌面应用程序几乎难以区分。由前面两个RIA例子可看出,其页面无需完全重建,只要将请求的数据返回并插入到需要的位置即可。这样会得到更加平衡和快速的响应,并降低对服务器的要求,且文件大小也要小得多(这对移动技术非常合适)。
    FlashMX的发布还预示了首个Flash服务器的出现:FlashRemotingMX。这个新服务器使RIA环境具备了更出色的能力来实现与数据库服务器的快速、平稳交互,以及与Java.NET服务器环境的完美集成。这意味着Flash现在可作为多样化编程环境的呈现工具。事实上,一些文章已经把Flex称为呈现服务器(presentationserver)

      不过,初期RIA的开发需要了解Flash环境的很多复杂元素(时间轴、场景等),为解决此问题,Macromedia2004年推出了FlexFlex没有Flash那么多复杂元素,它呈现了一个更为传统的编程环境。它通过使用一个名为MXML的专有标记语言,将ColdFusion的易用性与ActionScript3.0的类Java编程性能结合在了一起。
    ///可以说,Flex是专门为程序员准备的

      另外,还有一个问题要解决:状态。
      在传统HTML环境中,必须有一种方法来记住跳转页面的人是谁。例如,在当当买书时,站点服务器是如何记住你添加到购物车里的图书的呢?通常,有多种技术可以使用,如cookie/*(本地客户端)*/session变量/*(服务器端)*/等。服务器记住何人在页面间跳转的能力被称为状态(state)RIA应用程序不存在这些问题,因为它们是在客户端的计算机上运行的,仅在需要的时候才会访问服务器。即,如果当当是一个RIA,那么购物车就位于运行在本地计算机上的应用程序中,最后,当你做出购买行为的时候,所有购物信息就会被发送到当当的服务器。同样,这又显著减少了访问当当的服务器的次数,并使得整个过程的运行效率提高了很多。
    ///由上易知,RIA很接近桌面应用程序,具有很多C/S的特性。RIA将很多工作由用户界面端转移到客户端,仅保留一些必要数据与服务器端进行信息交互(只有当你真正决定了,数据才会提交),提高了效率;另一方面,因为一部分工作由客户端承担了,故载入包含了处理原不应它负责的数据的RIA页面时,会有延时。

 

#####################
# Eclipse
#####################

      现在大部分程序员使用如下两种编程环境————Java.NET
    ///如果我没有分类错误的话,那么也应该还有个PHP,也是三个中我最喜欢的

    Java是由SunMicrosystems公司(现已被甲骨文收购)20世纪80年代中期推出的一门编程语言,是流行的C++环境的进化。它是一个独立的平台/*(跨平台性)*/,今天的很多因特网和非因特网应用程序都是利用它来开发的。

    .NET环境是由微软公司于2000年推出的一个多语言编程环境,如今的很多Web应用程序都是利用它完成开发的。该环境可采用各种不同的编程语言,并把它们编译成一种多平台上的统一代码。

    ///PHP为一种在电脑上执行的脚本语言,主要用途在处理动态网页,开源。

    .NET程序员主要使用微软的VisualStudio来开发程序。这一集成开发环境(IDE,integrateddevelopmentenvironment),会利用工具来帮助我们直观地构建应用程序,同时它会在后台自动编写无错(bug-free)代码。///只是方便

    Java有多种多样的IDE工具。不过,最常用的一种是EclipseEclipse是一个多语言环境,它可协助程序员完成所有编程中很多常见的例行任务,如代码的格式化、变量的重命名,等等。而且,Eclipse并不是针对特定语言的。相反,编程社区有很多成员都开发了扩展或插件(plug-in)来帮助Eclipse理解JavaC++ColdFusion和各种其他编程语言。

    ///FlexBuilder是基于Eclipse的,其Linux版本相对于Windows版本缺少了一些功能,比如"Design"视图。

 

#####################
# CodeFusion
#####################

    Flex主要职责是构建基于Flash的图形用户界面来呈现多种平台的数据。不过,Flex并不具备直接链接到数据库的能力。所以,我们需要使用中间件(middleware),本书第2章对其进行了详细讨论。中间件就是为数据库连接和数据处理设置规则的软件。ColdFusionJava.NETPHP都可以是中间件。目前为止,最容易使用的是CodeFusion(它也是Adobe旗下的产品)

    ///不喜欢CodeFusion,故后面讲解CodeFusion的第12章未进行整理;我倾向于PHP

    <!--End-->