技术开发 频道

基于Jazz技术构建企业级Web2.0应用(1)

【IT168 专稿】

    Jazz技术平台是一个可伸缩、可扩展的团队协作平台,用于无缝地集成整个软件生命周期中的任务。同时Jazz技术平台也为Web2.0应用程序的开发和扩展提供了有用的框架,开发人员可以很容易地利用它开发出基于Ajax和REST编程模型的Web2.0应用。在REST服务端,Jazz提供一个REST服务框架,此框架抽象了处理REST请求的细节(HTTP、数据封装和解封等)。REST服务通过Java接口进行定义,该Java接口和相应的基于EMF的存储模型在运行时用于对请求和响应进行封送处理。在Web UI端,Jazz基于开放源代码的Dojo Toolkit,提供一个Jazz Ajax Framework(JAF),从而简化了Ajax开发。

    本系列文章首先概述Jazz平台技术架构和编程模型,然后以开发人员熟悉的PetStore为例,详细阐述使用Jazz技术开发企业级Web2.0应用的全过程。其中PetStore与Jazz技术平台间的依赖关系如图1所示。


    图 1. PetStore与Jazz平台依赖关系

    通过阅读本系列文章,您将获得以下帮助:

    · 了解Jazz技术架构和编程模型。理解如何利用Jazz技术进行应用组件开发

    · 了解如何通过Jazz提供的基于EMF建模的O-R Mapping机制实现数据模型持久化

    · 了解如果通过Jazz提供的Process构件来完成业务流程的管理和定制

    · 了解如何通过Jazz提供的Ajax框架(JAF),开发出基于Ajax和REST编程模型的Web2.0应用

    本文是该系列的第一部分,将介绍Jazz平台的技术架构和编程模型,并完成PetStore示例应用开发的第一步——数据模型设计与实现。

    Jazz技术概览

    技术架构

    Jazz具有模块化、可扩展的体系结构。Jazz采用Eclipse插件体系,开发者可以通过提供Eclipse bundle对Jazz功能的进行扩展。围绕某一功能而开发的若干个bundle被组织到一个Jazz构件中,目前Jazz的构件如图2所示


    图 2. Jazz Platform

    图中的每个构件实现一定的功能。其中Repository和Team Process是必须的,它们构成Jazz的内核。其中Repository负责对数据进行处理、完成O-R 映射和数据持久化等,是所有数据驱动型应用必须依赖的组件。目前Repository组件提供了对Oracle、DB2和Derby等主流数据库的操作,它通过IRepositoryItemService和IQueryService提供上层API来对数据的增、删、改、查进行统一封装,然后在根据用户的数据库选择和配置信息,翻译成具体数据库厂商支持的SQL再调用底层的JDBC来实现对具体DBMS的操作。从而屏蔽了不同数据库厂商对SQL标准实现不同的问题,为上层应用在不同数据库上的移植提供了解决方案。在本系列文章的第二部分有对Repository组件的详细介绍和使用。Process组件负责Jazz的业务流程管理,它为应用程序提供了AOP的底层支持。在本系列文章的第三部分有对Process组件的详细介绍。这两个核心构件不依赖任何其它构件,因而可以被任何其它构件所依赖。

    编程模型

    基于Jazz平台的开发和与基于众多主流的J2EE框架开发类似,都采用MVC的分层模型。值得一提的是Jazz提供了各种不同形式的服务,如Restful服务、RPC服务和Http RAW服务,因此它为不同种类的客户端接入提供了相对统一的基于service的接口,无论是基于Ajax的Web UI还是基于RCP的Eclipse UI都可以统一的使用同一套后端提供的服务,无需做任何修改,它为不同类型的UI接入提供了内在的支持。其模型如下图3所示:


    图 3. Jazz Framework

    在一个典型的Web应用中,一个Jazz构件可能包含的bundle包括:

    · Common bundle:用于数据模型和服务接口的定义,类似于MVC的Model层

    · Service bundle:用于服务的实现,类似于MVC的Controller层

    · Web UI bundle:用于用户界面的实现,类似于MVC的View层

    因此Jazz把一个典型的Web开发转化成了Eclipse插件的开发,应用程序通过对不同扩展点进行扩展实现相应的功能并具有很强的重用性和可扩展性。一个Jazz构件可以依赖其它Jazz构件,并调用被依赖构件提供的服务。而应用程序只需要关注对不同服务的调用,服务的实例化和维护由Jazz平台进行提供,简化应用程序开发,体现了控制反转(Inverse Of Control)的思想。有一点需要注意:Jazz构件之间的依赖关系是单向的,不能形成直接或间接的循环依赖(即不能出现A依赖B,B依赖A;或A依赖B,B依赖C,C依赖A)。

0
相关文章