有关手机客户端炒股软件的设计考虑

13-07-21 rayworks

各位好!本人刚接触DDD相关的内容,目前的工作是对先前遗留的逻辑实现与界面展现混杂的代码进行一定的调整,在实践时已经做出的工作有识别Domain Object,分离出业务逻辑。而有些实时数据信息在交易时间段需要15秒左右更新一次(目前采用简单轮询服务器的方式),所以设计上考虑作为内存中驻留的数据。

对于上述的实时数据处理仍然有以下的疑问,还请大家不吝赐教,谢谢!

1. Domain Model 数据是否可以直接与展现层相关联,如果不是,那中间需要有DM -> DTO的转换,由于更新较快且涉及大量的数据拷贝与转化处理,手持设备上性能可能受到影响;

2.为了不影响主线程展现,考虑把业务逻辑处理部分放在另外的WorkThread中进行。而对于展现层界面更新时,个人想到的是在WorkThread创建并将转换好的DTO投递到主线程队列中,然后经过界面与逻辑层的接口实现更新。不知是否有更好的处理办法。

banq
2013-07-22 13:43

2013-07-21 12:42 "@rayworks

"的内容

Domain Model 数据是否可以直接与展现层相关联 ...

当然直接关联,MVC模式的Model就是Domain Model。

rayworks
2013-07-22 19:32

@banq 感谢您的回复。

让我更清楚的解释下,如果DM直接暴露给UI,由于View所显示的数据往往与DM是不对等的。这中间势必涉及到从DM到展示数据的转化,是否有必要将DM转化为Presentation Objects直接为View所用,或是直接由View从可见的DM中取的数据自行处理。

我考虑的一点是,如果直接在View中引用到DM可能导致后续对Model的任何改动都对UI层产生了影响,也不易于后期的维护扩展。

banq
2013-07-23 07:08

2013-07-22 19:32 "@rayworks

"的内容

这中间势必涉及到从DM到展示数据的转化,是否有必要将DM转化为Presentation Objects直接为View所用, ...

从读写两个角度看这个问题,写操作也就是客户端向后端提交模型,那么这个模型肯定应该是Domain Object,如果觉得有不一致的地方,那是领域模型没有设计好。注意读了再写也属于这个范畴。

从读操作角度考虑,显示查询的数据可能是几个Domain Object的混合,你可以直接将这个几个Domain Object字段直接显示在View上,如果需要合成一个DTO也可以。

客户端资源小,临时对象太多,影响性能。

[该贴被banq于2013-07-23 07:08修改过]

rayworks
2013-07-23 08:39

@banq 谢谢大侠及时的解惑。

看来先前我是陷入定势的思维中了,现在会结合您的意见再考虑相关的设计方案。再次感谢您!