Repository的事件驱动

在零星的DDD DCI概念中,我们了解了也掌握了一些软件的控制权,同时我们还在为信息如何交流抓头,当然有很多方法,事件驱动就是一个很好的办法,同时怎么进行事件驱动呢?第一,可以用 EventBar方式,这种方式需要写一个事件总线。

我也想了想,感觉用Repository比较合适,我和liontseng的风格一样,就是喜欢用代码来说明问题,因为我就是liontseng,密码忘记了。。。重新注册一个。


var userRepo = global.userRepo;
userRepo.listen({_id:12131},{eventType:userRepo.updatePassword},handleFun);
function handleFun(user){
// 当 id == 12131 的用户更改密码时,会回调这个函数。
}

这只是说个例子,我正在编写相关的架构,弄好了和大家分享分享。

当然,这里的代码并不是说明,我们必须监听类是 增删改 的,不只限于此,包括有人find某个的时候,也可以进行监听。
还有就是 repository 这个概念真的不错,如果实现的很好,不必考虑数据库和事务,因为在内存中的对象始终就是一个。
user001 在外面应用的和 repository 中的是一个。

我还想一个问题,其实实际的对 对象进行 数据库的 store 其实不必显式来做,我觉得store TO DB 对于软件系统不是核心。未来将开启BANQ大哥说的 IN-内存 的时代,呵呵。

很不错,我觉得应该有一种Repository框架出现,它是Hibernate等ORM以协调对象和数据库为目的不同,就是让数据库为对象服务的,是对象的奴隶,而不是平等。

在这样Repository框架中,无疑是以In-memeory对象为主,楼主的事件驱动,以及保证内存唯一性是其主要功能。

另外,如下面的代码


global.userRepo.findById(123,handle);
function handle(err,user){
user.listen({name:global.userRepo.UPDATE_EVENT},handle2);
}
function handle2(olduser,updated_name){
// 处理name的改变,只是说明问题,代码可能不是很符合
}

这段代码还说明,我们不只是可以直接通过 userRepo 监听,其实得到具体entity也可以对其进行监听,当然,原理,都是entity内部持有userRepo的引用。

哪位帮忙提供一下DCI的出处,我怎么在baidu及google都没有找到这个东西。多谢。