1
  • WPF .NET 4.0 アプリケーション
  • 現在Citrixでホストされています
  • MSSQL 2008 R2 バックエンド
  • DB サイズは最大 100 GB
  • TSQL 検索は一度に 100 個のオブジェクトを返し、12 個のテーブルにヒットします
  • ほとんどの検索は 1 秒未満で、10 秒を超える検索はほとんどありません
  • TSQL (SP) の更新は一度に 1 つずつ
  • 読み取り:書き込み > 10000:1
  • 1 つのデータベースに 100 人のアクティブ ユーザーがいる場合がありますが、アクティブな接続が 10 を超えることはありません。
  • データのロードを実行すると、SQL ボックスが 25% を超えるだけで、その後は 50% 未満のままになります。

WCF 経由でクライアント サーバーに移動します。私の最初のWCF。

  • 社内でサービスとしてホスティングすることを考えているWebクライアントがいないので??
  • 後で姉妹製品を作成し、Azure でホストします
  • セッションが必要だと考えていますか??
  • 私の考えが間違っていたら教えてください

私が迷っているのは、OperationContract Instancing と Concurrency です。

検索インスタンス化の場合、PerSession を使用する必要がありますか? もしそうなら、SQL接続を開いたままにしておくべきですか?

更新は検索とは大きく異なります。6 つの異なる update OperationContracts があります (異なるデータ型用)。更新は一度に 1 つずつ、PK を介して行われ、ソース テーブルとログ テーブルにヒットします。これは、Single Instance および ConcurrencyMode Mutiple としてより意味があり、接続を保持する可能性がありますか? もしそうなら、私は並行性を管理しますか?

一括更新もありますが、今のところ一連の単一更新として扱うつもりです。

主な目的は、データの整合性、可用性、スケーラビリティです。

難しい答えがないかもしれないことは理解しています。ポインタや参考資料はありますか?ストレステストはどのようにすればよいですか?プロセスを管理および監視する方法は?

テストするデータがたくさんあるので、結果を報告します。

4

1 に答える 1

1

私の質問に直接対処するブログを見つけました

wcf-instancing-concurrency-and-throttling-part-1

wcf-instancing-concurrency-and-throttling-part-2

wcf-instancing-concurrency-and-throttling-part-3

PerCall このような状況では、このインスタンス化モードを検討できます。

  • サービスがステートレスの場合

  • サービスに軽量の初期化コードがある (またはまったくない) 場合。

  • サービスがシングル スレッドの場合。

私の方法は、これらすべての基準に適合します。チャネルが作成されると、InstanceContextMode PerCall のオーバーヘッドは、クラスのインスタンスを作成するだけです。接続プールを保持するため、SQL への接続のオーバーヘッドも小さくなります。複雑にしすぎました。

誰かが追加する必要がある場合は、喜んであなたの答えを受け入れます。

于 2012-05-25T22:56:52.243 に答える