Questions tagged «event-programming»

事件驱动的编程是指通过识别和处理事件(例如鼠标单击,按键等)来驱动程序流的编程技术。

2
发布-订阅模式与gotos有何不同?
我的理解是,Goto语句通常不被接受。但是,发布-订阅模式在概念上似乎是相似的,因为一段代码发布一条消息时,它将执行单向控制转移。程序员可能不知道程序的哪些部分正在订阅此消息。 我在许多JavaScript程序中都看到了类似的东西,在这些程序中,事件用于方便地跨模块“跳跃”。我是否缺少有关发布-订阅或事件驱动模式的信息?

2
事件冒泡通常如何工作,它是事件传播的同义词吗?
我试图围绕事件驱动的(子)系统中事件分配的一般工作原理和原则进行研究。 尽管我曾在很多场合使用过它,例如Javascript,Flash(动作脚本2和3),甚至一次都用PHP编写了一个简单的事件分配系统,但我从未真正理解过事件冒泡和/或很好地传播。 第一个问题: 事件冒泡是事件传播的同义词吗? 第二个问题: 我理解的是,当事件“冒泡”时,这意味着它在对象的层次结构中“移动”了吗? 第三个也是最重要的问题: 如果我对问题2的理解是正确的;通常如何“向上移动”对象的层次结构? 它通常意味着父对象“重新分派”相同的事件,以它的母公司(直到它到达根对象)?如果是这样; 层次结构中的所有这些对象是否需要听这些事件的子对象,还是我对事件冒泡的理解缺少重要的原则,而无需让父对象将自身注册为子对象事件的侦听器? 如果您可以通过一些简单的伪代码来说明这些基本原理,我将不胜感激。

2
如何在CQRS中创建新的聚合根?
我们应该如何在cqrs体系结构中创建新的聚合根?在此示例中,我想创建新的聚合根AR2,其中包含对第一个AR1的引用。 我正在使用AR1方法作为起点来创建AR2。到目前为止,我看到的选择很少: 在AR1的内部方法中,createAr2RootOpt1我可以new AR2()使用具有访问存储库权限的域服务立即将该对象调用并将其保存到db。 我可以在第一个聚合根发出事件,例如。SholdCreateAR2Event然后有无状态的传奇对此做出反应并发出命令CreateAR2Command,该命令随后被处理并实际创建AR2并发出AR2CreatedEvent。如果使用事件源SholdCreateAR2Event,则不会将其保留在事件存储中,因为它不会影响第一个聚合根的状态。(或者我们还是应该将其保存在事件存储中?) class AR1{ Integer id; DomainService ds; //OPTION 1 void createAr2RootOpt1(){ AR2 ar2 = new AR2(); ds.saveToRepo(ar2); } //OPTION 2 void createAr2RootOpt2(){ publishEvent(new SholdCreateAR2Event()); //we don't need this event. Shoud it still be preserved in event store? } } class AR2{ Integer id; Integer ar1Id; void …

2
如何检测游戏成就?
我错误地将其发布到stackoverflow上,现在根据该站点上的建议在此处发布... 这是一个非常高级的概念性问题。在软件应用程序中说,我有4种不同的操作,例如:上传,共享,评论等 我想给成就徽章给像这样的用户: 新秀-上传您的前5个文件 Upload Junkie-在1天内上传20个文件 Night Crawler-午夜后上传文件 共享一个-共享10个不同的文件 点赞全部-点赞20个不同的文件 你明白了。在无需将实现逻辑编译到我的代码中的情况下,检查并查看用户是否已实现特定成就的最佳方法是什么?并且..-保留在编译后添加新成就的能力(xml或db)-成就必须跟踪特定的操作,次数和其他条件(例如一天中的时间)-检测应接近实时,以便用户通知成就完成后几乎立即 我最大的问题是,我如何发现这些成就?我要: 1)在执行每个操作后检查是否...(最实时)2)是否有另一个程序始终根据一组规则检查数据库?(最简单的) 我还缺少另一个范式吗?我觉得肯定是因为在很多游戏中(例如iOS的jetpack),当我解锁它的那一刻,我都收到了我获得的成就的通知,这给我留下了深刻的印象。 谢谢

1
期货/单股vs事件
在可以忽略性能影响(最大每秒10-20个事件)的应用程序框架中, 什么是更可维护且更灵活的方法,可以用作模块之间进行通信的首选介质-事件还是期货/承诺/单子? 人们常说,事件(发布/订阅,中介)允许松散耦合,因此-应用程序更易于维护...我的经验否认这一点:一旦您拥有20多个事件,调试就会变得很困难,重构也会变得更加困难-因为很难看到:谁,何时何地使用什么。 承诺(我用Java语言编写)比事件要丑陋得多。但是:您可以清楚地看到函数调用之间的连接,因此应用程序逻辑变得更加简单明了。我怕什么 但是,Promises会带来更多的困难吗? ps:答案不一定基于JS,非常欢迎其他功能语言的经验。

1
仅在很少有写入的情况下才使用事件源吗?
我正在阅读事件源,不能停止问自己,这是否仅在非常罕见的情况下才有意义,在这种情况下,写操作很少或需要进行军事级审核。 具有非凡用途的非例外系统每天可能会产生成百上千的写入,相当于每年运行一百万或2次写入(因此发生事件)。与从传统存储中直接读取的内容相比,合并数百万个对象(事件)只是为了获得当前状态,这听起来很荒谬。但是,事件源位于某些性能最高的系统(例如LMAX)的背后。 那么,我想念什么?从事件流恢复状态是否通常已经完成?还是这种想法很少需要这样做,而是完全使用其他存储来进行常规操作(即使用CQRS的查询存储),并且仅在特殊情况下(例如复制,审核等)从事件中恢复?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.