問題タブ [mediatr]
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.
c# - MediatR は、別のハンドラーでのトランザクション保存のために TableBatchOperation を共有します
トランザクション動作を行うために、複数の Handler 間で TableBatchOperation Azure テーブル ストレージを共有する方法を検索します。
CQRS シナリオでは、Azure Table Storage で複数の挿入を行いますが、MediatR のようなバス メモリでは、この挿入が別のハンドラーにある場合、一方が失敗しても他方が失敗しない場合は困難です。
publish() 呼び出しメソッドの前後で TableBatchOperation を共有すればOKだと思います。
これを行うための推奨事項はありますか?
autofac - MediatR と Autofac ContravariantRegistrationSource による複数の通知
MediatR を使用して一般的な通知を設定しようとしていますが、通知ハンドラーが複数回呼び出されています。
https://github.com/smartaypants/MediatR/blob/master/test/MediatR.Tests/CustomNotificationTests.cs
テストは、ICustomNotification を実装する CustomNotification を発行します。CustomNotificationHandler は、ICustomNotification を実装する必要がある TNotification を受け入れるように制限されています。
これは 1 回だけ呼び出されると予想されますが、ハンドラーは 3 回呼び出されます (TNotification は CustomNotification、CustomNotificationBase、および ICustomNotification です)。しかし、それらはすべて同じインスタンスです。
Autofac 登録から ContravariantRegistrationSource 行を削除すると、期待どおりに動作します。同様に、StructureMap 登録を使用すると、正常に動作します。
反変性を有効にする必要がある理由が完全にはわかりません。MediatR wiki に含まれており、私が見つけることができるほとんどすべての例があるため、私はこの行のみを使用しています。
なぜこれが起こっているのか、私が何か間違ったことをしているのか、それともAutofacのバグなのかを誰かが説明してください. ありがとう。
c# - MediatR を使用する場合、1 つのハンドラーが別のハンドラーを呼び出しても問題ありませんか?
それとも、それは悪い習慣か何かと見なされますか?
1 つの通知で 4 ~ 5 個のハンドラーがトリガーされ、データベースが呼び出されてデータが取得されます。これらの各呼び出しは個別に呼び出すこともできるため、それら自体が要求/ハンドラーです。
ありがとう。