EventListener/EventSubscriptionプロバイダーの正しい使用方法についてのアイデアを、ちょうどTwistedで聞きたかっただけです。ほとんどのサンプルとツイストソースは、かなりハードな結合を使って特定のメソッドを使ってイベントを処理します。これらのイベントのターゲットメソッドのディスパッチは、特定のプロトコルクラスで「ハードコード」されており、クラスを継承してこれらをオーバーライドして「イベント」を受け取る義務があります。これは、プロトコルを作成するときにすべての潜在的な加入者を知っている間、使用するのがとても素敵で透明です。 しかし、大規模なプロジェクトでは、よりダイナミックなイベントサブスクリプションとサブスクリプションの削除が必要です(おそらく私は間違った考え方をしています)。 「ねじれの方法」に従って、これを達成する正しい方法は何でしょうか。私は現在、イベント購読/ディスパッチメカニズムを作成していますが、このパターンの欠如がより良い方法があることを示唆しているかもしれません。EventListenerメカニズムがねじれています
1
A
答えて
1
パッケージ「twisted.words.xish.utility.EventDispatcher」は、使い方を知るためにツイストしたもので、簡単です。しかし、私はTwistedを "Deferred"と呼んでいます。関連するイベント(何かが失敗したもの)、コールバック、フォールバックは登録されたオブザーバー機能のクロージャとして遅延オブジェクトに見えます。 Deferredはネストできるなどの高度な機能を備えています。 私の意見では、TwistedでデフォルトのEventDispatcherを使用することも、簡単な新機能をいくつか作成することもできます。しかし、複雑なメカニズムをTwistedに導入すると、混乱や混乱を招く恐れがあります。
関連する問題
- 1. ねじれのないツイストアプリケーション
- 2. ハンドルバーブロックヘルパーがHAMLにねじ込まれた
- 3. POSTリクエストの本体がねじれている
- 4. Android、ねじれの動作
- 5. 背景ねじアップ()
- 6. エコーサーバーでヘッダーを設定して取得する方法がねじれていますか?
- 7. ポートがWindows上でねじれているapnsデーモンをリッスンしていません。
- 8. 再接続するhttpクライアントをねじれて実装する
- 9. テールは、その後、ねじれ
- 10. Pythonのねじれた問題
- 11. 定期タスクでねじれ例外が発生する
- 12. キューを使用してねじれたファイルをダウンロードする
- 13. Prismはウィンドウを閉じるコマンドのメカニズムを提供していますか?
- 14. ワークフローまたはEventListener
- 15. 複数のねじれたサーバーを実行しますか?
- 16. ねじれたサーバー用の「リモートコンソール」はありますか?
- 17. PythonのPIL作物の問題:切り抜かれた画像の色がねじ込まれている
- 18. 完了を示すためにメカニズムが使用されています
- 19. ラベルビューeventlistenerがテーブルビューで機能していない
- 20. クロムにねじ込まれた要素の位置
- 21. ステートメントのCスタイルがひねられていない
- 22. TableViewCellが重ねて表示されます。
- 23. URLRequest&Loader EventListenerが画像に対して起動しない
- 24. razorが尋ねます。
- 25. PipがインストールされないWindows上でひねります
- 26. 複数のリアクターがねじれている必要性を回避する方法
- 27. UIWebViewでユーザーインタラクションがjQueryのajaxリクエストをねじ込むことがあります
- 28. respond_withがエラー時に場所を尋ねています
- 29. アンドロイドのEventListener
- 30. sqliteでソートされた並行キュー実装(ねじれ)?
このシナリオでDefferedと表示される欠点は、設計上一度だけ起動され、永久または半永久的なイベントのサブスクリプションに代わるものではないということです。また、私はそのEventDispatcherについて知っています。しかし、私は、EventDispatcherが特定のfuncionalityセットの一部ではなくコアパッケージでなければならないほど些細なことは疑わしいでしょう。これは、EventDispatcherがツイストで必要とされている場合、またはこれに対してより洗練された解決策がある場合、私の疑問を引き起こしたものです。 – jbreicis
サンプルをよりよく説明するための抽象的な使用例は次のようなものです:ネットワークモニタリングアプリケーションを開発しています。モニタされる各要素は実際のインスタンスがねじれています。ここで、各インスタンスは、それが依存するデバイスを認識し、a)観測の開始時に、他のインスタンスによってトリガされたイベントに対してイベントリスナを配置できるようにし、b)リスナを削除するための観察の終了時にできるようにすべきである。これは、複数のタイプの複数のタイプの関係を持ち、実行時にリレーションシップが変化し、イベントが繰り返されるというイベントを賢明に意味します。 – jbreicis
IMHOでは、すべてのイベントをディスパーザに収集し、そのイベントをインスタンス登録することができます。 Pythonの世界にはすでに多くのディスパッチャがあります。 http://pubsub.sourceforge.net。言い換えれば、dipatcherのevent-in-functionは、ねじれたメカニズムのコールバックです。物事をより穏やかにするためには、イベント・イン・ファンクションの最後に「ディスパッチング」作業を行うことができます。 – wuliang