求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
加速云应用程序开发
 

发布于2012-12-10,来源:IBM

 

当有人提到云应用程序开发和云应用程序交付时,您可能会联想到数日、数周或数月不间断地编写和调试代码,然后还要解决遇到的集成问题,而您所希望的,则是通过现有代码重用、高可用性 (HA) 以及所有平台的无缝集成来加速应用程序开发和部署。

本文将会讨论如何通过使用现代的快速应用程序开发 (RAD) 工具加速应用程序开发,同时保持传统开发环境和编码技术所能提供的灵活性。我们先讨论一下之前提到的概念,然后介绍一个实际的工具样例来演示这些概念。

  • 业务分离:并行开发不同应用程序层(比如 GUI、数据连接、业务逻辑)会如何影响云应用程序开发的速度?
  • 部署灵活性:如果开发(甚至是部署)功能过度依赖它所在的运行环境,那么这会对应用程序开发产生怎样的影响?
  • 应用程序/软件部署虚拟化:将 SaaS 应用程序作为基于云的应用程序进行部署的过程中,哪些组件会让部署方案变得复杂?
    业务分离

目前大多数 Web 应用程序开发至少包含三层:

  • 图形用户界面:在这里,通过混合使用 HTML、CSS 和 Script,可以实现应用程序的可视化效果。大多数用户界面都在内部嵌入了 JSP 和 ASPX 文件。
  • 业务逻辑:包括设置页面流模型,要弹出页面的字段/内容,以及它们的关系、是否验证、分支处理、外部服务调用,等等。
  • 数据连接:包括连接后台系统(如数据库、Web 服务和其他系统)来保存、转换和传输从最终用户那里收集的数据。

通常,对这些层的开发是依次进行的,至少包含多次的往复,因为它们之间有一些复杂的依赖关系,所以延长了解决方案的交付时间。

为了能加速解决方案交付,您可以通过定义良好的边界,同时开发所有层,这样就可以避免开发过程中的冲突。但这种并行处理不应该以增加复杂度为代价。

例如,代码生成器开发平台可以交付包装完整的 MVC 应用程序;但对于定制来说,这却是一场噩梦。(“模型 - 视图 - 控制器” 是用于软件工程的基础架构模式,它可以将应用程序逻辑从用户界面中分离出来,从而能够对各部分进行单独的开发、测试和维护。这就是我们所说的 “业务分离”。)

下面这张表格总结了 Web 开发工具目前的优势和劣势。

Web 开发工具的优势与劣势

Web 开发工具类型
优势
劣势
传统的 IDE(Eclipse、Visual Studio) 极大的灵活性
执行速度快
开发周期长
需要较强的技术能力
以表单为中心的 RAD 开发周期短
需要中等技术能力
定制程度有限
应用程序类型有限
通常是数据库驱动,并依赖数据库
代码生成器 开发时间短
需要中等技术能力
定制程度有限

部署灵活性

尽管云为开发和运行可伸缩的 Web 应用程序并从高可用性受益提供了巨大机会,但有时仍有一些应用程序需要内部开发,然后部署到云中(或相反)。

该问题的解决方案之一是:有一家公司能提供能在线填写并提交报税表的软件。当报税时间到来时,需求就会大涨,因此转而使用可伸缩的云基础架构,以保证高可用性。

如果开发工具依赖于它所在的运行环境的任何特性,那么这种转换就很难实现,甚至根本不可能实现。

避免锁定到特定环境的主要因素包括以下概念:

  • 与平台无关:开发工具应该能够在 J2EE 和 .Net 环境下运行。而且开发出的应用程序应该能在任何 portlet 类型环境(如 Microsoft? SharePoint 平台或 IBM? WebSphere? Portal)下运行。不仅如此,而且无需重新编码即可实现环境之间的转换。
  • 鼓励最少或零编码环境:显然,创建的代码越少,在环境之间进行转换时,需要处理的内容就越少。这同样适用于界面层。可以使用纯 HTML/Javascript 界面或者强制使用 JSP 或 ASPX 技术进行开发吗?
  • 建立完全解耦的层:按照之前我们所讨论的业务分离,您的界面、业务逻辑和数据连接之间的分离程度越高,修改任何一部分对整个应用程序造成的影响就越小。

应用程序/软件部署虚拟化

云的最大优势之一是抽象化基础架构 (IaaS) 或中间件应用程序 (PaaS) 的配置。通过使用云,非技术人员也能在几分钟之内部署复杂的环境,而不必了解底层的复杂性。

不了解技术知识的客户也能够激活 SaaS 云应用程序。尽管如此,将 SaaS 应用程序部署成启用云的应用程序并不十分轻松。我们将重点介绍以下几个难点,通过设置一个工具可以促进解决难点的过程顺利完成。

只需单击鼠标即可完成部署

在这里,您需要一个工具,通过允许为非技术人员启用应用程序配置,为云提供额外的抽象层。从某种意义上说,该工具将充当应用程序管理程序或 SaaS 应用程序来启用 SaaS 应用程序。

