3.2. intra-mart 的应用程序开发概要¶
項目
在使用了 intra-mart Accel Platform 的应用程序开发中,开发者需要生成在浏览器上显示的用户接口和在Web服务器上运行的业务逻辑。
脚本开发模式中会生成展示页(HTML文件)和Function Container(服务器端JavaScript文件)两个文件。此时,可通过灵活运用框架中准备的模块群(im-BizAPI)进一步提高开发效率。
JavaEE开发模式中,使用JSP文件和Servlet等Java组件开发。此时也可通过在使用JavaEE框架(Seasar2(SAStruts+S2JDBC))时同时使用框架中准备的模块群(im-BizAPI),来进一步提高繁杂的通过JavaEE进行的Web系统开发的效率,同时可促进业务组件的重复利用。
3.2.1. 通过脚本开发模式进行应用程序开发¶
“Function Container”中,业务逻辑是用JavaScript来记述的,由“展示页面”来调用执行。其桥梁功能由intra-mart实现。
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模式(可统一程序构造提高可维护性)。 提高开发效率 由于框架中提供了全部共通部分,所以可通过提高组件的再利用性来提高团队整体的开发效率(通过团队内共享组件通过并行分布开发以缩短开发期间)。 提高可维护性 新建添加组件时,完全不需要变更原来应用程序的机制。另外变更功能时也只修正相应组件,不影响其他部分的机构。 缩短测试工程期间和提高品质 在测试工程中不需要确认框架部分,另外问题发生时也便于切分。另外,由于可方便地将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的定位¶
コラム
什么是JavaEE Blue Print
JavaEE应用程序的开发指南中,并未对功能方面式样进行说明,而是以示例应用程序为例题对应该如何设计才能构筑系统进行了说明,起到了“范本”和“教科书”的作用。
3.2.2.3. 使用SAStruts和S2JDBC进行应用程序开发¶
在使用SAStruts和S2JDBC的应用程序开发中,生成Action、Form、JSP、DTO、Logic、Service、Entity等组件,按照以下流程来处理来自客户端的请求要求。
组件名 职责 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+共享库群”。