【IT168 信息化】
Web开发者面临的挑战
Web改变世界
自World Wide Web诞生以来,这种全新的生活方式已经改变了世界,无论是经济、政治、娱乐,还是人们的日常生活。Web改变世界,同样,Web也改变了整个软件行业,应用系统的主流架构已经从C/S架构过渡到B/S架构,时至今日,一个小小的浏览器,已经俨然是一个微型的操作系统;并且,在Web 2.0浪潮的冲击下,这种影响会更加的持续与深刻。
Web开发之痛
作为Web的缔造者,我们的软件开发者在这场变革中体会到许多令人激动的希望与憧憬,却远离了舒适与愉悦。无论您隶属J2EE阵线还是.NET阵营的拥趸,在Web应用开发过程中所能体会更多的是烦躁与郁闷。许许多多的问题,困扰着每一位Web开发者或技术管理者:
1.需要从桌面应用技术路线向B/S应用转型,却发现积累多年的经验无法传承
多年C/S架构下的UI开发,人们积累了大量的开发经验与智慧结晶,但在B/S架构下,这些知识积累一夜之间失去了用武之地。
2. 技术部门中同时使用多种技术,难以统一
业界中的各种Web开发框架为了解决同一个问题,却使用了多种技术,为整合和维护带来了极大麻烦。
3. 需要在现有的传统Web应用加入富客户端特性,但缺乏AJAX研发力量
AJAX(基于JavaScript与XML的异步交互技术)以及架构于其上的各种RIA(富客户端互联网应用)框架,得到了业界的青睐。但是,是否值得为了Web业务组建专门的浏览器端研发力量,是一个令管理者头疼的两难选择。
4. 研发团队分工不清晰,找不到懂开发的美工或懂美术的程序员
MVC架构中,视图与控制器分离的初衷是美工与程序员的分工。然而在传统的Web应用开发方式中,美工与程序员之间耦合点过多,要完成一项任务需要大量沟通成本与重复操作。
5. Web应用开发周期过长
相对于桌面应用开发的轻量敏捷,Web应用,特别是RIA应用的开发周期显得过于漫长。
6. 使用国外的开源产品,难以获得及时有效的技术支持
国外的知名开源产品,一旦出现框架层面的BUG与新需求,难以获得开发团队迅速有效的反馈与技术支持。
7. 商业产品的购买成本或版权问题
市面上有不少商业产品都试图对上述种种问题提供全面的解决方案。商业产品往往对基础设施进行了绑定,开发商与最终用户都无法忽视商业产品本身以及一整套相关基础设施所带来的购买成本,或者版权问题。
作为软件行业的一员,我们渴望:像C/S一样敏捷快速的开发,B/S模式部署,并拥有C/S架构下的人机体验。
是否有一种能够应对所有这些挑战的解决方案呢?
Web开发解决方案
针对软件开发者的需求,由金蝶中间件有限公司支持的开源社区OperaMasks.org提出了解决方案——Apusic OperaMasks(以下文中简称AOM),业界领先的J2EE Web开发解决方案。它继承了J2EE的开放性与稳定性,又拥有:
■ 对传统C/S架构开发经验与知识积累的继承,大幅提升开发效率
■ 原生的AJAX支持,使您的系统拥有非常好的的人机体验
■ 媲美于.NET Visual Studio的集成式开发环境
■ 毫不逊于Ruby的全新动态语言ELite,并拥有Ruby On Rails的敏捷与迅速
您所期待的,它都已经为您准备妥当;您未想到的,它也为您一并考虑。它就是Apusic OperaMasks,是您寻找已久的J2EE Web版的VB、Delphi。
OperaMasks,中文含义是我国的国粹——“京剧脸谱”。OperaMasks是一个完全由国人开发的Web开发框架,脱胎于JavaServer Faces技术,取其“脸”之意而得名,既象征着对国际标准的遵循与扩展,又寓意着对民族精髓的传承与发扬。
Apusic OperaMasks方案框架
Apusic OperaMasks——开箱即用的Web开发解决方案。它是一套完整的Web开发平台,包含了运行期平台OperaMasks SDK与集成开发环境OperaMasks Studio。OperaMasks SDK为OperaMasks的编程模型与运行期提供基础支撑,它基于IoVC的全新编程思想,使页面设计人员与开发人员完全解耦;提供原生Ajax支持的JSF引擎,使Ajax的开发成本为零;它内置了丰富的UI构件,无论是开发高交互性的Web Application,还是建设轻量级、高并发的Web Site,都使你游刃有余;OperaMasks SDK还提供了与Java相辅相成的全新动态语言ELite,并能与Spring、Hibernate等已有成熟框架紧密集成,您可以选用最为熟悉与便利的开发方式。OperaMask s Studio则是一个可视化、一体化的集成式开发环境,为您的开发过程与开发模型提供全生命周期的支持。所有的这一切,将使您的Web开发体验倍感轻松!

