加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex – DDD和异步存储库

发布时间:2020-12-15 01:43:56 所属栏目:百科 来源:网络整理
导读:我们正在使用RMI和JMS连接到 Java后端的富客户端(用Flex编写).我正在考虑以DDD方式实现客户端,以便它具有域对象上的CRUD操作的存储库. 然而问题是所有后端通信都是异步的,我无法强迫客户端等待继续直到收到响应.这意味着,在较低级别,我可以在远程对象上调用
我们正在使用RMI和JMS连接到 Java后端的富客户端(用Flex编写).我正在考虑以DDD方式实现客户端,以便它具有域对象上的CRUD操作的存储库.

然而问题是所有后端通信都是异步的,我无法强迫客户端等待继续直到收到响应.这意味着,在较低级别,我可以在远程对象上调用方法,并获得AsyncToken作为返回值.然后我可以听到asynctoken上的事件,看看是否已经通过或者失败了.然而,这打破了存储库背后的主要思想,以隐藏客户端的技术细节.

我猜可能有两个选项:

>让存储库中的方法返回asynctoken,这对我来说似乎是一个混乱的解决方案
>让方法返回一个空集合(例如,对于findAll),它将在收到响应时被填充.

两者都有利有弊,我想得到你们的一些意见.

(更进一步,什么是好的缓存策略?依赖于这种情况,我不希望每次我请求所有实体时,存储库都会调用服务器.这将如何影响存储库上方法的签名. )

解决方法

Flex和Flash Remoting本质上是异步的,因此与这种模式作斗争会给你带来很多麻烦.我们的服务代表从每个方法返回AsyncToken,我们从来没有遇到过问题.

如果要确保应用程序在结果/错误恢复之前不呈现新视图或执行其他逻辑,则可以执行以下操作:

>为自定义事件附加一个事件监听器,该事件将调用您的“发布结果/故障代码”
>拨打异步电话
>处理结果/错误
>调度自定义事件以从#1触发您的侦听器

请记住,每次进行异步调用时,这都会导致很多恼人的boilterplate代码.我会非常仔细地考虑你是否真的需要一个同步执行路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读