问题标签 [event-driven-design]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
807 浏览

event-driven-design - 对于 Windows 服务,这是一种不错的事件驱动方法吗?

我正在阅读事件驱动设计。在实践中,我很难理解其中的一些内容。我正在考虑将其用于监视、解析和处理来自第 3 方 TCP 流的信息的 Windows 服务。以下是一种体面的方法,还是我错过了什么?

我的计划是让主要服务成为事件的容器:

然后,使用 MEF 或类似方法,我将注册“ServiceAgent”实例,这些实例仅处理和/或引发事件,可选择在后台线程上执行此操作。例如:

0 投票
2 回答
3053 浏览

c# - Button_Click(object sender... 中的“发件人”真的是发件人吗?

Ted Faison 在关于基于事件的软件设计的播客中提到 .NET、C++ 和 Java 事件语句中的“sender”和“self”对象,例如:

是用词不当,因为例如在上面的示例中,“发送者”实际上并不是产生事件的对象,而是代理,因为您不希望将应用程序紧密耦合。

我是不是理解错了(因为当我调试它时,“发件人”确实似乎是原始对象)。

或者这些语言中的常见事件模式(例如常见的点击处理程序)是紧密耦合的,但它们应该更加解耦,例如在复合应用程序中。

他还提到,例如,您不应该从 EventArgs 继承,因为它会导致类爆炸式增长,每个事件一个,它只传输几个变量。在他看来,很多时候,您可以发送一个字符串。他提到,这种观点与微软模式和实践所建议的相反。

对这些领域有什么想法吗?

0 投票
1 回答
169 浏览

architecture - EagerReadDerivation:平衡收益与成本

我正在为即将开发的 Silverlight 应用程序研究领域驱动设计和分布式 DDD。EagerReadDerivation 模式似乎会提高应用程序的可伸缩性,但代价是增加了复杂性。

该应用程序可能有成千上万的用户上传需要由多个服务处理的大型文本文件(超过 100,000 行)。我们还需要支持“假设”场景(例如 ParallelModel)。我相信模型驱动的方法将帮助我们管理复杂性,所以我想尽可能地将逻辑排除在数据库之外。

我的问题是针对尝试过 EagerReadDerivation 模式的开发人员:它是否为您带来了回报,是否值得在您的应用程序中增加额外的复杂性?

0 投票
4 回答
858 浏览

ruby - 在 ruby​​ 中使用 ActiveMQ + activemessaging gem 的问题

我在 Rails 应用程序中运行 AMQ + Activemessaging。

我遇到了主动消息在收到消息时未对消息采取行动的问题。一旦我重新启动客户端,这个问题就解决了。显然,它工作了一段时间,但不确定什么时候它会停止奇怪的行为。

这会导致在读取消息时丢失消息,Stomp 客户端配置为 :ack => true 确认消息的接收,但是在发送消息时没有可用的数据。

是否有人面临类似问题或使用 Activemessaging 的替代方案?

你有使用 AMQ + Ruby 的工作场景吗?

干杯,

0 投票
1 回答
315 浏览

java - 用 Java 和 Javascript 驱动事件?

我正在尝试在服务器上执行一些计算。为此,客户端最初输入了一些我通过 Javascript 捕获的数据。现在,我可能会向服务器发送一个 XMLHttpRequest 来发送这些数据。假设计算需要一个小时,客户端离开系统或关闭系统。

在实践中,我可能会使用来自客户端的轮询来确定结果是否可用。但是有什么方法可以以回调的形式实现,例如,下次客户端登录时,我只需联系客户端 Javascript 以传递结果......有什么建议吗?我认为所有这些都需要某种位于客户端的网络服务器,但我想知道是否有更好的方法来做到这一点。

0 投票
2 回答
10121 浏览

event-driven-design - 事件驱动与顺序编程

我的一个朋友最近在他的团队中就事件驱动编程与顺序编程的优缺点进行了争论。

您对此有何看法?

0 投票
5 回答
8949 浏览

java - 使用 Java 进行异步编程

