J2EE 应用程序开发:专业设计师的心得 |
作者:佚名 发布时间:2005-04-02 来源:不详
|
OTN: 什么是 EAM 软件?
Aaron:企业资产管理 是与工作管理相关的一些事 、订货和关键性能指示器的 个电灯泡灭了,最简单不过 存货中取出一个灯泡,等等 能的指示器,它使人们能够 及在日常工作事务的处理过 大量实物资产(就像可以在
|
是相当复杂的。它涉及的内容正 务。我们的典型客户就是那些使 工厂或电力供应公司。举一个简 的方法就是找个人来替换这个灯 。我已经设计好的产品之一名为 从数据库中挖掘出有用的数据, 程中哪些环节还可以变得更为有 某个工厂周围所看到的那种)的
|
像我们在 Ventureforth 所做的, 用我们的应用程序来管理工作定单 单的例子,如果工厂某个区域的一 泡。您必须发出一个工作命令,从 accuVista,该产品是一个关键性 来分析哪些区域可能会出现问题以 效。这些指示器对于那些必须管理 制造业客户尤为重要。
|
该图表突出了该门户要实现各功能所需基本的硬件、软件和数据库组件。 |
OTN: 在设计 J2EE 应用程序过程中遇到过哪些大的挑战? |
Aaron: 最大的挑战之 照他们自己所希望的来配置 战之一就是要拿出这样一个 己所希望的来配置运行方式
|
一就是要拿出这样一个产品,该 运行方式。归根结底,就是要使 产品,该产品要是可扩展的并允 。”
|
产品是可扩展的并允许不同客户按 得应用程序可定制。 “最大的挑 许不同客户来配置软件按照他们自
|
我们之所以严格遵守 J 程序逻辑从用户界面中分离 件开发的整个生命周期,而 地说,这些产品可以运行在 地使用。
|
2EE 标准的原因就是,因为在构 出来以及在哪里存储数据等问题 且如果我们坚持遵循像 J2EE 和 各种不同的情况下,因为这些标
|
建可定制应用程序时,对于将应用 特别的重要。我们可以顺利完成软 XML这样的标准,我们就能够自信 准使组件得以合理地分离并被广泛
|
作为一个设计师,同样重要地就是要 必须是安全的。它必须是一个高效的数据 兼数据储存器和商务组件二职,而用户界 时完成相应的工作。重要的一件事就是要 就不用将商务逻辑的编程嵌入到用户界面 正确的。这些都必须在置入到数据库之前 资源之前对数据进行验证。设计师要确保
|
确保从第一天起就要使用正确的方法。例如,数据库 库。它必须能以有效的方式恢复数据。它必须能够身 面必须能以用户喜闻乐见的方式呈现数据和信息并同 将商务逻辑和用户界面进行清晰的分离。这样一来, ,每时每刻都要检测那些数据对后台数据库来说是不 在服务器端进行。软件的中间部件可以在使用数据库 遵循这些正确的构建方法。
|
另一大挑战就是我们几乎在每个项目 软件开发工作中—那就是,协作的问题。 售人员到真正构建产品的每个开发人员进 费一定时间用于软件和数据库的建模。要 前我也曾经作过开发,可以说坐在电脑前 宽眼界。
|
中都能见到的,而我也认为这确实存在于几乎所有的 协作就意味着要将每个人都集合在一起,必须与从销 行沟通。它还意味着要贯穿收集需求的全过程,并花 想确保开发团队始终保持协作并不是件容易的事。之 开发代码是件容易的事,但是如果没有协作就无法拓
|
OTN: 这就是一个设计师得出的结论—需要进行协作? |
Aaron: 确实如此。作 用户之间的一个桥梁。设计 程序代码的程序员之间的桥 非常重要。设计师(建筑师 (建筑)工作的人员进行交
|
为一个设计师就意味着你要成为 师是进行实际商务操作的执行者 梁。打比方我们来建造一个房子 )要与高层人员、真正需要应用 流。
|
构建者和软件需求者—客户或终端 、提出需求的客户和将要真正构建 。在真正建造房子之前,设计蓝图 程序(或房子)的人员和进行构建
|
OTN:在您开始实际编码之前都采用了哪些主要的设计技术? |
Aaron:非常重要的一个就是事例图 将要这样做。其他人也将要那样做。”你 程图。之后,确定问题就非常重要,一旦 须问自己,我将如何对此进行建模?非常 在建模的时候将全部问题都考虑在内,建 一点对软件组件也很适用。重要的不仅仅 作也非常重要,只有这样整个软件开发团 行的方式。”而进行商务组件和 Java 开 ,这就是我们要做的软件。这就是它的运
|
—顾名思义,“这将说明如何使用该应用程序。用户 必须要能看懂用来描述事件是如何在系统中推进的流 我完成了事例,就确定了系统如何运转。现在,我必 重要的是,要从数据建模到确保数据的完整性,必须 模必须遵循规范,要保证建模方案日后的可用性,这 是在构建之前首先决定你将要构建什么,相互间的协 队才会对数据模型达成一致:“这就是数据和软件运 发的 J2EE 开发人员看到后,也会欣然赞同:“好的 行方式。现在,我可以开始着手构建软件了。”
|
这好象是电影中的情景 的样子。我认为,建模结构 视化来说非常重要。这是 J 户界面的分离。在实际构建 在的问题。
|
。他们将某个东西称作故事板, (电影或某个软件部件的研发方 2EE 应用程序开发的重要一课, 已经进行到一定深度之前,使用
|
该图板在实际拍摄之前将展现影片 式),对于在构建之前能够将其可 因为你想要保持商务逻辑代码和用 事例图和建模将帮助你及早发现潜
|
事例图提供了关于 acc 经理或工厂管理人员都会对
|
uVista 门户应用程序是如何被 产品是如何运转有个大致的了解
|
使用的高层视图。开发人员、产品 。
|
OTN:Oracle 的 BC4J 对这种框架对开发的帮助您怎么看待? |
Aaron:BC4J 是中间件 为它优秀的特性实在太多了 ,这是从用户验证到数据更 入数据库的所有信息都转化
|
的一个杰出部件,它有很多优点 。但是,最主要的一点就是 BC4 新都能用到的、中间件的一个大 成大写,你可以在中间层使用 B
|
,很难说它最棒的优点是什么,因 J 将用户界面从数据库中分离出来 型重要部件。因此,如果你想将进 C4J 来强制实现。
|
此外,当前非常重要的一点就是资源 该层否则数据不会直接放入到数据库中, 于中间层,所以使我们获益非浅。我们可 则。
|
的使用。BC4J 允许中间层验证,这就是说除非通过 而且由于我们有几个应用程序必须协同工作而且集成 以在将任何数据推入到数据库中之前设定一些认证规
|
BC4J 还存储有关组件的元数据,标 BC4J 组件,因为我们希望我们软件中的 单以恢复某个报表,我们希望能够从一个 ,因为可能会有一些敏感数据,所以这些
|
签等 UI 类型的控件等。我们还可以快速创建大型的 报表功能是动态的。例如,如果我们打算推入一个表 选择下拉框或单选按纽中列出的不同数据中进行选择 数据可能要根据登录的用户从数据库中选出,。
|
OTN:您提到应用程序可定制的重要性。BC4J 是怎样帮助您确保应用程序的灵活性呢? |
Aaron: 在 BC4J 框架 客户定制应用程序。在软件 费者中选择;我更愿意从客 BC4J 作为一个框架可以获 点在 BC4J 出现之前是很难
|
下,底层的商务组件可以脱离元 开发中,这是一个飞跃。因此, 户中选择。”那么我们就可以将 得这一元数据并使用它。这就象 作到的。
|
数据独立运行,宿怨才能使用户或 如果用户说:“好的,我不想从消 此作为元数据存储到数据库中,而 是拥有了动态的商务逻辑,而这一
|
BC4J 可以使我们保持 这确实是一件繁重的工作。 对象之间存在父子关系的框 基于用户。一旦用户登录, BC4J 框架轻松地访问到所
|
灵活性的另一个特性就是我们不 为此,我们不必经常书写 SQL 架。例如,我设计的软件 accuV 我们就会根据我们所拥有的数据 有的用户对象。
|
再需要低级的大量的 SQL 语句, 查询语句,而且 BC4J 允许使用与 ista,是一个门户,因此一切都得 模型来运行,该模型可以通过
|
OTN: Oracle JDeveloper 是如何在应用程序元数据管理方面给予您帮助的? |
Aaron:Jdeveloper,通过视图对象 性,这样你就可以将一条 select 语句放 对该视图有所帮助的属性。这有助于定制 。更为杰出的一点是安装的用户还可以进 框架使得我们能够作到这一点。
|
在这些对象中存储属性。多数 BC4J 对象可以设置属 在那里,该语句将对数据库进行操作并动态创建一列 应用程序,而且真的对使用我们产品的用户有所帮助 行更新,这样可以动态更改他们的应用程序。BC4J
|
此外 Jdeveloper 的最 有助于协作,因为你还可以 Java 文档注释。就协作来 晰地看到软件是如何操作的 一位 CEO,只需看一看这些
|
佳特性之一就是可根据模型设计 通过 UML 建模工具提交 Java 讲,这对于我们是一个很棒的特 ,而且你也不必是一个 J2EE 开 组件是如何相互作用的,这是一
|
进行代码生成的 UML 工具。这将 文档,并生成一段代码和所有的 性。很直率地讲,从 UML 可以清 发人员。你可以是一位 COO 或是 个非常大的优点。
|
实体关系UML模型可以 据完整性问题得到可视化的
|
提供 Java 和数据库开发人员之 描述。
|
间的协作并能够轻松地使软件和数
|
OTN: 您能否就您的产品给我们一个体系结构上的概要描述? |
Aaron: 没问题。该项目被称为 acc 有一个企业资产管理数据库,该数据库通 ,也是一个工作管理软件。实际上是存储 需的所有工作定单类型的信息、所有资产
|
uVista。其体系结构也是非常直观的。在后台,我们 常运行在 Oracle 上。此产品称作 EMPAC 或 Maximo 所有应用程序数据的地方,以及 accuVista 运行所 信息和购买定单类型数据也都存放在这里。
|
然后我们有一个 accuV 元数据用于装载门户的地方 可能是某些特定类型的事务 存储在 accuVista 元数据
|
ista 报表库,该库存在于各自 ,这样用户就可以登录进来查看 ,比如说,象配色方案或是他们 库中的所有内容,以及报表定义
|
的数据库中。这就是存放报表相关 他/她的特定报表。他们要看到的 所需应用程序的特定视图。这就是 和用户对该报表所拥有的权限。
|
我们在运行 Crystal Reports 应用 报表返回给用户。我们将 BC4J 作为中间 行了标准化,但是现在我们已经移入到 O 且因为 accuVista 是一个 J2EE 应用程 已经有了一个 Java 应用服务器,我们就
|
程序的服务器上有一个报表服务器,该服务器可以将 层,商务逻辑应用程序框架。最初,我们对 Jrun 进 racle 应用程序服务器,并将其作为我们的标准。而 序,且将 BC4J 用作它的 J2EE 框架,所以如果客户 能将我们的应用程序部署在上面。
|
在 Web 层,我们通过 — 我们所有的商务组件都 体系结构,因为通常一个产 署作为 EJB,因此这是可以
|
Apache Web 服务器来运行,并 在 BC4J 层,运行在 Java 服务 品将拥有一组体系结构。但是得 向客户提供的另一个商务逻辑层
|
且还能够支持 Oracle 应用服务器 器上。总之,这是一个非常独特的 益于 BC4J,我们还提供了一个部 。
|
aaccuVista n 层结构 (使用 BC4J 作为主干)和
|
可以划分为 4 个逻辑层:客户 数据存储层。
|
端层、报表/呈现层、商务逻辑层
|
Aaron:该应用程序必须可扩展、可 代码的修改进行更新。还必须是可伸缩的 群是五个用户还是成千上万的用户。很明 此为了拥有一个瘦客户端支持 Web 的应 个胖客户端模型。这样做的最大优点就是 户端工作站上进行。
|
自定义的标签具有灵活性。在需要时还必须能够根据 。该应用程序必须可适用于每个用户群,无论此用户 显,还必须能够部署一次就能够在任何地方运行。因 用程序,我们将其构建于 J2EE 模型之上,而不是一 更新和安装都可以在一个地方完成,而无须在每个客
|
OTN:在对 Oracle JDeveloper 和 BC4J 进行标准化之前,您经过哪些类型的评估? |
Aaron: 我们查阅了各 进行分析和比较,并看那里 始运用该工具。JDeveloper Oracle 实例,而且简单点 拥有一个运行着的应用程序 据库。要从本质上快速拥有
|
种不同的体系结构和工具。我们 有哪些类型的向导,以及某些人 给我们印象最深的就是它对开 击几下就可以生成一个商务组件 ,该应用程序已经拥有这样的商 一个不含 SQL 硬编码的用户界
|
下载了很多工具,并从成本角度来 如何迅速地达到目的的。马上就开 发人员的支持以便简单地指向 ,然后生成一个 Web 客户端,并 务逻辑,它不会将数据自动推入数 面。
|
此外,坦白地地讲,我们不想处理的 Jdeveloper 中,它已经为我们解决了这 很大的帮助。我们还在应用程序中加入了 我们能够在商务组件内,以显示在 GUI 制所有代码。这样的代码已经存在于商务
|
就是低端的 JDBC,或是管道的一系列连接类型。在 个问题。在提高生产力这个方面,它确实给予了我们 许多可定制的附件,而且 BC4J 和 JDeveloper 使得 中的方式进行定制等。我们不必在实际用户界面中定 逻辑中。
|
另外,在 Oracle 应用服务器的众多 器之间进行负载均衡。如果一个服务器由 的任务继续执行。
|
特性中,我们所喜欢的特性就是服务器群和不同服务 于某个特定原因而宕机,另一个服务器就会接收相应
|
在后台,Oracle 数据 条数据的表。但是在对 BC4 用了 BC4J后,就使得我们 担心上千用户所需的上千数
|
库具有很好的伸缩性,可以处理 J 进行标准化之前,我们遇到的 可以再次利用已经断开的连接, 据库连接。
|
从只有几十条数据的表到拥有上亿 挑战之一就是连接合并。当我们采 这真的太棒了,因为我们再也不必
|
OTN:您能不能谈谈,如 什么样的呢?
|
果您没有选择 Oracle JDevelop
|
er 和 BC4J,您的开发体验又会是
|
Aaron:好的,我想我们的性能可能 们会有双倍的工作量。我想 BC4J 和 Jde
|
会降低,特别是在建模需求收集事例的方面。我想我 veloper 这样的框架,使我们的项目在时间上减半。
|
JDeveloper 向导使得我们能够快速 的忙。通过使用三层体系结构,实现成本
|
地启动和推进。此外,JDeveloper 指南也帮了很大 也大幅度降低了。
|
此外,设想一下如果我 用程序必须直接连接到数据 到下一个版本。从理论上讲 这是一笔巨大的成本,因为 麻烦的事。
|
们不采用三层体系结构会怎样。 库。假设,如果我们有 1,000 你必须到 1,000 台机器前,带 你可能必须外派系统工程师对某
|
如果是一个胖客户端设计,那么应 个客户端都需要进行更新才能升级 上 CD,用 CD 完成所有的安装, 些问题加以确认,这可能是一件很
|
使用这个三层体系结构 件部署到一个服务器并立刻 览器,不是进行 SQL 调用 包括连接合并功能。因此, ,造成性能上的损失和类似
|
,商务组件和 Web 组件都位于 同时访问到成千上万的用户。另 ,也无需创建数据库连接。这些 我们不必担心 300 个数据库连 性质的事情发生。
|
一个 war 文件中,你可以将该文 一类事情就是用户,通过 Web 浏 都是通过商务逻辑层来完成,其中 接会意外断开或丢失其中某些连接
|
OTN: 您有什么建议愿意向开发人员和其他设计师讲吗? |
Aaron:我想说,协作 可以有效地与掌握各种技能 的框架,直接地讲,通过你 一切—从最初的需求一直到 多数开发人员是相当善于协 ,我们可以从中查找一个错 样的问题,我们就可以进行
|
是一个关键,特别是在软件开发 的人来协同工作,而且能够向人 的方法,其他每个人可以来做些 开发。以及开发人员之间的相互 作和相互帮助的。说到这一点, 误,并获得有关该错误的各种论 一次对话,这确实能够使我们能
|
中。选择一个好的工具,通过它你 们展示通过你的这个工具,通过你 什么。我的意思是可以看到和想到 协作。很多时候,人们会走弯路。 OTN 对我们来说是一个巨大的帮助 坛的讨论。如果有些人曾经遇到同 够相互帮助。 | |
|
|
|
|