标签: event-driven

如何在引擎盖下实现Win32事件驱动编程?

在Win32 C++应用程序中,我们启动一个消息循环,从队列中获取消息,转换它们然后调度它们.最终,每条消息都到达我们的WndProc,在那里可以处理相关的事件.

我明白那一部分.我不明白的是介于两者之间.特别:

  1. 不同类型的OS中断处理程序必须将消息放入所述"消息队列"中,但该队列驻留在进程地址空间中的哪个位置?它是如何暴露给中断处理程序代码的?
  2. "翻译"消息意味着什么?TranslateMessage()真正的呼吁是什么?
  3. 一旦被调度DispatchMessage(),在到达我的WndProc之前,消息会在什么地方摆动(即操作系统用它做什么)?

如果有人知道上述的答案,请满足我的好奇心.谢谢.

windows winapi message-queue event-driven

11
推荐指数
2
解决办法
4279
查看次数

非DOM对象上的jQuery自定义事件

我最近阅读了一些类似的代码:

bob = {'name': 'Bob Smith', 'rank': 7};
$(bob).bind("nameChanged", function () { /* ... */});
// ...
$(bob).trigger("nameChanged");
Run Code Online (Sandbox Code Playgroud)

这似乎有效.

但我在jQuery文档或源代码中找不到任何关于使用既不是选择器也不是DOM节点的对象调用jQuery构造函数的内容.所以我的问题是,这是一个受支持的用途,还是它本质上是偶然的?

如果您想在JavaScript中使用模型或View对象的事件驱动模型,您将如何做?

javascript jquery event-driven

11
推荐指数
1
解决办法
2939
查看次数

事件驱动的体系结构和事件结构

我是EDA的新手,我已经阅读了很多关于福利的内容,并且可能有兴趣在我的下一个项目中应用它,但仍然没有理解.

在举办活动时,哪种模式最适合:

  1. 将事件命名为"CustomerUpdate",并包含有关客户的所有信息(已更新或未更新)
  2. 将事件命名为"CustomerUpdate",并仅包含实际已更新的信息
  3. 将事件命名为"CustomerUpdate"并包含最小信息(标识符)和/或URI,以便使用户检索有关此客户的信息.

我问这个问题是因为我们的一些活动可能很繁重而且频繁.

谢谢你的答案和时间.

soa events event-driven eda

10
推荐指数
1
解决办法
2078
查看次数

在事件驱动的世界中处理异常

我试图了解如何使用微服务(使用 apache kafka)在事件驱动的世界中处理异常。例如,如果您采用以下订单场景,其中需要在完成订单之前执行以下操作。

  • 1) 向支付服务提供商授权支付
  • 2)从库存中保留该项目
  • 3.1) 通过支付服务提供商捕获付款
  • 3.2) 订购商品
  • 4) 发送电子邮件通知接受订单并附上收据

在这种情况下的任何阶段,都可能出现故障,例如:

  • 该商品不再有库存
  • 支付信息有误
  • 收款人使用的账户没有可用资金
  • 外部调用(例如对支付服务提供商的调用)失败,例如停机

您如何跟踪每个阶段已被要求和/或完成?

你如何处理出现的问题?你将如何通知前端失败?

event-driven-design event-driven

10
推荐指数
1
解决办法
1944
查看次数

React 中的事件驱动方法?

我想在一个组件中“触发一个事件”,让其他组件“订阅”该事件并在 React 中做一些工作。

例如,这是一个典型的 React 项目。

我有一个模型,从服务器获取数据,并且使用该数据呈现多个组件。

interface Model {
   id: number;
   value: number;
}

const [data, setData] = useState<Model[]>([]);
useEffect(() => {
   fetchDataFromServer().then((resp) => setData(resp.data));
}, []);

<Root>
   <TopTab>
     <Text>Model with large value count:  {data.filter(m => m.value > 5).length}</Text>
   </TobTab>
   <Content>
      <View>
         {data.map(itemData: model, index: number) => (
            <Item key={itemData.id} itemData={itemData} />
         )}
      </View>
   </Content>
   <BottomTab data={data} />
</Root>
Run Code Online (Sandbox Code Playgroud)

在一个子组件中,可以编辑和保存模型。

const [editItem, setEditItem] = useState<Model|null>(null);
<Root>
   <TopTab>
     <Text>Model with large value count:  {data.filter(m => m.value > 5).length}</Text>
   </TobTab>
   <ListScreen> …
Run Code Online (Sandbox Code Playgroud)

