-1

サーバー側のビジネス ロジック内のコードに対して同時アクセスを避けたいと考えています。私のビジネス クラスは静的クラスではありません。サービス層は wcf に実装されています。何か提案はありますか?

4

2 に答える 2

4

ある種の同期メカニズムを使用する必要があります。最も単純なlockステートメントは次のとおりです。

class BusinessLogic
{
    // To avoid the possibility of a deadlock, prevent external code from
    // ever acquiring this lock by making the lock target private.
    private readonly object lockTarget = new object();

    void Foo()
    {
        lock(lockTarget)
        {
            // your code here
        }
    }
}

もちろん、一般にスレッド同期は複雑なトピックであり、特定のコンテキストを考慮した後にのみ、正しいまたは最適なソリューションに到達できます。System.Threading名前空間には、他にも注意が必要な同期プリミティブがあります。

于 2013-09-11T09:51:31.457 に答える
1

質問には、同時アクセスを制限したいビジネスロジックがどこにあるかを明確に述べるために少し編集が必要ですが、それはwcf側の一部ですか?

また、現在 wcf を構成している wcf の同時実行モードはどれですか?

アクセスを制御したいコードは wcf 側の一部であると仮定します。クラスは静的ではないため、同時アクセスを制限する唯一の方法は、.net で提供されるさまざまなロックメカニズムを使用することです。

C# でのロックを確認し、ロックのニーズに最も適したものを確認してください (どの程度のスレッド セーフが必要か)。

また、このディスカッションを確認することもできます。基本的に必要なものについていくつかの指示が表示されます。 サービス同時実行ロックの正しい方法

于 2013-09-11T09:59:03.330 に答える