1

gars Hy, Entity Framework Avec SQL Azure sur un ralentissement des performances de tcp net

J'ai donc un problème de performance vraiment grand ici. J'ai une application WPF qui se connecte à un service qui s'exécute dans un rôle de travailleur. Le service utilise la liaison TCP nette avec le duplex intégral. La couche d'accès aux données est dans une bibliothèque que je référence dans mon service. Donc, quand mon service veut obtenir des données, il utilise les méthodes de cette bibliothèque. Cette bibliothèque utilise EF 4.1 qui est mappé à une base de données Sql Azure. Le problème auquel je suis confronté est qu'une requête comme obtenir un utilisateur à partir d'une base de données, prend quelque part au-dessus de 4 secondes. J'ai aussi un service http (utilisé par une application Silverlight) qui utilise la même bibliothèque dataaccess, la même requête dure 115ms, ce qui est normal.

Y a-t-il un problème avec Entity Framework lorsque j'utilise un service net tcp? Je ne sais vraiment pas où est le problème, car sur un service http toutes les requêtes se comportent normalement.

+0

Donc en ce qui concerne le problème, je rétrécis cela à quelque chose qui a à voir avec les rôles des travailleurs. J'ai aussi un autre rôle de travail qui fait des opérations sur la base de données azure sql en utilisant la même bibliothèque avec EF4.1. Ce rôle de travail a également des problèmes de performances concernant les requêtes. Je suis vraiment confus ici ... –

+0

Vos rôles et base de données SQL sont-ils dans le même groupe d'affinité? Vous voulez absolument vous assurer que vous travaillez dans le même centre de données. J'envisagerais aussi de mettre en place une méthode de service «stub» qui n'accède pas aux données pour voir si la liaison net-tcp a un problème quelque part. –

+0

Oui, les rôles sont dans le même groupe d'affinité avec la base de données. Eh bien, je pense que le problème n'est pas lié à la liaison, car comme je l'ai dit plus haut, j'ai un autre rôle qui n'héberge pas de service, il effectue uniquement des opérations de base de données. Les deux rôles de travail ont le même problème, seul le webrole (qui héberge l'application Web Silverlight avec un service basichttp) fonctionne bien sans problème. Dans les trois rôles j'utilise la même bibliothèque dataaccess, avec les mêmes opérations, seulement cela, quand je les appelle à partir de rôles de travail, les opérations sont très lentes. –

Répondre

1

Est-il possible que vous utilisiez Lazy Loading au lieu de Eager chargement avec votre entité? Le chargement paresseux sur Internet est beaucoup plus lent car il en résulte beaucoup plus d'allers-retours à SQL Azure, ce qui serait le goulot d'étranglement dans ce cas. Eager Loading va simplement obtenir toutes les données à la fois avec un seul aller-retour.

Référence: http://msdn.microsoft.com/en-us/library/bb896272.aspx

+0

Je ne pense pas que cela a à voir avec Lazy Loading. J'ai essayé cela aussi, en mettant Lazy Loading faux pour le contexte mais sans effet. Comme je l'ai dit, j'ai un rôle web avec un service, qui fonctionne sans problèmes de performance en utilisant la même bibliothèque dataaccess comme les rôles de travail. Seulement en utilisant les rôles de travail je suis confronté à ce problème. –

Questions connexes