多租户资源共享和配置

和 IaaS 和 PaaS 充分利用硬件和中间件的方式一样,如果有一个工具能充分利用多租户模式下的开发环境,那么这可以说是一个福音。这包括在图形层、业务逻辑层和数据连接层重用组件并与所有租户共享组件的能力。

如果每个应用程序都是单独开发,由于每个实例都要配置规则并进行测试,所以部署应用程序的多个实例的复杂性可能导致成本增加。如果有一个平台,在此平台之上,只需单击几下就能部署应用程序,那么通过让平台自身能够配置新的实例,可以简化多个实例的配置。

多版本管理

通常部署 Web 应用程序的多个版本需要进行认真细致的工作,以避免产生冲突和预料不到的副作用。在最理想的情况下,您希望自己的工具能提供一种复制现有应用程序的简单方法,能用它来测试您做出的修改,或提供不同的版本。

您也许还想在预置环境中开发自己的应用程序,以便促进测试以及与内部服务的交互,同时确保实现无缝方式的云部署。只需要有一个能在内部环境和云环境中部署的 RAD 平台,即可轻松实现此目标。

让我们看一下作者开发的实际工具,演示其中一些概念。

SmartGuide, 一款实际的 RAD 开发/部署工具

Alphinat SmartGuide? 的格言是 “我们大家都能实现快速应用程序开发”,这意味着它能让快速开发和部署启用云的应用程序变得足够简单,让非技术人员也能执行此操作。而这种说法的另一个重要方面是,通过将许多开发和部署的任务转换成更加自动化的形式,为经验丰富的云开发人员提供一款工具,提高他们在 “开发到部署” 过程中的生产效率。

我们将使用 SmartGuide 来演示如何使用实际的、久经考验的产品来实现上述这些概念。

RAD 工具谱

首先,要了解 SmartGuide 适用于产品的哪些方面,您可以先看一看开发工具的图片,其中 x 轴是灵活性,y 轴是解决方案的交付速度:

图 1. 云应用程序开发工具的交付速度与灵活性的对比

三个椭圆表示在第一表中概括的三大类。SmartGuide 的灵活性与本机编码非常接近,同时能提供最大的开发和部署速度。

在下面的章节中,我们将看看 SmartGuide 的特性如何与之前讨论的概念相匹配。

平衡速度和可定制性

SmartGuide 是从零开始打造的,它为 Web 提供了一个快速开发平台,同时保留自定义代码中的定制灵活性。图 2 从较高层次展现了 SmartGuide 架构。

图 2. SmartGuide 架构的高度概括

关键之处有:

  • 应用程序的业务逻辑保存在 XML 文件中。
  • 这种 XML 表示形式通过一个优化的业务规则引擎在第一个应用程序调用上进行编译。
  • 可以通过 JSP(或 ASPX)文件来呈现应用程序的可视化效果,使用自定义标记库来呈现业务逻辑,或通过 REST Web 服务接口和 HTML/JavaScript? 连接到业务逻辑引擎。
  • 通过扩展函数的自定义类加载器或本机 REST/SOAP Web 服务支持来实现数据连通性。

开发出的每个组件都可以重用,无论它是服务(Web 服务或扩展函数)、主题,还是业务逻辑组件,例如字段。想一想这样的功能,开发第二个应用程序时不必部署任何代码来呈现它,只需重用之前的 GUI 层即可。您只需将应用程序的 XML 表示形式上传到您的云环境中即可。

只需一次单击即可完成应用程序的创建

SmartGuide 包含了很多功能,它们可以帮助您快速构建交互式 Web 对话框。例如,您只需选中一个复选框,即可自动根据现有 PDF 表单创建应用程序字段:

图 3. 从 PDF/XML 文件自动创建字段

在导入 XML 模式 (XSD) 或连接到 Web 服务和扩展函数时,可以使用相同的一次单击 (one-click) 机制。在进行连接的情况下,所调用方法的输入和输出还可用于创建字段。

可视化设计工具

通过使用 SmartGuide Designer,可以利用可视化拖放界面轻松地管理应用程序的全部内容和业务逻辑。例如,可以通过拖放或在页面上中双击某个字段,将它添加到应用程序中:

图 4. 字段拖放

您可以轻松定义字段属性、值、帮助信息、验证、外观和操作:

图 5. 字段属性编辑

可视化页面流程

SmartGuide 能自动创建应用程序页面及其之间的关系(包括分支处理规则)的可视化表示形式。集成式编辑器使得定义哪些情况下用户导航到哪个页面变得非常容易。

图 6. 应用程序页面流程视图

可视化函数编辑器

可视化函数编辑器可以对字段值进行操作,无需编写任何代码。可以将点击式 (Point-and-click) 函数应用于字符串(大写\小写、字串、字符替换)、数字(格式化数字、取整、汇总)和日期(当前日期、日期差异)。同时还为复杂的函数和计算提供了本机支持。

图 7. 函数编辑器

如果用户已经掌握了一些编码知识,那么可以在源代码模式下直接输入 beadshell 代码。

