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

10-11-28 freesea1
也许还没到达一定的知识层次,关于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);
		}
	}

<p>

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

然后找到DomainEvents类的这个方法

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

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

虽然有看到更底层的封装如:

public class DomainMessage extends EventMessage

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

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

         

oojdon
2010-11-28 10:34
就是拦截领域消息,然后用jdk的future异步执行

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

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

oojdon
2010-11-28 12:10
2010年11月28日 11:54 "freesea1"的内容
要是有个小实例就好了 ...

http://dddsample.sourceforge.net/

用spring写的,这是DDD那本书详细分析的一个案例,event处理用的JMS。

不过还有jdon版

http://www.jdon.com/jdonframework/download.html

还有jdonmvc+spring版本

http://code.google.com/p/jdonmvc/source/browse/#svn/trunk/sample/dddsample

有时间了我会写jdonmvc+jdon的dddsample

[该贴被oojdon于2010-11-28 12:16修改过]

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

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

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

猜你喜欢
2Go 1 2 下一页