Question

Je suis impliqué dans le développement d'une application multiniveau utilisant LINQ2SQL, séparée du serveur Web avec une liaison NET.TCP sur WCF.

Mes questions sont les suivantes:

  1. Quel type de mesures devrais-je prendre? atteindre la meilleure performance?
  2. Depuis les objets d'entité retournés par le LINQ doit être converti en un Liste IEnumerable à sérialiser à chaque fois, y a-t-il quand même à enlever cette dépendance?
Était-ce utile?

La solution

1) Concentrez-vous sur une conception de base de données correctement normalisée. Je dirais que lorsque vous êtes obligé de faire des compromis de conception dans votre code par rapport à la conception de base de données, si la performance est votre objectif, faites des compromis dans la conception de votre objet plutôt que dans celle de la base de données. Comprenez que vous ne pourrez pas créer une conception de base de données de super-type / sous-type appropriée, qui fonctionnera avec Linq en SQL (on me dit que vous devez utiliser EF à la place).

2) Cela dépend de ce que vous voulez dire ici. Si vous demandez comment vous souhaitez sérialiser des classes anonymes sur le réseau, la réponse simple est: "vous ne pouvez pas, alors n'essayez pas". Si vous souhaitez placer des listes d'objets sur le réseau, utilisez simplement la méthode d'extension ToArray () sur vos collections IEnumerable pour expédier les tableaux de vos objets métier sur le réseau.

Autres conseils

Linq to SQL est très lent, sauf si vous compilez des requêtes. Sinon, votre application sera liée au processeur, car la plupart du temps sera consacrée à la conversion des arbres d'expression en SQL.

Nous parlons d’un gain de performances 10x si vous utilisez des requêtes compilées. Essayez-le:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top