問題タブ [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 に答える
80 参照

c - http フォームの値を C プログラムに渡す

C で記述された組み込みアプリケーションのアップグレードを担当しています。このアプリケーションは、Web インターフェイスを介して構成されています。

ユーザーが Web アプリケーションを変更する/var/www/settings.jsonと、ファイルが書き込まれ、ファイルが変更されます/var/www/UPDATE_SETTINGS

メイン アプリケーション ループでは、存在するかどうかを確認しますUPDATE_SETTINGS。存在する場合は、settings.jsonを json-c で解析してから削除しUPDATE_SETTINGSます。

これは十分に機能しますが、イベント駆動型アーキテクチャ (おそらく libev) に移行することをお勧めします。このアーキテクチャでsettings.jsonは、webapp スクリプトによってプレーン オールド UDP ポートに直接プログラムに供給され、コールバックを発行して更新を実行します。 .

この問題を解決する他のエレガントな方法は何ですか? 現在のアプローチに固執する必要がありますか?

0 投票する
5 に答える
2894 参照

events - イベント駆動型アーキテクチャ...無限ループ

A が B からの変更を待機し、B が C からの変更を待機し、C が A からの変更を待機してサイクルを形成するイベント ドリブン アーキテクチャがあります。

ここで、B が変更されると、A は C に対してイベントを発生させ、C は B に対して発生し、A は A に対して発生し、C は無限に発生します。

今すぐプログラムを変更して、このサイクルを含まないようにすることはできますが、後でそれができなくなり、追い詰められるのではないかと心配しています。イベントベースのシステムを設計するときに、そのようなことが起こらないようにするにはどうすればよいでしょうか?

0 投票する
2 に答える
823 参照

python - Design question on Python network programming

I'm currently writing a project in Python which has a client and a server part. I have troubles with the network communication, so I need to explain some things...

The client mainly does operations the server tells him to and sends the results of the operations back to the server. I need a way to communicate bidirectional on a TCP socket.

Current Situation

I currently use a LineReceiver of the Twisted framework on the server side, and a plain Python socket (and ssl) on client side (because I was unable to correctly implement a Twisted PushProducer). There is a Queue on the client side which gets filled with data which should be sent to the server; a subprocess continuously pulls data from the queue and sends it to the server (see code below).

This scenario works well, if only the client pushes its results to the manager. There is no possibility the server can send data to the client. More accurate, there is no way for the client to receive data the server has sent.

The Problem

I need a way to send commands from the server to the client.

I thought about listening for incoming data in the client loop I use to send data from the queue:

But there are several problems with this solution:

  • the SSLSocket.read() method is a blocking one
  • if there is no data in the queue, the client will never receive any data

Yes, I could use Queue.get_nowait() instead of Queue.get(), but all in all it's not a good solution, I think.

The Question

Is there a good way to achieve this requirements with Twisted? I really do not have that much skills on Twisted to find my way round in there. I don't even know if using the LineReceiver is a good idea for this kind of problem, because it cannot send any data, if it does not receive data from the client. There is only a lineReceived event.

Is Twisted (or more general any event driven framework) able to solve this problem? I don't even have real event on the communication side. If the server decides to send data, it should be able to send it; there should not be a need to wait for any event on the communication side, as possible.

0 投票する
2 に答える
851 参照

javascript - javascript (node.js): 複数のイベントを発生させる単体テスト コード

複数のイベントの発生をテストする単体テスト コード (caolan の nodeunit) を作成しようとしています。

だから、私はテストしています

したがって、1 つのイベントのみの単体テストは簡単です。

現在、setTimer()カウントダウンを使用して X 時間までに強制的に完了させていますが、これを行うより良い方法はありますか?

0 投票する
3 に答える
612 参照

architecture - 順次 vs マルチスレッド アカウンティング イベント処理

私たちはイベント駆動型の会計エンジンに取り組んでおり、これまでのところすべてをバッチ/シーケンシャルに行っています。

問題は、1 日に何千ものイベントが作成され、すべてを順番に処理すると処理が遅くなることです。

財務データの整合性と一貫性を心配することなく、マルチスレッド イベント処理会計エンジンを実装できる安全な方法はありますか?

それとも、安全にプレイして、バッチ/シーケンシャル アプローチに従うことを許可する方がよいのでしょうか?

0 投票する
3 に答える
1502 参照

javascript - イベント駆動型コードの for ループ?

redis データストアにはキーのリストがあり、そのキーのリストを反復処理して、redis からそれらの値を取得したいと考えています。キャッチは、イベント駆動型言語、node.js経由のjavascriptを使用していることです

JavaScriptが手続き型である場合、私はこれを行うことができます

しかし、私はできないので.. 私はこれをしますか?

すべてのリクエストを一度に実行してからコールバックをリストに挿入する代わりに、順次呼び出しシーケンスを強制しているため、これは間違っています。何千ものキーがあるとどうなりますか?

どうにかしてこれを行うことができますか?

0 投票する
2 に答える
1441 参照

node.js - イベント駆動型システムをスケッチする方法は?

Node.jsでシステムを設計しようとしています( Nodeの同時実行性を使用して以前の問題の1つを解決しようとしています)が、動作方法の計画を立てる方法を理解するのに苦労しています。

戻り値ではなくコールバックの観点から考えると、非常につまずきます。流れは直線的ではなく、それをドラフトする私の能力を本当に困惑させています。イベント駆動型システムの運用フローをどのように引き出すのですか?

私は、「わかりました、はい、それがどのように機能するかです。ここからやり直します。これらの結果がここに返されます」と言うことができるものが必要です。

写真はこれに非常に役立ちます。ありがとう。

編集: UMLよりもきめ細かいもの、具体的には、私が快適なブロッキングおよびオブジェクト指向プログラミング構造から、私が快適な非ブロッキングおよびイベント駆動型構造に移行するのに役立つものを探しています。 mなじみのない。

0 投票する
1 に答える
382 参照

weblogic - 段階的なイベント ドリブン アーキテクチャ - Weblogic

Staged Event Driven Architecture はいつ使用する必要がありますか? 複数のキュー/MDB をステージとして使用することで、weblogic に SEDA を実装する際に問題はありますか? SEDA を使用した欠点に関する洞察はありますか?

0 投票する
2 に答える
10847 参照

java - Java およびイベント駆動型プログラミング

私はjavaeventingを使用して、データベースにアクセスするための偶数駆動シェルを作成しています。したがって、私のユースケースは次のとおりです。

  1. コマンドラインでシェルを開きます。
  2. これで、シェルはデータベースに接続し、入ってくるコマンドをリッスンします。
  3. コマンドを取得すると、それを実行し、必要な出力を返します。

while(!exit){ //do stuff }さて、ここで一種のループを回避するにはどうすればよいでしょうか? Javaイベントを正しく使用するには?

簡単な方法は次のとおりです。

しかし、私はJavaイベントがより良い解決策を提供できるかどうかを探しています.

アップデート1:

ここに私が実装しようとしているものがあります:

1私のアプリケーションは、キー値データベースを試すためのシェル (mongodb シェルなど) です。
2簡単なコード:

ここで、Java イベンティングの使用が表示されず、問題を解決しました。Java イベンティングがどのようにここに表示されるか教えてください。ユーザーにイベントをトリガーしてもらいたい。

0 投票する
9 に答える
20329 参照

events - コマンドとイベントが別々に表示されるのはなぜですか?

イベントを強調するアーキテクチャのコマンドとイベントの違いは何ですか?私が見ることができる唯一の違いは、コマンドは通常、システム外のアクターによってソース/呼び出されるのに対し、イベントはシステム内のハンドラーやその他のコードによってソースされるように見えることです。しかし、私が見た多くのサンプルアプリケーションでは、それらは異なる(しかし機能的に類似した)インターフェースを持っています。