忙了一阵子, 把我学习WD的计划打乱了,今天终于有点时间可以开学了, 先转篇网文先.
原文地址: http://moonroom1.spaces.live.com/blog/cns!7578AFCD9C32F7B1!443.entry
Web Dynpro ABAP 系列: WDA Architecture (1)
上图是经典MVC模式, 通过将软件结构分离为Model, View, Controller三层, 在Controller负责对请求的转发以及与Model 层的交互, 而View层则只负责屏幕元素的展现功能, 不关心具体的业务逻辑实现.
而在WDA实现中, 是一种修改后的MVC模式, 它没有具体的Model对象, 而是采用如Function Module , Class Method作为业务逻辑的封装. 如图:
WDA整体架构基于Component模型, 可以认为一个Component负责一个具体业务, 它可以通过Component interface调用其它组件提供的功能. 在Component内部,有Window, View, Controller组成. Window可以认为是应用的屏幕交互元素的容器, 它可以包含多个View, 而View中则是包含了具体的屏幕元素的定义,譬如其元素布局与赋予按钮的事件处理方法等. 而在Controller中则负责处理与屏幕元素的交互, 调用模型层业务逻辑等功能.
http://moonroom1.spaces.live.com/blog/cns!7578AFCD9C32F7B1!446.entry
Web Dynpro ABAP 系列: WDA Architecture (2)
一个WDA component可以分为对外与对内两部分, 外部component如果要使用此component提供的服务,不能直接去调用,而是通过如Interface controller, Interface view来实现.
Controller中一般包括Context, Attribute. 这两者都可以持有数据, 不同之处在于前者是大多用于对于UI元素的属性绑定, 类型为结构或表类型. 而后者类型还可以是对象引用类型.
Window中可以包含多个view, view之间可以定义导航链接. 而且在view中可以定义view container element, 在其中包含其它view.
WDA中比较有意思的是可以在Controller中自定义事件, 这样可以注册事件处理器到事件上. 而这种机制也用在了Component的重用上. 比如Component B使用Component A时, 可以在B中定义方法作为事件处理器注册到A上. 这样,当在A中事件触发时, 系统就会调用B中的方法.