event-driven reactjs react-native react-hooks

10
推荐指数
2
解决办法
4330
查看次数

Python - 如何使这段代码异步?

这是一些说明我的问题的代码:

def blocking1():
    while True:
        yield 'first blocking function example'

def blocking2():
    while True:
        yield 'second blocking function example'

for i in blocking1():
    print 'this will be shown'

for i in blocking2():
    print 'this will not be shown'
Run Code Online (Sandbox Code Playgroud)

我有两个包含while True循环的函数.这些将生成数据,然后我会在某处(最有可能是sqlite数据库)登录.

我一直在玩线程并让它运行起来.但是,我真的不喜欢它...我想做的是使我的阻塞函数异步.就像是:

def blocking1(callback):
    while True:
        callback('first blocking function example')

def blocking2(callback):
    while True:
        callback('second blocking function example')

def log(data):
    print data

blocking1(log)
blocking2(log)
Run Code Online (Sandbox Code Playgroud)

我怎样才能在Python中实现这一目标?我已经看到标准库带有asyncore,这个游戏中的大牌是Twisted,但这两个似乎都用于套接字IO.

如何异步我的非套接字相关的阻塞函数?

python asynchronous twisted event-driven nonblocking

9
推荐指数
3
解决办法
1万
查看次数

在Scala中,我如何将事件驱动编程与功能方法相结合?

为了澄清事件驱动我的意思,我指的是我所处的情况

def onTrade(...)
Run Code Online (Sandbox Code Playgroud)

每次特定股票交易时都会调用.假设我想跟踪每日最高交易价格.对我来说,明显的解决方案是:

var dailyHigh = 0

def onTrade(...) {
    if (price > dailyHigh) dailyHigh = price
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用val代替var来实现这个功能?还假设我可能希望将来添加dailyLow,volumeHigh,volumeLow等.

scala event-driven

9
推荐指数
2
解决办法
3444
查看次数

什么时候线程框架比事件驱动框架更好?(即什么时候rails比node.js好?)

我理解什么是线程框架(Rails,Django,Symfony2,...).我理解事件驱动的框架是什么(Node.js,EventMachine,Twisted,...)以及为什么它对于实时,聊天,速度......而言非常好.此外,它们似乎不会对正常用例造成问题.所以:

  • 事件驱动框架的缺点是什么?
  • 我什么时候应该更喜欢Rails到Node.js?
  • 为什么不是所有使用EventMachine,Twisted或Node.js编写的新Web服务器?
  • 诸如Django或Rails等着名框架会成为事件驱动还是死亡?

django frameworks ruby-on-rails event-driven node.js

9
推荐指数
1
解决办法
3539
查看次数

如何使用Swagger规范进行事件?

所述扬鞭/ OpenAPI的规范是对文件有用和运行针对HTTP的API自动化测试.但是,我运行事件驱动的微服务架构,记录在不同服务之间传递的事件有效负载非常重要,即使它们不是通过HTTP路径访问也是如此.由于我所看到的一切都是基于API的HTTP路径,我想知道Swagger如何处理这个问题?

events event-driven swagger microservices

9
推荐指数
1
解决办法
1612
查看次数

为什么不采用整体事件驱动架构?

我一直在构建事件驱动的微服务。然后,我想知道为什么不使用事件驱动的整体应用程序。

现在的缺点是可扩展性问题。我无法为特定流量密集型域制作副本。

但除此之外,我仍然获得许多其他好处,例如

  1. 最终一致性
  2. 我个人还发现使用正确的设置进行调试更容易,因为我可以重播事件。
  3. 降低复杂性。域之间的解耦(我们仍然在文件夹中管理域)

此外,我们还有整体优势:主要是减少了 DevOps。

当应用程序变得流行(以及更多流量)时,我们可以轻松地将其转换为微服务。我认为将代码从非事件驱动转换为事件驱动是最具挑战性的部分,因为它显着改变了整体架构。

我能想到的一个批评是,仅仅为了一个整体来管理事件总线是否值得?如果我要使用像 apache kafka 这样的东西,它非常昂贵且管理起来具有挑战性,可能不值得。

但是,如果我使用 NATS Streaming 或 Redis Stream 之类的东西,它们或多或少与 apache kafka 完成相同的工作,但重量轻且更易于管理,那么我认为这也不会成为问题。

当我用谷歌搜索时,我找不到关于这些想法的文章,所以我想知道我是否遗漏了一些重要的东西。

architecture event-driven

9
推荐指数
1
解决办法
2571
查看次数