6

では、非同期コマンドを作成すると、必然的に CQS の原則が破られるのでしょうか?

4

3 に答える 3

6

知りたいこと (クエリ) または実行したいこと (コマンド) を検討するレベルでは、Task<T>データが得られるため、クエリとしては正しく、そうでTaskはなく、コマンドとしては正しいです。(「return void」は、一部の言語で「データを返さない」を表現する言語固有の方法です)。

その下のレベルで、非同期操作を管理するメカニズムを検討している場合は、非同期操作の状態に関する情報を常に取得する必要があるため、常に何らかのタスク オブジェクトが必要です。それは、コマンドとクエリの分離を考慮するレベルではありません。

同様に、.NET メソッドが COM メソッドを呼び出した場合、常に成功または失敗を示す値を返すコードを呼び出していることになります。これは、その特定のテクノロジで例外処理がどのように発生するかの実装の詳細にすぎません。あなたが働いているレベルに応じて、これについて考えることが不可欠であるか、または無関係であるかのいずれかです. Taskタスクベースの非同期プログラミングがどのように機能するかの実装の詳細です。あなたが働いているレベルに応じて、これについて考えることが不可欠であるか、または無関係であるかのいずれかです.

「これはコマンドかクエリか」について考える必要があるレベルは、Task取得方法に関する実装の詳細ですvoid

于 2015-11-23T15:23:31.783 に答える