在哪里可以找到使用 Java 的异步编程示例?我有兴趣在异步编程中寻找模式来构建具有响应性(防止定期挂起和停止响应用户输入的应用程序以及不及时响应客户端请求的服务器应用程序)和可伸缩性的应用程序。

尤其是查看执行 I/O 操作(例如文件读/写、Web 请求和数据库查询)的示例将很有帮助,并且还涉及大量 CPU 处理,例如网页中的购物建议。

哪些 Java 库可以帮助确定应用程序的响应何时不可预测 - 因为应用程序的线程执行 I/O 请求,应用程序基本上放弃了对 I/O 设备(硬盘驱动器、网络或其他)

0 投票
2 回答
4360 浏览

c# - 使用枚举的 C# 事件处理程序

我有一个 StatusChanged 事件,该事件由我的对象在其状态更改时引发 - 但是,应用程序需要根据新状态执行其他操作。

例如,如果新状态为断开连接,则它必须更新状态栏文本并发送电子邮件通知。

因此,我想创建一个具有可能状态(已连接、已断开、接收数据、发送数据等)的枚举,并在引发事件时将其与事件的 EventArgs 参数一起发送(见下文)

定义对象:

定义新的 EventArgs 参数:

然后我为应用程序中的事件创建一个处理程序:

问题是,当对象尝试引发事件时,我收到“对象引用未设置为对象的实例”错误。希望有人能用 n00b 术语解释为什么以及如何解决它:)

0 投票
3 回答
888 浏览

c# - 如何在 Asp.Net 页面上的一个地方处理我的所有错误/消息?

我在这里寻找一些指导。

在我的网站上,我将内容放在 Web 用户控件中。例如,我将有一个 NewsItem 控件、一个 Article 控件、一个 ContactForm 控件。

这些将出现在我网站的各个地方。

我正在寻找的是一种让这些控件将消息传递到它们所在的页面的方法。

我不想将它们紧密耦合,所以我认为我将不得不通过事件/代表来做到这一点。不过,我有点不清楚我将如何实现这一点。

几个例子:

1

已提交联系表格。提交后,我不想用“您的邮件已发送”来限制该消息的放置,而是用状态消息和可能的建议行为通知页面控件已打开。因此,一条消息将包括要呈现的文本以及enum类似DisplayAs.PopupDisplayAs.Success

2

文章控件在数据库中查询文章对象。数据库返回异常。自定义异常与DisplayAs.Error枚举一起传递给页面。该页面处理此错误并在错误出现的任何地方显示它。

我正在尝试完成类似于 ValidationSummary 控件的操作,但我希望页面能够在枚举感觉合适时显示消息。

同样,我不想紧密绑定或依赖页面上存在的控件。我希望控件引发这些事件,但如果需要,页面可以忽略它们。

我会以正确的方式解决这个问题吗?

我想要一个code样本来帮助我入门。

我知道这是一个更复杂的问题,所以我会在投票/选择答案之前等待更长时间。

0 投票
7 回答
14796 浏览

javascript - 事件驱动架构的jQuery插件?

是否有任何事件驱动架构 jQuery 插件?

第 1 步:订阅

替代文字
订阅者订阅中间的事件处理函数,并传入一个回调方法,以及他们正在监听的事件的名称......

即两个绿色订阅者将监听 p0 事件。蓝色的订阅者将监听 p1 事件。


第 2 步:p0 事件由另一个组件触发到事件处理程序

替代文字

  1. 向事件处理程序触发 p0 事件
  2. 事件处理程序通知它的订阅者该事件,调用他们在步骤 1:订阅中订阅时指定的回调方法。

请注意,蓝色订阅者没有收到通知,因为它没有监听 p0 事件。


第 3 步:p1 事件被触发到事件处理程序的一个组件

替代文字

p1 事件被另一个组件触发

和以前一样,只是现在蓝色订阅者通过其回调接收事件,而其他两个绿色订阅者没有接收到事件。

图片来自 leeand00,在 Flickr 上

我似乎找不到一个,但我的猜测是他们只是在 Javascript/jquery 中称它为别的东西

这种模式也有名称吗?因为它不仅仅是一个基本的发布者/订阅者,它必须被称为我认为的其他东西。