技术开发 频道

网络开发即将进入RIA+SOA的时代

下一代RIA+SOA平台基本特征

  了解了创建RIA+SOA应用程序的大致需求,我们再来看一下怎样将这些活动整合到一起,从而最大化开发人员的效率。下面几个部分概述了下一代RIA+SOA平台的基本特征。
 
1. 支持HTML和CSS

  这两种语言非常适合用来实现应用程序的“外观”,并且大多网络用户界面的开发人员对它们都很熟悉。所以没必要再去另做一些工作实现重复的功能。

2. 提供开放的控件框架(Open Widget Framework)

  正如前面讲到的,控件是RIA程序的基础组成模块。有许多工具可以使用,比如Yahoo、Dojo和ExtJS。也有一些小型项目或个人开发的独立控件。你可以使用这些控件构建RIA程序,但有一些需要注意的地方:

  • 几乎不可能仅靠一个控件来满足你所有的需求。
  • 集成各种第三方控件时可能需要定制代码,并对各个控件有深入的了解。
  • 编写新的控件是一项有挑战性的工作,因为这意味着你得编写自己所用的控件工具的低层API,甚至要从零开始。
  • 某些控件框架要求开发人员为所用的控件编写大量的JavaScript,这对那些JavaScript开发经验很少甚至没有的人来说,无疑是有很大问题。

  为解决以上问题,RIA+SOA平台提供的开放控件框架需要具备以下功能:

  • 支持集成现有的第三方控件
  • 为新建控件提供简单的API
  • 可以通过简单标记(markup)使用控件(不需要使用JavaScript)
  • 支持分布模型,以简化新控件的提交、发现和使用。

  开放的控件框架将成为开发人员获取控件的资源,并使开发人员可以很容易地集成控件和应用程序。如果没有所需的控件,使用开放控件框架的API重新创建也很容易。 

  由于控件在RIA开发中的重要性及其分散的特性,开放的控件框架应该是任何RIA+SOA平台必不可少的组成部分。

3. 提供一个集成的RIA编程模型

  与传统的Web应用相比,RIA程序需要编写更多的用户界面代码。因此,下一代平台需要集成的RIA编程模型来简化主要用户界面设计任务。这些任务包括:

  • 事件处理
  • DOM操作
  • 服务使用(Ajax)

  事件处理、DOM操作和Ajax是富网络应用中实现“富”任务的部分。它们的关系非常紧密。为说明这一点,我们来看一个典型的RIA登录过程。

  • 点击登录按钮(事件处理)
  • 发送服务请求(Ajax)
  • 显示相应的活动指示器(DOM操作)
  • 返回服务(Ajax)
  • 关闭活动指示器(DOM操作)
  • 显示登录“成功”的消息(DOM操作)

  虽然它们关系紧密,大部分框架和库都只提供了简单的集成,而让开发人员完成剩下的任务。为表明这一点,我们来看一些代码。在下面的示例中,当一个组合框的值发生改变时,我们将设定另一个组合框的内容。示例是用Jquery写的。

$(function(){
  $("select#comboOne").change(function(){
    $.getJSON("/combo.php",{id: $(this).val(), ajax: 'true'}, function(j){
      var options = '';
      for (var i = 0; i < j.length; i++) {
        options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
      }
      $("select#comboTwo").html(options);
    })
  })
})

  现在我们来看看怎么用事件处理、DOM操作和Ajax完全集成的方法来完成同样的任务。

<select id=”comboOne”
  on=”change then r:load.combo2.request”>
</select>
<select id=”comboTwo”
  on=”r:load.combo2.response then value[property=rows,text=text,value=value]”>
</select>

  这两段代码用不同的方式完成同一件任务。第一段使用了较多的代码,并且都是用JavasSript。第二段使用了简单的表达式语言来完成同样的任务。我们来分析一下语法。

on=”change then r:load.combo2.request” 
 
  在这句表达式中,当<select>收到“change”事件时,将发送Ajax请求消息r:load.combo2.request,一目了然。再看下一个表达式。
 
on=”r:load.combo2.response then value[property=rows,text=text,value=value]”
 
  接收到Ajax响应消息r:load.combo2.response时,将根据响应消息中的数据设定第二个组合框的内容。
 
  再深入一步,可以在收到消息的地方加入一个可视行为。

<select id=”comboTwo”
  on=”r:load.combo2.response then value[property=rows,text=text,value=value]
  and effect[Highlight]”>
</select>

  通过在表达式中添加effect[Highlight],我们就能使用一种微妙的效果来提示使用者组合框的值已经发生变化。

  这些示例代码显示了事件处理、DOM操作和Ajax完全集成这一方法的强大与简易。没有JavaScript经验的开发人员也很容易掌握像上面所示的表达式语言。这将使他们很快进入工作状态,因为他们不再需要预先进行大量枯燥的学习。当然,有JavaScript经验的开发人员也可以自由选择使用JavaScript。这样,一个集成的RIA编程模型也应该支持JavaScript,特别是要支持行为与标记的分离。通常称之为低调(unobtrusive)JavaScript。我们来看一个示例:

<img id=”progress_image” src=”images/indicator.gif”/>
$(“progress_images”).on(“r:login.request then show”).on(“r:login.response then hide”);
 

  在这个示例中,<img>标记与JavaScript代码定义的行为——收到登录请求消息的时候“show”及收到登录响应消息的时候“hide”——就是分离的。 这种编程模型有利于喜欢使用JavasScript进行RIA编程的开发人员。

  一个集成的RIA编程模型是RIA+SOA平台的基础组成部分。它为开发人员处理主要的RIA编程活动提供了单一、完整的机制。这样,相较现在来说,开发人员可以使用更少的代码、更快地构建富用户界面。

0
相关文章