2011-09-14 5 views
4

私はまだWFを初めてお使いです。 ;)DB操作のためのWF CodeActivityとAsyncCodeActivityの選択

かなり少ない量の環境(1日あたり数百件のリクエスト)で、プライマリキーを使用して単一のレコードを返す、よく標準化されたデータベースに対して選択を行っている場合は、 CodeActivityAsyncCodeActivityを使用しますか?

私はホスティングと実行に関する追加の研究を行っていますが、複数のリクエストを同時に受信することは可能ですが、可能ではありません。それが答えを変えるかどうかは分かりません。

ありがとうございます!

+0

明らかにブロッキングが問題ではない場合は、アプリケーションに追加する複雑さのために非同期にするのは意味がありません。また、NativeActivity ftw。 – Will

答えて

5

MicrosoftはそのExecuteSqlQuery活動に非非同期を使用:http://wf.codeplex.com/releases/view/43585

非同期アクティビティ: 「これはワークフロー、スケジューラスレッドを保持し、実行することができるかもしれどんな活動をブロックすることなく、非同期の作業を実行する必要がありますカスタム活動のために有用です並行して。"

"AsyncCodeActivityは、実行中にアイドルポイントを誘発する可能性があります。非同期作業の揮発性のため、AsyncCodeActivityはアクティビティの実行中に常にno persistブロックを作成します。ワークフローランタイムが非同期作業の途中でワークフローインスタンスを保持するのを防止し、非同期コードの実行中にワークフローインスタンスがアンロードされないようにします。

出典:http://msdn.microsoft.com/en-us/library/ee358731.aspx

編集:私だけ

1

明らかに、より良い意思決定を行うために、私はロンとティムの対応を検討する非同期を使用しての欠点を指摘していることに気づいた - 作ることはないだろうアクティビティ実装内でAsync APIを実際に呼び出している場合を除きます。

しかし、違いがあっても、が目立つようにはならないかもしれません。多くのアプリでは違いがあります。潜在的な理由:

  • クエリが実行される速度が速すぎます。
  • 複数のクエリを同時に実行していません。
  • スレッドの競合を経験するために必要なように、多数のワークフローを並行して実行するのではありません(並列実行で多くの非同期操作を実行する方が高速です)。
5

一般に、あらゆる種類のI/Oを行っているアクティビティ開発者は、AsyncCodeActivityを使用し、可能な限り基本のAsync APIを呼び出すことを強く推奨します。クエリが短い場合でも、これは常に優先されます。

関連する問題