登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 管理学类 > 信息管理与信息系统 > 正文

基于AMVC的电子商务应用体系结构的设计与实现外文翻译资料

 2022-08-12 16:15:13  

英语原文共 22 页,剩余内容已隐藏,支付完成后下载完整资料


基于AMVC的电子商务应用体系结构的设计与实现

摘要:

尽管将模型与其可视化表示(视图)分离有众所周知的好处,但是可用的Java库并不充分支持这种概念。本文提出了一种直接的方法,可以独立于特定的图形用户界面(GUI)库,在这个方向上平稳地增强Java库。受Oberon Gadgets系统的启发,精益框架JGadgets允许开发人员只关注模型编程。这大大降低了开发成本,特别是在非常简单的领域,基于表单的GUI在商业电子商务系统中很常见。

我们首先介绍一个在JGadgets上实现的小案例研究,它演示了MVC架构的优点。然后,本文对基于反射的JGadgets本身的设计进行了概述。

关键词:软件组件,复用,MVC架构,反射,自动化配置,Java

1介绍

许多商业应用程序,特别是电子商务应用程序,都有一个客户机-服务器体系结构,它大致遵循图1中的示意图:客户机访问和操作存储在服务器上的数据存储库中的数据。客户端可能在概念上分为模型和视图组件,其中模型对应于特定的客户端业务逻辑,而视图对应于模型的可视化表示。服务器由包含服务器端模型的应用服务器和包含数据库的数据存储库组成。本文讨论了客户端的模型-视图方面,而忽略了服务器部分。

图1客户机/服务器体系结构的简化图。

在真实的商业客户端/服务器系统中,客户端通常由几十个(如果不是几百个)对话框组成,这些对话框构成了整个应用程序。这种应用程序的开发和增强除了需要仔细的数据建模外,还涉及实现对话框的繁琐任务,以便最终用户能够查看、输入和编辑数据。由于图形用户界面(GUI)已经变得很流行,许多工具都支持这些对话框的“绘图”,并以各种方式自动地开发客户端部分。

我们发现,针对Java 2(以前称为JDK 1.2)的最先进的Java开发环境只能部分地自动化此类应用程序的客户端部分的开发。虽然这些工具可以让开发人员绘制GUI并生成一些事件处理代码,但并不追求模型及其视图的清晰分离。

模型-视图分离是至关重要的,当一个客户端服务器应用程序服务不同客户与不同的特征,如桌面客户端有一个大屏幕的屏幕和一个强大的处理器而PDA(个人数字助理,如掌上电脑)或手机相当小。由于应用程序必须适合不同的客户端(取决于设备的特性和功能),所以通常来说,每个设备都有一个独立的客户端应用程序版本,需要实现和维护。

通过将视图与模型分离,我们只需拥有一个版本的模型(因为对于每种客户端类型模型都是相同的)和一个版本的视图(对于每种设备),就可以节省开发和维护费用。更进一步地考虑,视图可以从模型描述中自动生成,从而使开发成本最小化。

因此,支持模型-视图分离的框架应该为不同的视图培育一个单独的模型。对于开发人员来说,这意味着他或她只专注于使用模型,框架从模型描述中生成视图。

视图下面的GUI库取决于使用的平台和JVM (java虚拟机)的类型。例如,桌面客户端(使用Java 2标准版)可能依赖于Swing或AWT,而PDA客户端(使用Java 2微版)可能依赖于KVM GUI库。这些库彼此不兼容,不能轻易交换。为了允许平台的切换,框架因此应该封装不同的GUI库。总的来说,模型-视图分离应该为开发人员带来以下好处:

一个简化的发展。开发人员几乎可以忽略GUI表示。与裸机Swing编程相比,事件处理也应该简化。

应该支持不同的平台。平台的切换和所使用的GUI库不应该影响已经开发的对话框或模型。

更好地重用组件。开发人员应该能够定义和重用独立于其可视化表示的模型组件。

模型-视图分离应该支持上面概述的客户机-服务器开发人员。与此同时,它应该尽可能地减少开销。基于这些考虑的增强是作为一个名为jgadget的小框架实现的。与Oberon gadget系统类似,基于java的模型-视图框架JGadgets基本上应该处理一些特性,比如同步模型和视图,以及自动化事件处理。

JGadgets是由RACON Linz Software GmbH(简称RACON)与康斯坦斯大学软件研究实验室合作开发的。RACON Linz Software GmbH是奥地利Raiffeisen银行集团旗下的一家软件公司。RACON将Java技术与jgadget一起应用于实现各种系统的客户端部分,特别是用于桌面pc和移动电话的Internet银行应用程序。

jgadget源自于[5,6]中描述的原始MVC(模型-视图-控制器)体系结构,但在几个方面有所不同。下面的小节评估传统MVC体系结构的最重要特征,并将其与JGadgets体系结构进行对比。

1.1 JGadgets与传统MVC架构的对比

MVC假设模型不知道哪些视图被插入到它。因此,它允许同一模型上的多个视图以及视图的解耦更改。jgadget采用了一种不同的方法:模型知道其视图的存在以及视图是如何组织的(即视图层次结构)。这背后的动机是,模型通常不会在不考虑视图外观的情况下进行设计。另一方面,解耦甚至比MVC更强。模型和视图不必知道另一个的接口。连接是根据命名约定动态完成的。这种方法允许更灵活地连接模型和视图。

