从前往后开发RIA——第一部分(翻译)

来源:百度文库 编辑:神马文学网 时间:2024/04/29 06:04:58
前些日子看到Adobe Developer Center上的一篇文章很不错,是关于如何开发RIA的,现在翻译过来,给自己当参考。由于翻译经验尚欠缺,文中定有生硬之处,望见谅。欢迎大家对不到之处提出批评。
原文是:Building RIAs from Front to Back – Part 1: Understanding the Approach
原文地址:http://www.adobe.com/devnet/flex/articles/frontback_pt1.html
声明:本文的中文版版权属于本站和我,如果要转载请注明出处,请遵循创作公用协议,勿用于商业用途。:)
从前往后开发RIA——第一部分:理解这种方式
现在我们不再被原始的界面控件和难以理解的请求/响应(request/response)体系结构所束缚,富因特网应用程序(Rich Internet Applications,以下简称RIAs,译者注)正在改变我们在网上处理事情的方式。随着Adobe Flex 2.0 Beta 的发布,使web开发者构建出比较丰富的应用程序变成了现实。
但是随着技术的发展,对传统web开发者的观念也提出了严峻的挑战。我们经常看到这样的问题:刚刚接触Flex的web开发者试图用‘以页面为中心’或‘请求/响应’(request/response)的观念构建RIAs。为了充分发挥RIAs的优势,开发者必须开始用RIAs的方式思考,把注意力集中到他们提供的丰富的用户体验(user experience)上面来。
这篇文章是开发者中心(Developer Center)的一系列文章中的第一篇,这一系列文章探索一种创新的,被证明有效的开发RIAs的方式。这种方式就是把注意力集中在用户体验上而不是其它。在这篇文章中我们会介绍一种“从前往后(front to back)”开发的观念,在这种开发方式里,用户体验成为了开发过程中的第一驱动,而不是事后才考虑的事情。我们将讨论如何利用Flex 2.0 Beta来实现这种方式,Flex 2.0 Beta的特色使得这种方式非常成功。我们还将针对如何用这种方式将下一代的软件移植到web上给出一些提示和建议。
这一系列文章不是关于理论和方法的。它告诉你如何利用Flex 2.0构建强大的RIAs以及开发过程中“从前往后”这种方式的价值。在下面的四部分中,你将学会如何去做下面的事情:
设计并布局你的应用程序
用Flex,Flash,HTML为你的程序做外壳(skin)和自定义你的程序。
利用模型(models)在多个数据源之间进行方便的切换。
把你的应用程序整合到企业级应用中。
现在开始着手吧
我们经常忘记一个事实:我们最终的用户是我们的客户。他们是那些付钱——直接或间接地——让我们拥有工作的人。非常奇怪,传统的应用程序开发方式并没有把注意力放在最终用户所关心的——用户体验问题上。用户不关心设计模式或者优雅的代码重用。他们关心的是他们如何与你给他们创建的应用程序进行交互。然而传统的开发小组往往把注意力集中在了系统的后台,把用户界面只作为事后考虑的事情。在过去的十年中,J2EE,CORBA以及其他分布式开发的风险显著地突出了这种矛盾。
现在我们花一点时间把软件产业和几乎任何其他的产品行业比较一下。在软件产业中,你设计加工软件的方式同你处理几乎任何其他产品都有根本上的不同。你往往会以我们所说的“从后往前”的方式工作。这就是说,我们中的大多数都会先将工作集中在后台的引擎和API上,而这个时候我们并不知道用户界面是否会连接到这个API。
这种思考方式同那些十分成熟的、已经确定的产品行业制造其他任何产品的思考方式相违背。例如,如果你想要造一辆汽车,你会在构思它的引擎之前,先用粘土建造一个原型,然后用钢铁建造一个原型,然后把工作集中在如何让用户在汽车中有完美体验的细节上。如果你不知道引擎区有多大的话怎么知道你需要什么大小的引擎。汽车工业,像所有其他成熟的产业一样,开发加工的方式是“从前往后”。这就是说,他们先设计用户体验,然后根据用户体验去开发最终的产品所具有的特征和功能。
软件产业有很多需要从传统的产品开发中学习。用“从前往后”的方式去设计和开发软件,这种想法虽然奇怪,但是却非常的有用。它可以让我们在短时间内开发出更好,更丰富,更强有力的用户体验。
“从前往后”工作
一次又一次地,我们在永无止境的设计会议上坐着,假定每一个进入房间的人是股票持有者然后唠唠叨叨地讨论,就这样日复一日,试图提取出并撰写出一份应用程序需求文档。大多数人多次发现,以这种方式得到的需求总是以错误结束。
导致这种搜集需求的方法非常困难的原因有很多。最显著的一个原因就是在这个过程中没有真正请到领域内的专家。(意思就是专家疲惫不堪不愿工作时就不再是专家了,译者注。)在多日讨论需求之后,即便是最充满热情的用户也会精神疲惫,最终导致为了结束这个苦差事而机械地同意所有的事情。最后,生成了一份非常长的需求文档并送回到专家那里签字。不幸的是,这些文档每一份都“看起来”很正确,直到程序已经创建结束几个月之后,需求分析偏离了目标这个事实才显现出来。
用实物模型(Live Mock-ups)打动用户
在“从前往后”的开发中,你开发用户界面并用它确定程序的功能需求。传统地,如果从根本上为用户界面创建原型,常常用Microsoft Visio等工具的静态线框(wireframes)来设计。虽然Visio是一个非常好的设计图表的工具,但是它缺少你在为程序创建线框的时候真正需要的交互能力。
我们发现Flex本身就是做这种工作的好工具,因为它给我们提供了一种前所未有的高效的开发环境,让我们的开发者可以很快地创建出漂亮的线框,让用户从一开始就近距离接触到最终的程序。
当我们作完这些具体的线框时,一种奇妙的事情发生了。在前面的会议上会打瞌睡的那位领域内的专家开始活泼并真正的兴奋起来。由于能够看到他们将会怎样操作这个程序,从而使他们开始思考什么是他们真正需要的以及如何把这些单独的程序集成到一起。最终的结果将会是一份非常精确的需求分析。
建立数据模型
在这个过程中,创建了一个简陋的数据模型,用来说明关键的关系和数据点。当每个界面慢慢实现的时候,开发组会维护一个与之匹配的数据模型,它会引发我们思考那些关系:顾客可以有一个以上的销售代表还是一个顾客永远只能有一个销售代表?通过“从前往后”的方式开发,用户提供了更精确地需求,这会让那些机敏的开发小组及早地发现那些紧要的问题。我们都知道在最后一分钟把数据关系从‘一对多’改为‘多对多’的那种痛苦。用户一开始的时候越忙碌,最初的到的数据模型就越精确。这缩短了开发周期,也让会用户感到满意。
绑定到静态数据
一旦界面布局完成之后,接下来要做的就是把用户界面的控件和静态数据绑定起来。Flex 2.0使得把XML文件中的静态或者“模拟”的数据绑定到RIA这件事情变得很简单。绑定数据让程序看起来可以成功运行,这可以让你确定你的界面将完全支持要求的数据。
例如,绑定的模拟数据有利于确认数据域足够长并能够适合提供的可利用的空间。开发者还可以根据绑定的数据元素来加强客户端的验证标准。
最后,这些界面组合到一起就构成了一个有功能的、模拟的应用程序版本。
提供一个精确的API
你已经设计的这些从本质上来说是应用程序将要用到的API。你现在知道应用程序肯定会读取的数据域,将要传输的数据域,以及哪一部分的业务逻辑会在服务器层和客户层。数据服务(Data Services)现在开发完成了,它对静态模拟数据来说是多态的。这确保了返回到RIA的数据的格式和应用程序显示数据的格式很相似。
我们不能忘记这种难以置信的重要的优势。导致RIAs表现问题的最大原因之一就是程序必须自己把从数据服务(Data Services)返回的数据处理成适合用户体验的格式。这是“从后往前”设计中最大的缺陷之一。当你在用户体验之前设计服务(services)和API的时候,不可能保证二者之间的精度。在“从前往后”这种方式中,Data service 和 API 只会在RIA需要他们的时候才创建,这就避免了二次开发从而有效地缩短了开发时间。
把真正的数据绑定到用户界面
随着每个data service逐渐开发完成,用户界面的绑定也从静态数据转变为连接到真正的data services。因为我们已经确保了两者之间的兼容性,所以程序完工了。
“从前往后”方式的优点
用“从前往后”方式开发应用程序不只是理论上的练习。它为你和你的用户在以下三个方面提供了很高的价值:
更好的需求收集:用户不知道你们开发者的语言。用户不知道你们如何开发他们的应用程序,坦白地说,他们也不关心那个。然而如果他们能看到你创建的应用程序原型,他们会很快地加入进来,并告诉你这个应用程序将要做什么并且怎样去做。
更快的开发和回馈:用户不能接触到一个引擎并且与它交互。他们不能演示一个API。然而如果你先开发连接静态数据的用户界面的话,用户便可以向他们的客户展示程序去收集回馈。这甚至可以让你的用户在开发结束之前就开始卖出他们的产品。
用户成为拥护者,而不再是对手:用户可能认为你不理解他的需求、一直延误,或者你从未在最后给出它们真正想要的程序。通过“从前往后”的开发方式,你可以通过让用户参与到实际开发来转变这种关系,这样可以让他们感受到你作为一个开发者所感受到的同样的工作情绪。很快他们就会成为你最大的拥护者。
接下来干什么
怎样在实际中把这些观点应用到开发你自己的RIA当中?在接下来的四部分中,我们将回顾这种方式并详细讨论一下Flex 2.0 Beta如何进行RIA开发以及——概括地说——“从前往后”开发,尤其是如何进行让你的应用程序变得强大的开发。
你将会通过代码实例和屏幕截图来学习这些特性,它将会帮助你尽可能简单地适应你的开发方式。在最后,你将会得到使用Flex 2.0进行开发所需要的一切工具。