我是ADF的新手,来自.Net背景。我的目标是为我的应用程序转向DDD,以便代码被封装并代表我的业务流程。该计划促使我使用CQRS将我的域模型/命令与用于查询和显示的VO分开(可能使用ESS或SOA组件将事件推送到单独的数据存储,但最初使用单个数据库)。
我无法在ADF,优缺点等中找到有关此实现的任何信息。
我想知道: 在ADF世界中,我尝试的是否有意义?为什么/为什么不呢? 在这种情况下使用ADF时可能会遇到哪些挑战。
答案 0 :(得分:0)
副手?我认为你过度设计了这个。我将从您尝试使用CQRS解决的ADF架构问题开始?
ADF有4"堆栈" - ADF BC是数据堆栈 - 基于表/视图的EO / VO,如果需要与SOA服务集成,则可以基于Web服务创建VO ADF Faces是服务器生成的UI层。 ADF Controller处理页面到页面导航。 ADF模型是位于ADF BC和ADF Faces之间的数据抽象层,允许视图层通过直接连接在数据层中进行数据移动和操作 - 保持层/层分离。
要操作VO,您可以操作模型绑定迭代器 - 它引用VO行集迭代器和/或直接在VO(不是我选择的设计)或应用程序模块(我选择)上公开自定义Java行为然后通过按钮/链接或直接执行来暴露UI,同时保持UI与模型和数据层的分离。 所有这些代码都是由JDeveloper向导以及工具和编辑器为您生成和维护的。因此,只需添加自定义代码。
因此,ADF实现了一种模型 - 视图 - 控制器设计模式。 我没有看到你想通过在CQRS中添加另一层抽象来解决ADF提出的问题。