Apusic OperaMasks方案实现
面向构件编程实现所见即所得
构件技术是提升软件复用度,从而提升软件开发效率的良好手段。但目前的Web开发技术,缺乏一种统一、标准、并得到业界广泛认同的构件标准。AOM遵循JSF 1.2规范,提供了基于构件的编程环境,并克服了规范的一些局限与不足。基于AOM内置的Ajax原生支持的JSF引擎之上,所有的构件都拥有完全的Ajax特性及丰富的人机体验。
AOM的构件称为Rich Component。如果您需要开发拥有复杂业务逻辑及操作流程的Web 应用,那么,Rich Component是您的不二选择。并且,这些构件都是面向数据的,可以用JPA、Hibernate、或直接用JDBC将数据准备好,交给这些构件去展现。同一组数据可以用不同的构件来展现,无论是二维表格, 基于自定义模版的数据视图还是图表构件,对数据的展现过程都是一样的。
我们有(但不局限于):



在基于构件应用开发中,事件机制有着举足轻重的作用。但在Web应用开发中,虽然浏览器端提供了比较完善的事件模型,但业务逻辑放在服务器端运行,而浏览器与服务器之间的交互只能是请求与响应,无法表达复杂的事件。AOM提供了混合型事件,只需要使用一个标签,就可以使普通客户端事件触发服务器端的处理逻辑。
构件技术,使展现与行为完全分离,避免了在页面中嵌入大量可执行代码,带来了所见即所得开发方式的回归。AOM的开发工具Apusic OperaMasks Studio,提供了完善的所见即所得的展现层开发支持。
无缝整合现有多种成熟框架
AOM是糅合了展现层与控制层的整体框架,用户无需再去为展现层与控制层分别进行技术选型与整合,可以只专注于业务逻辑与持久层框架。J2EE世界中已经有许多优秀的成熟框架,它们能够解决不同层面的问题,并取得了用户的广泛认同,如Spring、EJB 3、Hibernate、JPA等。作为符合JavaEE标准的展现层框架,AOM并不重新发明轮子,而是兼容包并,能够与这些已有的成熟框架紧密集成。譬如,一个Spring对象,能够直接当成一个托管Bean来使用,而在 Spring中,也可以直接把Lite Bean当成普通的Spring对象来调用。

AOM是一种无侵入性的框架结构,它并不强求您采用它的全部特性,您完全可以根据您的需求按需调整,甚至同时使用其他基于JSP 2.1/Servlet 2.5的展现层与控制层框架。在同一个应用中的不同框架可以通过会话(Session)共享数据,通过请求转发进行消息传递,保持您原有的知识体系与系统架构。并且,AOM为未来其它框架的引入与无缝集成做好了准备!
无缝整合现有多种成熟框架
对于用户来说,AJAX技术带来的无疑是喜悦,因为它大大改善了Web应用的人机体验。但对于开发者来说,AJAX却是一把难以驾驭的双刃剑,甚至是沉重的负担。基于AJAX的RIA技术,事实上是将JavaScript、XML、DHTML、CSS等传统技术拼凑在一起的组装式技术,难以形成一种较高层次的解决方案。并且,浏览器开发技术与服务器端开发技术大相径庭,要把AJAX运用自如,通常来说必须具备专门的浏览器端开发力量,这无疑是一种资源的巨大浪费。
AOM,提供了原生AJAX支持的JSF引擎,从而使AJAX的开发成本降为零!基于Apusic OperaMasks开发的业务系统,程序员无需再关注什么是AJAX,开发出来的应用是自然而然的具备AJAX特性的应用;甚至于任何标准的JSF系统,迁移到AOM之上时,只需更改一个参数,即可拥有完整的AJAX特性!
奥秘何在?在AOM中,程序员只负责通过摆放构件组成Web页面,无需负责拼凑HTML响应。 所有构件都由AOM引擎负责渲染成展现层语言。通过选用不同的渲染器,就可以为同一套构件生成不同的响应内容,可以是基本的HTML,也可以是支持AJAX的JavaScript、JSON、XML等内容。AOM既提供了HTML渲染器,又提供了AJAX渲染器,这样,与AJAX相关的开发工作量就被封装到渲染器中,转移到了引擎开发者和构件开发者的身上。对于应用开发人员,AOM的AJAX支持是完全透明,无成本的!

