intra-mart Accel Platform / 介绍

第4版 2014-04-01

«  3.1. im-BizAPI(Java业务组件群)概要   ::   Contents   ::   3.3. intra-mart的系统总体架构  »

3.2. intra-mart 的应用程序开发概要

在使用了 intra-mart Accel Platform 的应用程序开发中,开发者需要生成在浏览器上显示的用户接口和在Web服务器上运行的业务逻辑。

脚本开发模式中会生成展示页(HTML文件)和Function Container(服务器端JavaScript文件)两个文件。此时,可通过灵活运用框架中准备的模块群(im-BizAPI)进一步提高开发效率。
../../_images/app_dev_jssp.png
JavaEE开发模式中,使用JSP文件和Servlet等Java组件开发。此时也可通过在使用JavaEE框架(Seasar2(SAStruts+S2JDBC))时同时使用框架中准备的模块群(im-BizAPI),来进一步提高繁杂的通过JavaEE进行的Web系统开发的效率,同时可促进业务组件的重复利用。
../../_images/app_dev_java.png

注解

两种开发模式的正确使用

  • JavaEE开发模式

    通过重复利用组件和并行分布开发,可在大规模系统开发中提高开发效率。

  • 脚本开发模式

    由于不是在组件总体结构中,而是在一个文件中记述业务处理的方式,所以由少数人进行的系统开发时,开发效率较高。

    • 但是即使对于大规模开发,也可通过在组件可再利用性较低的画面(主表维护等)中使用轻量编程等手段,将双方结合起来削减成本(全部用JavaEE开发的话费用会变大)
    • 可通过两个模式共同使用im-BizAPI(Java业务组件)。

3.2.1. 通过脚本开发模式进行应用程序开发

“Function Container”中,业务逻辑是用JavaScript来记述的,由“展示页面”来调用执行。其桥梁功能由intra-mart实现。

3.2.1.1. Presentation Page

展示页面与用户接口部分相当。扩展名固定为“.html”。
开发者或末端用户使用“e Builder(脚本开发功能)”生成基于Web的展示页面。另外,由于展示页面是HTML文件,在Web系统开发中也可只切分出用户接口部分将工作交由主页设计器进行。
通过在使用主页生成工具等生成的HTML文件中添加<IMART>标签来建立起与Function Container中的JavaScript的关联,即可调用。另外,也可添加调用用户定义函数的<IMART>扩展标签。
完成的HTML文件可通过进行页面登记马上与数据库联动进行高速运行。
../../_images/app_dev_jssp-pp.png

3.2.1.2. Function Container

与多层次体系结构中在Application Runtime工作的业务逻辑部分相当。扩展名固定为“.js”。由于Function Container和展示页面是一个集合,使用相同的文件标记名。

开发者在Function Container的中记述并生成从展示页面调用的JavaScript。
具体来说,就是从 intra-mart Accel Platform 中提供的功能中选出需要的对象和函数群,在“e Builder(脚本开发功能)”中用JavaScript记述并生成在服务器端使用这些对象和函数群工作的业务逻辑。操作数据库的SQL语句也记述在Function Container中。
由于与实际RDB的连接和SQL发行是通过 intra-mart Accel Platform 执行的,开发者不需要意识到详细的会话管理和事务管理。

所生成的业务逻辑会被从展示页面的<IMART>标签调用执行。 intra-mart Accel Platform 中所提供功能的详细内容被记述在“intra-mart API列表”中。
由于可用JavaScript来记述这些脚本,所以可以不使用被认为难以学习的Java,作为一直以来主页生成的延伸与数据库联动开发真正的Web系统。
另外,在 intra-mart Accel Platform 的脚本开发模式中,为了提高开发效率和可维护性实施了大幅功能强化。
  • 通过使用最新JavaScript引擎实现高速化
  • 通过简单URL简化其他系统与各画面的联动。
  • 支持异常处理
  • 添加Validation功能
  • 支持文件处理时的Stream(变得可处理大容量文件)
  • 提供访问新Database用的API(实现了输出SQL语句的机构)

3.2.2. 通过JavaEE开发模式进行应用程序开发

作为不依存于OS及Web应用程序服务器的共享平台,通过JavaEE进行的Web系统开发开始变得普及起来。
但是,通过JavaEE进行的开发是以Java为基础的,因此从需要面向对象等高级知识和经验和需要JavaEE前提知识的方面看,入门的门槛高度是一个问题。而且,只要遵循JavaEE开发规约,之后无论如何都能实现的自由度会对初学者来说会成为额外负担,也会因此引起由于SE不同而形成不同开发风格的现象。
intra-mart Accel Platform 中,通过使用JavaEE框架(Seasar2(SAStruts+S2JDBC))解决了这些问题,大幅提高了JavaEE开发模式的开发效率。

3.2.2.1. JavaEE开发框架

JavaEE上的Web系统开发中,构造上共享部分很多,可通过使用该事实进一步大幅提高开发效率。 intra-mart Accel Platform 中,以JavaEE框架的形式提供了JavaEE开发所必需的全部共享处理,由开发者来生成组件。

