也许还没到达一定的知识层次,关于domain Events有疑问搞不清楚,希望道友指教

也许还没到达一定的知识层次,关于domain Events有疑问搞不清楚,希望道友指教

在J道逛了很长一段时间,记得以前在逛的时候,好多东西都看不懂,发现原来自已

缺少某些基础概念知识,拼命的去查找J道文章中的相关概念。因为以前都是传统的

面向过程编程,不知道还有这样的用法,现在终于明白了很多,而且讨论的大部份东

西似乎越来越明白其中的意思了,太高兴了,特别感谢banq老师,在J道学到真正的

软件开发方法方面的知识,引导我们向更艺术的建模和实现方式。J道里面看到推荐

DDD,我又去买了DDD书籍,还有设计模式(之前这些也有所了解,但是还没有实战过

,虽然明白但是一旦看代码又感觉陌生了)等,因为我确定我以后软件开发都会往这

个方向下去。有时候挺激动的,感觉这是正确的方向。在J道看到一系统列的文章,几

乎都看遍了,特别是关于DDD+ 异步架构+domain Events 等,自己虽然知道大概

的方向,但是在部份细节方面像无头苍蝇一样了,找不到具体的方向。比如要实现一

个简单的留言本功能,在以前的开发方式那是很快的,建数据表,然后页面直接去操

作sql语句就搞定了。但是一旦转成面向对像编程,特别是DDD建模方式,脑子就一片

空白,无法下手(虽然也看了DDD,需要反复研读理解,多少也明白了一些);现在勉强找到了一些实体和值对象。为了决心走DDD方式实现这个简单留言本之类的功能,不再回头走老路。但是具体实现似乎又不知道该怎么走,只知道DDD的核心是领域模型,系统架构因该分为 表现层 领域层 和持久层 ,领域层又分为应用层和领域模型
,业务逻辑属于应该放在模型层,但是知道这些也不道怎么具体去实现具体细节,只好去看一下jivedon4.1的源码,希望可以参考一下,再配合banq老师在论坛上写的关于domain events 救世主的系统列文章。我的目的很简单,目的是想了解jivedon是怎么从用户的角度实现新增删除的之类的。因为jivedon用到很多技术,具体的一些jsp也看不懂(里面都是struts标签之类的,很久以前虽然有了解了些,但现在都忘了),没办法只能去看SRC目录下的源码的。

在看到 ForumThread模型中关于订阅部份 ,也就是 Domain Events – 救世主 文章说的,我想搞清楚这些消息是怎么传递的,好像看起来有点吃力:(

比如:Domain Events 救世主的文章说这是回复主题方法中的


public synchronized void addNewMessage(ForumMessage forumMessageParent, ForumMessageReply forumMessageReply) {
try {
forumMessageReply.setParentMessage(forumMessageParent);
forumMessageParent.setForumThread(this);
forumMessageReply.setForumThread(this);

state.addMessageCount();

state.setLastPost(forumMessageReply);
state.setModifiedDate(forumMessageReply.getModifiedDate());
this.forum.addNewMessage(forumMessageReply);

this.domainEvents.subscriptionNotify(new ThreadSubscribed(this));
// this.domainEvent.subscriptionNotify(new
// AccountSubscribed(forumMessageReply.getAccount()));

// async exec add tree that cost more performance.
this.domainEvents.addChildZToThreadTree(this);
} catch (Exception e) {
System.err.print(
"error in forumThread:" + this.threadId + " " + e);
}
}


this.domainEvents.subscriptionNotify(new ThreadSubscribed(this));
这句,领域事件向技术框架发送一个通知的指领

然后找到DomainEvents类的这个方法


@Send("subscriptionNotify")
public DomainMessage subscriptionNotify(Subscribed subscribed) {
return new DomainMessage(subscribed);
}

只返回一个领域消息,但是好像什么事都没做呢,他怎么做到通过这一句就可以把通知道知识订阅者呢,所以这点想不通

虽然有看到更底层的封装如:
public class DomainMessage extends EventMessage

和jdon中的com.jdon.async包下的一些处理方试

但是这些是怎么触发的呢,到现在搞不清楚,希望有人指导一下。

就是拦截领域消息,然后用jdk的future异步执行

2010年11月28日 10:34 "oojdon"的内容
就是拦截领域消息,然后用jdk的future异步执行 ...

具体怎么拦截呢,比如在**包中通过什么类,然后取得环境的什么之类的,能详细点呢,因为目前还比较菜,越详细越好,或者如何才能很好有效的去学好DDD方向建模和实现,要是有个小实例就好了(最好是脱离jdon框架,因为jdon很多东西都封装好,看得比较吃力,最好一些小例子)

2010年11月28日 12:10 "oojdon"的内容
有时间了我会写jdonmvc+jdon的DDDsample ...

多谢哦,我要是有你这种水平,现在因该很轻松自如的完成很多工作了,多好呀,看来还得努力,现在为了完成一些功能还在抓头皮呢,呵,虽然以前的那种面向过程的很快,但是那种太不优雅了,而且不利扩展和维护。

也许我没有打好基础,有些东西看书之类好像又明白了,一旦看到代码转来转去,最后就晕了,而且java也学得不怎么样,像并发之类的,根本没看过,比如你说的使用拦截AOP之类的吧,也不怎么懂,只知道个大概,看来好多东西要学呢

>>有些东西看书之类好像又明白了,一旦看到代码转来转去,最后就晕了

<<若果我没估错,你到达朦胧的阶段了,冲破他吧,然后豁然开朗了。

>>比如你说的使用拦截AOP之类的吧,也不怎么懂,只知道个大概

<<当你接触具体代码时,知识面广是必须的,AOP实质上是几种基本设计模式的组合使用(主体代理模式,当然理解为拦截最轻松),还有IOC模式等。成熟产品出来,必定带着丰富的技术,已经掌握基础,则可以快速扩展自己的技术领域,掌握不足也不怕,在其中你可以得知对于一个成功案例来说,自己缺少了什么。遇到难题也不怕,像这样发个帖子,有能力的人总会回复你的。祝你学习顺利~o(∩_∩)o

2010年11月28日 12:48 "SpeedVan"的内容
遇到难题也不怕,像这样发个帖子,有能力的人总会回复你的 ...

是呀,在论坛学习到很多东西,很有道友的热情回复,有时候想想很感动的,努力学习,天天向上,呵呵

原来没看jdonframework.doc ,这里写得很清楚,难怪一开始就拿jivedon来肯,怪不得这么吃力,现在看了jdonframework,似乎好很多了

楼主问的 也是我一直疑问的...

还有,如果异步的话 事务怎么去控制?
工作较紧 断断续续的 还没看明白.

2011年01月20日 23:59 "cgttian"的内容
如果异步的话 事务怎么去控制 ...

可见Axon框架的Managing transactions in asynchronous event handling章节: http://www.axonframework.org/docs/0.7.x/