解耦美工与程序员的分工:IOVC
互联网归根结底是一个展现内容的平台,在互联网上,页面的展现效果与艺术感被提高到了一个前所未有的高度。在不少互联网应用中,展现设计甚至比业务逻辑设计更为复杂,需求变化更为频繁。自从Web变成应用的载体后,人们就一直在为美工和程序员的分工而烦恼。于是,有了JSP/Servlet之分以及所谓的MVC架构。然而,时至今日这个问题并没有完美的解答。由于展示层负责直接与用户进行交互。系统的大部分行为需要由展现层发起,这导致展现层需要耦合控制逻辑;同时,所有的运行结果又需要由展现层来呈现,这又导致了展现层需要耦合业务模型。最终,不得不在展现层中嵌入大量的脚本代码,可能是Java代码片断,也可能是大量标签库及EL表达式的引入。

传统方式的页面中充斥着到后台逻辑的引用
为了从根本上解决这个难题,AOM创造性的引入了一种全新的编程模型:IoVC——“Inversion of View-Control”,即“视图控制反转”,换言之:它能够把对“View(即UI视图)的控制力”注入到您的后台业务逻辑中。这样一来,您在编写业务逻辑的过程中,对View拥有足够的控制力,从而能够将展现层与业务逻辑完全的解耦。

IoVC方式下页面变得简单纯粹
在传统的编程模型下,页面美工通过网页设计工具“画”出页面,交给程序员加入绑定逻辑。这些经过加工的页面,美工无法理解。需要改动展现时,要么程序员负责起维护展现内容,要么美工重新画出页面,程序员重新绑定。而在IoVC的帮助下,页面美工只需要给每个构件设置一个id,程序员在后台的业务逻辑中,便拥有对页面UI元素的完全控制力。Web页面在美工完成之后,程序员再也无需因为需求的变更,而重新维护Web页面内容。
IoVC所做的是将一个活动的、易变的、复杂的交互逻辑用不同的视图表现出来,Model 和 View 都是对同一个事物的不同表述,就象在工程制图中用三个二维视图描述一个三维实体一样。Model关心的是业务逻辑,而 View关心的是展现逻辑,但他们都是为应用逻辑服务的,因此是对应用逻辑的投影,当应用逻辑发生变化,它的两个投影也将同时发生变化。在传统的Web MVC中,Model 和 View 之间存在一些辅助线,以帮助反映对逻辑实体的联动变化,IoVC去掉了这些辅助线,使整个架构更加简洁。
轻量敏捷的粘接器:LiteBean
Lite Bean,脱胎于JSF中的Managed Bean(托管Bean),却又远超过Managed Bean的功能范围,它是展现层与业务模型层的粘接器。