3.2.2.1.1. JavaEE开发模式中灵活运用框架时的优点

JavaEE开发时使用JavaEE框架具有以下优点。



基于JavaEE的开发基础平台
隐藏需要高级知识的部分,由开发者生成应用程序逻辑组件。
即使没有前提知识也已完成的系统是推荐采用的JavaEE模式,
容易实现MVC模式(可统一程序构造提高可维护性)。
提高开发效率
由于框架中提供了全部共通部分,所以可通过提高组件的再利用性
来提高团队整体的开发效率(通过团队内共享组件通过并行分布开发以缩短开发期间)。
提高可维护性
新建添加组件时,完全不需要变更原来应用程序的机制。
另外变更功能时也只修正相应组件,不影响其他部分的机构。
../../_images/app_dev_fw-custom.png
缩短测试工程期间和提高品质
在测试工程中不需要确认框架部分,另外问题发生时也便于切分。
另外,由于可方便地将DI Container测试用的模拟部件(模型、假实现)
替换成正式组件,所以可很方便地使用模拟组件。
但是,引进时存在以下使用框架的规则。
  • 各组件的职责、应该实现的内容已确定。

    根据规则,设计时不需要部件化/共享化等的机制
  • 尽量避免在一个组件中实现多种功能

    若过于追求功能,则程序的可读性、可维护性、可再利用性都会降低

通过遵守此规则,可统一应用程序的构造,形成一个只要理解了框架,无论谁都可以维护的构造。

3.2.2.2. Seasar2

Seasar2是为了使用J2EE/JavaEE有效进行大规模开发的框架,与传统方式相比,可削减所需要的设定文件,通过分离依存性的编码来进行高效的程序开发。
以DIContainer的“S2Container”和提供AOP功能的“S2AOP”为中心,简化与访问数据库的“S2Dao”、“S2JDBC” Struts框架的联动的“S2Struts”、“SAStruts”。开发和公开了用于生成动态Web页面的“S2JSF”等各种相关软件及工具。
intra-mart Accel Platform 中,在JavaEE开发框架中采用了以下两个Seasar2产品。
  • SAStruts(Super Agile Struts)
展示层(画面周边)的框架封装了作为Web框架实际标准的Struts,更加便于使用的框架
  • S2JDBC
Seasar2标准的数据库访问框架以提高数据库编程开发效率10倍以上为目标而生成的O/R Mapper

3.2.2.2.1. SAStruts和S2JDBC的定位

SAStruts和S2JDBC在Java系统整体结构(JavaEE BluePrint)上覆盖了以下区域。

../../_images/blueprints_seasar.png

注解

  • 什么是JavaEE Blue Print

    JavaEE应用程序的开发指南中,并未对功能方面式样进行说明,而是以示例应用程序为例题对应该如何设计才能构筑系统进行了说明,起到了“范本”和“教科书”的作用。

3.2.2.3. 使用SAStruts和S2JDBC进行应用程序开发

在使用SAStruts和S2JDBC的应用程序开发中,生成Action、Form、JSP、DTO、Logic、Service、Entity等组件,按照以下流程来处理来自客户端的请求要求。
../../_images/sa_s2jdbc.png
组件名 职责
Action
  • 接收来自客户端的请求(表单),执行业务逻辑
  • 将业务逻辑切分为服务,通过Action调用(也可在Action内定义)
Form
  • 存放画面输入信息
  • 动作中用于接收请求参数的对象
  • 与Struts的ActionForm类相当
JSP
  • 画面
  • 在动作处理后被Forward,生成返回给浏览器的HTML
  • 组合使用SAStruts标签库、EL式、JSTL等
  • EL式(Expression Language)

    用 ${~}格式记述,可简化记述对象访问的资源
  • JSTL(Java Server Pages Standard Tag Library)

    JSP2.0标准化标签
DTO
  • 数据对象
  • 存放Form和Entity以外的数据对象
例子.画面显示用对象、检索条件等。
Logic
  • 业务逻辑
  • 参照DTO(检索条件),调用Service(DB访问)
Service
  • 业务逻辑
  • 实体的操作
  • 定义数据库访问处理
在动作中定义后,动作处理中会混有数据库访问处理,发生源代码庞大化的问题
为了共享数据库访问处理,从动作中切分出数据库访问处理部分而生成
Entity 与数据库表映射的对象

3.2.2.4. TERASOLUNA Global Framework

TERASOLUNA Global Framwork指的是NTT数据公开的Java开发框架Stack。( http://terasoluna.org/ )
如下图所示,框架Stack的构成是“SpringMVC 3.2+SpringFramework 3.2+JPA2.0,MyBATIS2.3.5+共享库群”。
../../_images/tgfw_stack_on_iap.png

«  3.1. im-BizAPI(Java业务组件群)概要   ::   Contents   ::   3.3. intra-mart的系统总体架构  »