零代码 Web 服务集成

SmartGuide 为 SOAP 和 REST Web 服务提供了本机支持。要添加到 Web 服务的连接,只需一个定义文件(WSDL 或 WADL)或一个示例调用即可。然后系统会自动提取可用的操作,并通过用户友好界面使用户可以使用这些操作。用户也可以使用已定义好的服务自动创建应用程序字段。

自动文档生成

在构建应用程序时,可以根据需要生成文档。SmartGuide 会自动生成可定制的 Word 文档,该文档中包含应用程序的详细描述,还包括其所有页面、字段、服务、文件和动作。

PDF 预填和创建

SmartGuide 允许用收集的数据预先填充 PDF 表单,无需进行任何编码。这样就可以将复杂的表单划分成一系列的逻辑步骤,从而简化数据收集,同时用 PDF 格式显示复杂的表单,以便获得非常精细的像素打印或存档。

此外,SmartGuide 能从应用程序动态生成 PDF 文件。还可以通过可定制的模板对生成的 PDF 文档的外观进行完全控制。

XML 文档生成

SmartGuide 以数据为中心的特性使其可以使用相同的收集数据生成兼容模式的 XML 流,然后将 XML 流发送给外部系统,以便进行进一步处理。如果选择从某种模式 (XSD) 自动创建应用程序字段,那么这些流会自动继承模式定义文件中已定义的验证规则。

高级内置验证

高级内置验证允许您单击一次鼠标来执行语法验证。

而且可以根据字段类型进行多种不同的验证。例如当创建一个文本字段时,您可以指定最大和最小允许长度,从预定义验证(字母、字母数字、电子邮件地址、电话或传真号码、邮政编码等)中进行选择,并使用外部服务验证该字段。您还可以创建自定义、可重用的验证规则。

此外,SmartGuide Designer 允许用户执行语义验证,确保用户遵循预计的业务规则。

可重用组件

您可以定义一次字段,然后在不同的应用程序中随意使用它,从而减少要创建的字段数量。从库中导入可重用字段之后,就可以修改它的属性,这不会影响字段的默认设置。

例如,某个字段在一个应用程序中是强制使用的,而在另一个程序中则是可选的。还可以在多个应用程序中共享字段值,从而避免最终用户更新相同信息的密钥。

同样的重用能力还可应用于 Web 服务、扩展函数、知识库以及演示文档主题及模板。

可用的演示文档模板

通过使用 SmartGuide,用户可以将应用程序的逻辑层与显示层完全分开。这意味着主题专家可以将精力集中在应用程序的业务逻辑和内容上,不必担心其外观。

同时,图形或 Web 设计师可以使用自己熟悉的技术(JSP、ASPX 或纯 HTML/JavaScript),集中精力创建用户友好的界面,让这些界面符合标准且易于访问。

一旦创建好模板,只需单击一下鼠标,即可在应用程序中应用它。在多租户环境中,甚至可以让多个应用程序或租户共享模板。这样可以进一步缩短部署时间,帮助标准化内容和字段的外观(文本框大小、标签位置,等等)。

个性化知识库

SmartGuide 还允许使用基于 Web 的界面创建知识库,使用户能创建过滤器,只显示完全与最终用户有关的信息。

可创建的知识库类型的数量方面没有什么限制。因此,可以使用相同的模块创建手续、活动、人员和位置列表。

功能强大的自定义函数 API

Java 和 .NET 开发人员可以编写扩展函数来添加自定义功能,比如设置自动响应器,对某个字段执行一系列高级操作,与数据库、LDAP 或后台系统等进行集成。只需一个简单的配置文件,即可让这些扩展函数的使用方式与 Web 服务的使用方式相同,从而让非技术人员也能使用它们。

附加功能

SmartGuide 让用户能够:

  • 创建字段组,获取多行数据(如人员列表)。
  • 用多种语言部署应用程序。
  • 轻松回显最终用户输入的数据,并让他们能够回到特定页面进行修改。
  • 构建可在多个不同的应用程序中重用的组件。
  • 为字段可见性、页面验证和导航规则、字段值、字段验证、服务和文件映射规则设置条件。
  • 调用 Web 服务或扩展函数来初始化应用程序(类似于对预填充字段所做的操作)。
  • 定义每次页面加载或退出时应该执行的操作。
  • 合并 PDF。

结束语

本文介绍了组织在将其应用程序迁移到云时遇到的各种挑战,从代码修改到重用性,再到部署的简易性。我们查看了将应用程序迁移到云中的一些关键因素。同时向您展示了 Alphinat 的 SmartGuide 产品的概括,SmartGuide 是用于快速应用程序原型开发的平台,它将云环境作为最终目标,可以快速在多租户环境中联机构建交互式 Web 对话框。

无论您是经验丰富的应用程序开发人员,还是第一次构建用于云环境的应用程序,都可以应考虑使用 RAD 工具,它会使您的工作变得更轻松。


 
分享到
 
 


专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件的思考
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS
更多...   
相关培训课程

云计算
Windows Azure 云计算应用开发