在AOM中,一个Lite Bean就是一个普通的POJO对象,它可以继承任何基类,也可以实现任何接口。而Lite Bean的声明与配置,遵循“Convention Over Configuration(约定优于配置)”的原则,只需一个简单的Annotation声明,使程序员从繁重的XML文件中解脱出来。在Lite Bean中,您可以编写、调用、组合任何后台的业务逻辑,同时,遵循IoVC的编程思想,也使您拥有对展现层的完全控制力。在LiteBean中,还可以注入任何其它资源,也可以再注入其它的Lite Bean。Lite Bean同时还是AOM与Spring、EJB3等其它已有编程模型的粘接器,一个Spring对象或EJB 3对象,同时也可以成为一个Lite Bean,而一个Lite Bean同时也能够轻松的被Spring对象或EJB 3对象所调用。通过LiteBean,能够使程序员基于IoVC拥有对展现层的完全控制力,又能任意的调用、组装任何的后台逻辑,从而使开发工作更为轻松,程序员能完全享受Web开发的乐趣。
内嵌高效灵活的动态语言:Elite
Java,曾经被称之为史上最优雅的语言,吸引了诸多程序员的目光,目前已经成为世界上使用率最高的语言。但在Web 2.0浪潮的冲击下,在“简单、轻量、敏捷”压倒一切的态势下,Java也渐显疲态,日益臃肿与复杂起来。人们既希望拥有Java语言自身的强大、健壮与稳定,又期望拥有类似于Ruby等动态语言的敏捷、高效与灵活。由金蝶中间件公司自主研发并拥有完全自主知识产权的一种全新的动态语言,ELite,能够使您鱼与熊掌二者兼得。
ELite是一个集命令式和函数式风格为一身的面向对象的程序设计语言,既有高阶函数、列表推导、模式匹配、延时求值等函数式语言所具有的语言特征,又具有和Java相近的语法结构。
■ 与Java相比,ELite语法简单、高效,并且更加的面向对象。
■ ELite具有灵活可扩充的语法结构,可以构造出适合自己需要的领域特定语言。并且,ELite向其它领域扩展的能力是简单且强大的,您可以轻松的将其扩展至您自己的业务领域,如金融、财务、交通等各行业。
■ 与其它动态语言相比(如Ruby),ELite能够与Java很好的集成。
作为一种内嵌在引擎中的动态语言,ELite在OperaMasks中起到了举足轻重的作用。
首先,ELite接管了OperaMasks中的EL表达式解释与求值。在遵循JSF规范的基础上,极大扩展了EL表达式的表现能力。既不改变EL表达式清晰简明的风格,又允许用户描述更为灵活的绑定逻辑。
其次,ELite可以用来描述更为复杂的展现层逻辑,通过清晰的逻辑关系和简明的语法,控制构造页面构件树的行为细节。这种特性为构建可重用的复合组件与模板、生成高度灵活的动态表单页面等应用场景带来了极大的方便与更为优雅的编程方式。
高效的开发过程: OperaMasks Studio
有人说,.NET的成功是因为有Visual Studio,而J2EE的复杂则是因为缺乏一个J2EE的Visual Studio。作为一种新技术,确实需要一个良好的工具支持,并通过工具支持来降低学习曲线、提升开发效率,AOM同样如此。幸运的是,AOM不仅提供了工具支持,而且,它的开发工具是足以媲美Visual Studio的OperaMasks Studio!

OperaMasks Studio基于Eclipse技术,它是一款细节考虑完善、开发过程流畅的全生命周期支持集成式开发工具。包括了开发模型的全生命周期支持,与开发过程的全生命周期支持。
开发模型全生命周期支持

每个行业的信息化应用都有其鲜明的行业特征,但通常可以抽象为UI展现层、业务逻辑层与数据持久层三个层次,形成了开发模型的生命周期。OperaMasks Studio针对开发模型生命周期各个层面的主流产品,提供了全面的支持:
■ 数据持久层:提供数据库连接管理,数据库内容管理,业务实体模型生成数据模型等特性。特别地,对Hibernate的对象式查询语言HQL提供了特别的工具支持。
■ 业务逻辑层:提供可视化业务实体建模工具、数据模型反向生成实体模型、自动生成Spring/EJB服务构件代码、增强的Spring配置文件编辑器等特性。
■ UI展现层:提供所见即所得的OperaMasks页面编辑器,IoVC智能导航等特性。
开发过程全生命周期支持
开发一个典型的J2EE应用,往往需要经历开发、配置、部署、重启、调试等阶段。应用开发完成后,还需要经历上线期诊断、运维期监控等阶段,构成了开发过程的生命周期。在一个开发任务中,程序员需要经历数轮这样的生命周期。因此,开发工具对开发过程生命周期的支持直接影响着开发效率。OperaMasks Studio对此作了大量细节的工作,包括:
■ 可视化的配置工具
■ 一键式部署与重启
■ 与单机开发环境无异的服务器端调试,甚至包括对JSP嵌入代码调试
■ 功能全面的上线期诊断与运维期监控工具

