请问jdon框架今后是否考虑采用Qi4j?

13-04-18 tecentID3618B
请问jdon框架今后是否考虑采用Qi4j?

banq
2013-04-18 14:07
这两个框架是相竞争的吧

Qi4j通过组合实现DDD,而Jdon框架提供Event事件来实现DDD, Qi4j主要通过Mixin将实现类切入接口,实现DCI比较好。Jdon框架提供开发一个异步 并发 高吞吐量的系统,性能上要比Qi4j重视多。

tecentID3618B
2013-04-18 16:17
jdon中就不能采用相同的思想实现DDD吗?事件模型和组合不矛盾吧?组合是领域层的事情,事件是技术架构的机制,业务和技术不是可以分离的吗?

[该贴被tecentID3618B于2013-04-18 16:19修改过]

banq
2013-04-18 16:43
2013-04-18 16:17 "@tecentID3618B

"的内容

jdon中就不能采用相同的思想实现DDD吗 ...

Mixin有类似黑客技术,强力破解,不算优雅;事件是语义词,业务和技术通用,如美国发生爆炸事件等等。

Mixin已经过期了,下一个Big Thing是事件模型:http://www.jdon.com/44943

tecentID3618B
2013-04-18 22:07
谢谢banq老师,关于事件和mixin各自的特点和区别,以及为什么mixin过期和不够优雅,能否有具体的理由呢?作为程序员,面向的接口编程、职责分离不是很优雅吗?事件模型会不会感觉反而有点复杂和不便呢?

tecentID3618B
2013-04-18 22:18
以下是我自己的感悟:作为最复杂的生物神经网络,其运行机制其实就是事件模型,通过生物电流向外传播“异步事件”,通过众多神经元的并发响应和递归执行,最后形成了我们复杂的人脑计算,但是很难想象采用“事务脚本”模式的编程模型可以模拟出我们大脑的思维过程,这或许就是事件模型和传统编程模型的根本区别吧?不过这种神经网络的级联触发产生的复杂性会很快失控,因为它们之间的依赖关系不能被编译器识别出来,任何改动的影响都是难以评估的,这是不是也是这种编程模型的风险所在呢?

tecentID3618B
2013-04-18 22:37
我进一步思考的是,就算事件模型是必须的,也不能因此就认为不需要组合和面向接口编程吧?这二者不矛盾,因此还是那个问题,jdon如何就不能采用Qi4J呢?

banq
2013-04-19 07:40
2013-04-18 22:37 "@tecentID3618B

"的内容

这二者不矛盾,因此还是那个问题,jdon如何就不能采用Qi4J呢? ...

算服了你,Jdon框架中也是有类似Mixin功能,通过AOP实现的,主要用来实现DCI。

如果把一个个聚合看成是一个个神经元,神经元之间通过事件通讯,那么在神经元内部,也就是聚合内部,聚合根实体其实不但担任聚合根这个角色,还有其他角色,这时DCI或组合编程就派上用处了。


tecentID3618B
2013-04-19 09:00
这么说来,这是在聚合根中用Qi4J或AOP哪个实现Mixin更优雅的问题了,是吗?我觉得这是很有趣的问题。

banq
2013-04-19 09:24
2013-04-19 09:00 "@tecentID3618B

"的内容

这是在聚合根中用Qi4J或AOP哪个实现Mixin更优雅的问题了,是吗? ...

Qi4j也是使用AOP模式,Java的Mixin实现比不上Ruby优雅,但是Ruby的异步高并发事件模型比不上Scala/ERLang.

在Java领域,Qi4j和Jdon框架是100步与50步的区别而已。

但是Jdon框架将Ruby的Mixin和Scala的异步高并发合并在一起,虽然不太优雅,但作为框架封装起来,使用起来方便,不用更改语言,相当于windowsXP升级到Windows 8。

JdonFramework = Spring(Ioc/DI) + Ruby(Mixin/AOP) + Scala(Asynchronous/highConcurrent)

[该贴被banq于2013-04-19 10:01修改过]

tecentID3618B
2013-04-19 10:20
那么请教banq老师,如果我个人喜欢Qi4j注解实现mixin的方式,有没有可能与jdon框架结合呢?

[该贴被tecentID3618B于2013-04-19 10:20修改过]

banq
2013-04-19 10:33
2013-04-19 10:20 "@tecentID3618B

"的内容

个人喜欢Qi4j注解实现mixin的方式,有没有可能与jdon框架结合呢 ...

从理论上讲,两者当然可以结合,Jdon的Mixin也是使用元注解,你可以试验看看,应该没有问题。Jdon和Guava等框架一起用也可以,也可以和Spring一起使用。

tecentID3618B
2013-04-19 10:40
非常感谢banq老师解惑

wldst
2014-06-07 21:53
为什么Qi4j没有流行起来?他的概念还是不错的嘛?难道有不合理的地方?不知道有知道不。

banq
2014-06-08 07:41
2014-06-07 21:53 "@wldst"的内容
为什么Qi4j没有流行起来 ...

我是这样猜测的:Qi4j主要是组合式编程,将一些接口等组合到数据对象中,而函数编程正好相反,是将数据对象加入到函数中。

第二点,新的语言Scala和Swift都提供了类似Mixin功能,如swift的protocol与extension。语言级别支持就非常简单,而使用额外框架,显得比较重量。

猜你喜欢