富互联网应用开发中的模式与个性化设计
立即解锁
发布时间: 2025-08-20 00:13:59 阅读量: 1 订阅数: 7 


Web Engineering与新闻文章内容提取方法综述
# 富互联网应用开发中的模式与个性化设计
## 1. 富互联网应用开发模式概述
在富互联网应用(RIA)的开发中,模式已被证明对高效编程具有重要价值。我们提出在更高的抽象层次(即建模)上应用模式,以实现减少设计工作量并最大化模型表达力的目标。我们聚焦于使用状态机来表示模式,这是一种广泛使用的建模技术。我们指定的 RIA 模式模型几乎可以嵌入到所有现有的方法中,从这个意义上说,这是一种适用于所有符合 UML 语言的通用方法。
使用这些 RIA 模式只需要在方法中定义扩展点,并指定如何集成这些模式,这使得我们的模式易于复用。为了便于演示,我们使用基于 UML 的 Web 工程(UWE)作为宿主语言。
## 2. 真实世界案例研究:S.CORE 系统
S.CORE 是 S.CO LifeScience 公司的一个基于 Web 的图像分析系统。用户无需下载软件,通过 Web 即可使用完整的图像分析服务。该系统提供标准分析模块(如细胞计数)以及定制化解决方案,主要应用于生命科学领域。
S.CORE 的图像分析过程如下:
1. 客户在实验室使用适当的技术工具获取并准备样本的数字图像。
2. 通过 S.CORE 的基于 Web 的人机界面,根据自身特定需求配置后,上传图像和分析规格到处理中心。
3. 图像自动加载到 S.CORE 的分析器中,提取所需数据并存储在服务器上。
4 - 5. 客户可以下载分析结果(包括处理后的图像)。
在与慕尼黑大学的合作中,S.CORE 系统增加了 Web 2.0 特性,如输入字段的自动完成、上传和下载进度可视化、待分析图像以图库形式展示、结果页面显示分析结果的当前状态等。这些特性对使用 UWE 进行系统设计提出了挑战。
## 3. RIA 模式
### 3.1 RIA 模式的定义与作用
RIA 模式是解决 RIA 设计中常见问题的通用可复用解决方案,它描述了 RIA 小部件的交互、操作和呈现。交互是 RIA 模式的触发点,可由用户事件或系统事件(如鼠标悬停、聚焦、按键或时间事件)引发。交互可触发多种操作,如验证、搜索和刷新,操作结果会更新用户界面。
Bill Scott 强调模式有助于形成设计词汇。我们认为,若对这些模式进行适当的泛化和建模,它们将更强大,因为可以将其集成到为 Web 应用其他方面(如呈现和流程)构建的模型中。这意味着 RIA 模式模型是可在 RIA 开发中复用的解决方案,复用可以手动进行,也可在自动化开发过程(如通过模型到模型转换的模型驱动开发)中进行。
### 3.2 基于模式的 RIA 实现方法
我们基于模式的 RIA 实现方法包括使用 RIA 小部件的模型,并将这些模型嵌入到现有的其他模型中。因此,设计师需要:
1. 描述 RIA 特性的模式模型。
2. 用于表示用户和系统事件的事件语言。
3. 可集成到现有 Web 应用模型中的模型元素,如在呈现模型中指示在何种情况下应用何种模式。
与其他 RIA 建模技术相比,我们的模式方法仅关注抽象呈现。具体呈现问题(如多媒体、动画等)在具体呈现模型中处理。抽象和具体呈现的分离对模型驱动开发过程至关重要,因为抽象呈现模型可轻松复用于其他平台。
### 3.3 事件语言与模式目录
我们定义了一种事件语言,包含鼠标悬停、失去焦点、获得焦点、点击等构造。创建了一个 RIA 模式目录,其中包含 S.CORE 参考项目中现代 Web 应用使用的 RIA 模式。该目录并非详尽无遗,是一个开放文档,随着 RIA 模式的普及将不断扩展。以下介绍目录中的两个模式:
#### 3.3.1 自动完成模式
- **问题**:RIA 用户在输入一些初始数据或填写相关字段后,如何立即获得输入字段值的建议?
- **动机**:帮助用户填写输入字段和表单,减少输入错误、减轻输入负担并提高输入速度。
- **解决方案**:当用户移动到另一个输入元素或输入一个字符时,RIA 在后台查询数据库,查找与已输入数据的关联。若找到相关数据且用户尚未完成输入,则为输入字段提供建议值。用户可以覆盖建议值。
- **示例**:在线银行、Sixt 汽车租赁系统。
#### 3.3.2 定期/动态刷新模式
- **问题**:如何在不重新加载整个页面的情况下,使状态页面中的数据保持永久更新?
- **动机**:页面状态需要动态和永久更新。
- **解决方案**:定期执行请求以检查是否有新数据可用。若有,则处理数据并更新页面上的相关数据元素或创建新的数据元素。
- **示例**:慕尼黑机场页面的航班状态、Spiegel 在线的足球比赛进球情况。
以下是这两个模式的 UML 状态图说明:
```mermaid
graph LR
classDef startend fi
```
0
0
复制全文
相关推荐