开发过程的全生命周期支持
工欲善其事,必先利其器。一套敏捷灵动的武功,还须配合轻盈锐利的兵器。OperaMasks SDK与OperaMasks Studio天衣无缝的配合,将使Web应用开发变得不再是一种负担,而是一种充满成就感的过程。
贴心的本土化支持服务
与其他开源框架不同,您可以得到金蝶中间件公司及时的技术支持和专业服务。在开发和应用过程中,难免出现一些问题,如果不能很快很好的解决,会对整个项目开发带来很大影响。其实这也是目前应用开源软件最大的问题,碰到问题除了查文档和源代码外,就是网上搜寻解决的办法。项目整体的开发周期势必受到强烈影响,整体成本就会直线上升,项目风险无法控制。
作为一个国产的开源框架,OperaMasks提供了中文本土化的在线学习资源与支持服务。开源社区网站www.operamasks.org是承载OperaMasks产品入门指导与学习的平台,陆续放出由核心研发团队编写的教程、专题、文章与示例。形成以产品网站为初学者提供学习入门指导;以Wiki形式的知识共享平台提供较深层次的知识积累和技术支持;以开放的问题跟踪系统JIRA收集需求和问题,并进行透明化的管理;以论坛作为用户与开发团队交流平台这样一个立体式全方位的免费学习与支持体系。
金蝶中间件公司还为AOM技术提供最到位、最体贴的专项支持与服务,包括电话咨询、现场培训、资深专家现场服务等不同形式的支持与服务手段,与您零距离接触,解决您所关心的与AOM相关的任何问题。
Apusic OperaMasks方案特点
■ 传承面向构件与基于事件的开发模式
长久以来,JSP/Servlet令我们局限于基于拼凑文本流的编程模型。AOM为Web开发带来了与桌面应用一致的基于构件的编程模型,以及所见即所得的开发方式,既是一种技术的回归,也是一种巨大的进步。
■ 兼容并包,整合多种现存技术
“不重新发明轮子”是软件业界的金科玉律。AOM开放的架构体系使之能与大多数现存框架整合,站在巨人的肩上,用户可以根据实际需要选用适合的框架。
■ Ajax的原生支持
我们需要AJAX,因为AJAX能够使我们的Web应用变得更友好,人机体验更丰富;但我们又不需要AJAX,因为AJAX带来较高的开发与维护成本。AOM带给我们完整的AJAX体验,却没有任何成本的上升。
■ IoVC:视图控制反转
基于IoVC,我们的页面不再需要任何EL表达式或Java代码片断,能够让展现层与业务逻辑之间进行良好的解耦,降低开发与维护成本。简而言之,IoVC是一种更好的MVC,是对MVC的一种高层次抽象。
■ LiteBean:零配置的粘接器
LiteBean,使程序员基于IoVC拥有对展现层的完全控制力,又能任意的调用、组装任何的后台逻辑,使开发工作更为轻松,程序员能完全享受Web开发的乐趣。
■ ELite,Java语言升级版
Elite,一个集命令式和函数式风格于一身的面向对象的程序设计语言。为企业应用带来简洁高效的脚本语法与灵活高效的动态特性。
■ 全生命周期支持的集成开发环境OperaMasks Studio
OperaMasks Studio提供了开发模型与开发过程的全生命周期支持,为程序员带来了轻松流畅的开发体验,Web应用开发将成为一种充满成就感的过程。
■ 本土化支持服务
AOM本土化的,基于社区的全面技术支持体系,不仅是用户坚实的后盾,并且为开发人员提供了交流与学习的开放平台。
Apusic OperaMasks技术优势
在Web开发的整体领域内,存在一些框架或构件,它们在解决某些局部问题也都表现非常出色,但并没有形成整体的解决方案。而OperaMasks则从构件、引擎、还是Ajax支持、以及与已有框架的集成等方面提供了一个整体方案,因此,严格意义上来说,AOM并没有功能完全对应的竞争对手,以下是对这些框架或构件的分析:


