質問

私は、WCFでNET.TCPバインディングを使用してWebサーバーから分離されたLINQ2SQLを使用する階層型アプリケーションの開発に携わっています。

質問:

  1. どのような対策を講じるべきか 最高のパフォーマンスを達成するには?
  2. エンティティオブジェクトは LINQに変換する必要があります シリアル化されるIEnumerableリスト 毎回、とにかく削除することがあります この依存関係
役に立ちましたか?

解決

1)適切に正規化されたデータベース設計に専念します。コードとデータベース設計の設計のトレードオフを余儀なくされた場合、パフォーマンスが目標であれば、データベース設計の代わりにオブジェクト設計のトレードオフを行ってください。 Linq to SQLで動作する適切なスーパータイプ/サブタイプデータベース設計を行うことができないことを理解してください(代わりにEFを使用する必要があると言われています)。

2)ここでの意味に依存します。有線で匿名クラスをどのようにシリアル化するかを尋ねる場合、簡単な答えは「できません。試してはいけません」です。オブジェクトのリストをネットワーク全体に配置する場合は、IEnumerableコレクションでToArray()拡張メソッドを使用して、ビジネスオブジェクトの配列をネットワーク経由で送信します。

他のヒント

Linq to SQLは、クエリをコンパイルしない限り非常に遅くなります。そうしないと、ほとんどの時間は式ツリーをSQLに変換するために費やされるため、アプリケーションはCPUにバインドされます。

コンパイル済みクエリを使用した場合のパフォーマンスの10倍の向上について話します。試してみてください:)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top