MVC架构提供了视图和控制器的严格分离。然而,这可能会给系统带来额外的复杂性。控制器不能与视图完全解耦,因为它们必须理解由视图触发的事件。因此,每个视图都需要它的特殊控制器。其思想是放弃严格的MVC分离,将视图和控制器集成到单个组件中。基于MVC架构[7]的现代GUI库(如Swing)就是这样做的。例如,Swing列表有两个类,JList对应于视图和控制器,ListModel对应于模型。Swing为它的大多数组件提供了模型-视图分离。jgadget并不将视图和控制器组合在一起,而是将控制器的通用实现作为框架的一部分,自动化基本的MVC操作,例如模型和视图的事件传播、连接、同步和断开连接。

MVC架构通常会降低性能。模型的每次更新都会导致视图的更新,而用户事件则会导致控制器与模型联系。当模型和视图分布在网络上时,这是非常重要的,例如在基于web的客户端服务器应用程序中。因此,模型-视图的交互必须降至最低,分别将模型的一部分保留在客户端,如图1所示。

MVC架构仅基于单个模型的存在,并不指定在应用程序中如何组织不同的模型。jgadget通过引入一个管理模型和模型之间交互的控制器层次结构扩展了MVC范型。

MVC促进了模型组件的透明重用,而不依赖于它们的可视化表示:典型的模型元素是一个列表框,其中包含用于添加、修改和删除列表项的相关按钮,以及一个编辑器对话框,用于编辑它们的[8]。列表框(列表处理、按钮)的逻辑非常简单,因此很容易重用。但是,列表框的视图可以有很大的不同:列表视图可以是单列或多列列表,也可以是组合框;按钮可以右对齐或底部对齐。一个按钮可以被忽略或存在两次,等等。通过分离模型和视图,开发人员可以重用(黑盒)模型组件,但不限于使用特定的视图模板。类似地,可以定义视图和控制器组件。由于JGadgets的模型层次结构,重用模型组件变得更加简单。

总之,jgadget的重要方面是模型和视图之间的自动链接机制、通用控制器和这些组件的可伸缩性。

下一节将从开发人员的角度介绍jgadget的特性和用法。第3节讨论了框架的核心设计方面。我们假设读者熟悉[9,10,11]中描述的面向对象框架的核心概念。

2通过模型-视图分离减少开发工作——一个案例研究

示例对话框(参见图2)显示了真实的德国标记,它允许最终用户检索关于银行客户的信息。选项卡控件支持选择各种搜索条件,如姓名、个人身份证号、帐号和电话号码。在基于名称的搜索中,最终用户输入最后一个名称(文本字段标记为name /Bezeichnung)和/或第一个名称(文本字段标记为Vorname)和/或出生日期或公司开始运营的日期(文本字段标记为Geb./ Grun)。Dat)。按下Search (Suchen)按钮后,对话框下半部分的列表显示搜索结果,在这个搜索示例中,用户姓Schwarzenegger。

图2搜索姓氏为Schwarzenegger的客户。

为了显示或修改与列表中被选中的客户相关的详细信息,最终用户按下modify (Andern)按钮。这将打开另一个对话框,可以在其中编辑相应的数据(参见图3)。

图3编辑客户数据。

图2和图3所示的视图相当复杂,经常会发生变化。如果应用程序被移植到一个有小显示器的设备上(例如Palm Pilot),视图必须被分成几个单独的视图。模型-视图分离使这个过程变得非常简单。

下一小节将通过图2和图3中的案例研究,描述开发人员如何使用JGadgets组合应用程序。

2.1概述

开发人员只实现应用程序的模型部分。视图由模型描述生成,并使用GUI编辑器进行编辑。控制器是框架的一部分。因此,下面小节的主要部分将专门介绍模型编程。视图部分描述了视图的生成,控制器部分描述了模型程序员使用的控制器API。

2.2 jgadget中的模型编程

定义模型的开发人员基本上定义了我们所说的属性和服务。属性存储与Java中的任何对象类型相对应的特定类型的数据。这可以是基本的Java类型,如整数、浮点数、双精度浮点数和字符串,也可以是更复杂的结构,如列表或格式化字段(日期字段、货币字段等)。

服务是模型实体,它不包含数据,但描述业务逻辑的自包含操作。服务的输入和输出参数存储在at-tributes中。例如,service searchCustomer使用搜索条件在数据库中搜索客户数据。搜索条件在一组字符串属性中指定,结果(与条件匹配的客户数据)存储在列表属性中。属性和服务成为表示模型的类的实例变量。

2.3属性与服务

jgadget要求开发人员将数据专门存储在属性中,以便与视图保持同步。模型开发人员必须理解属性和服务的API,因为它们代表了每个模型的框架。这就是为什么我们从属性和服务的属性和方法开始。jgadget的其他特性(如事件处理)依赖于这些概念。

2.3.1属性实现

jgadget提供类JGAttribute作为属性的一般抽象(注意,属于jgadget的类都以JGhellip;开头)。JGAttribute是作为一个Java bean实现的,它有一组列在表1中的属性。

表一

属性的属性:绑定属性用*标记,只读属性用**标记

lt;

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[236686],资料为PDF文档或Word文档,PDF文档可免费转换为Word

财产

类型

描述

数据字段

数据 *

对象

有实际数据

类型

允许的数据类型

dataOld**

对象

保留数据备份

MVC领域

控制器 **

JGController

对控制器的引用

视图**

向量

引用视图元素

可访问性领域

能访问*

可见*

二进制

可访问性标志

焦点*

您需要先支付 30元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图