Apusic OperaMasks应用价值
通过 AOM,您将获得:
■ 易学:学习成本低
J2EE开发人员只需掌握基础的知识。
■ 敏捷:开发效率高
使您的开发效率至少提升三倍!
■ 开放:基于开源社区的发展
遵循对商业友好的LGPL协议,基于开源社区的力量。
■ 丰富的人机体验:应用系统的人机体验好
自然而然的Ajax支持,无论是交互性、还是性能、样式、美观程度。
■ 做您擅长的,其余的留给我们:开发过程愉悦
您只需关注您的核心业务逻辑,其余繁琐的事情由AOM 承担
基于 Apusic OperaMasks,长久以来困扰您的Web开发难题已经不复存在,您会经历一种全新的Web开发体验,您在整个开发过程中会一直保持轻松与愉悦。“轻量”、“简单”、“高交互性”,AOM的核心思想与Web 2.0的本质殊途同归,随着您对 AOM 的了解逐步深入,相信 AOM将成为您的Web 2.0应用的推动器!
产品开发商:金蝶软件(中国)有限公司
☉ 金蝶软件的ERP高端产品 金蝶EAS 基于OperaMasks构建;
☉ 基于AOM进行构件的定制与二次开发,再在其他研发组中推广使用,实现技术阶梯性的工业化生产;
☉ 对展现样式,人机体验有严格的定制需求;
☉ 具有苛刻的性能要求,所有页面在生产环境仿真压力测试中打开时间,包括所有业务逻辑与页面渲染时间在内,不能超过三秒;
☉ 成立专门的性能优化虚拟团队持续监测与优化性能,OperaMasks研发团队也参与其中。一年以来,OperaMasks引擎自身渲染效率提高60%以上,渲染过程内存分配量减少90%以上。


客户感言
作为金蝶软件集团的主力ERP产品,EAS对所有选用的基础框架都非常严格。经过多次严格的内部评审与测试,我们认为OperaMasks有能力支撑产业化的大规模软件生产,并为运行期提供可信赖的性能与稳定性。通过一年多的使用,OperaMasks的表现超乎了我们的预期。它在产品稳定性、开发效率提升方面都给予了我们相当的支持和信心。
应用开发商:深圳怡软公司
☉ 基于OperaMasks自主开发了承载2000多人跨地域的协同办公平台;
☉ 从基于JSP/Servlet技术迁移到OperaMasks技术;
☉ 门户风格的可定制个性化页面;
☉ 系统内的即时消息服务,对构件灵活性提出较高要求;
☉ 具有大量的动态自定义公文、单据。


客户感言
刚开始使用OperaMasks时,由于缺乏资料,走了一些弯路。但OperaMasks社区的逐步成熟和产品的不断完善,以及团队的迅速支持响应给予了我们极大的帮助和信心。在项目的中后期,OperaMasks灵活快速的开发方式节省了我们大量的工作。在系统正式上线运行后,其性能表现完全达到我们的需求。我们也很高兴看到OperaMasks无论产品自身和参考资源都在快速成长,希望我们本土的开源技术一路走好。
最终客户:四川发改委
☉ 为配合刻不容缓的抗震救灾工作,由四川发改委两名信息部门人员用三天时间基于OperaMasks开发完成《中央投资项目建设进度/情况报送系统》并上线运行;
☉ 上线当天即承受超过200实时并发访问量,表现良好;
☉ 个别页面输入字段达120个以上,OperaMasks团队提供专项支持服务改善性能。同时令Opera-Masks引擎渲染存在大量输入构件的页面时效率提高20%以上。

客户感言
这次开发任务人手少、要求高,尤其是时间上的压力非常大。我们两名技术人员经过对OperaMasks短时间的学习,迅速上手,终于在三天时间内将面向全省各县、区、市的在线系统迅速上线投入使用。这得益于OperaMasks易学易用,灵活快捷的开发环境,以及稳定高性能的运行支撑平台。非常高兴看到我们的国产开源软件在灾后重建工作中起到了实质的作用。