|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Danie Marie-Sainte Inscription : novembre 2009 Messages : 42 ![]() |
Bonjour à tous,
Je suis en train de faire la couche d'accès aux données d'une application client lourd. Cette couche sera, plus tard, utilisée pour une application Web. Mon collègue (qui est actuellement en vacances) m'a dit que pour le Web, la connexion à la BDD doit tout le temps être fermée. Donc pour tout accès à la BDD on ouvre une connexion, on fait sa requête et on referme. Moi, je dois récupérer une foule d'informations dans la BDD (donc plusieurs requêtes de selection) pour construire un Objet. Ma question est donc la suivante : Est-ce qu'il vaut mieux ouvrir et fermer la connexion à chaque requete de sélection? ou bien j'ouvre, je récupère tout ce que j'ai à récupérer, puis je ferme? Qu'est-ce qui influence votre choix? Autre question : Est-ce que cette façon de faire est bonne : Code c# :
Enfin, si quelqu'un a des exemples de code je suis preneuse. Merci |
||
|
|
00
|
|
|
#2 |
![]() ![]() Clément LehalleArchitecte Logiciel Inscription : avril 2008 Messages : 1 426 ![]() |
A priori, c'est EntityFramework qui se chargera de cela pour toi, tu ne devrais pas à avoir à t'en préoccuper.
Pour répondre à la question malgré tout, le plus logique serait d'ouvrir une connexion, de faire tes requêtes, puis de fermer la connexion. Et oui, cette méthode est la bonne, et pour les exemples je te conseille de lire le billet de la MSDN. Si tu utilises EF 4.0, tu peux jeter un oeil dans "Past Versions" et voir les vidéos de Julia Lerman, mais elles sont en anglais.
__________________
One minute was enough, Tyler said, a person had to work hard for it, but a minute of perfection was worth the effort. A moment was the most you could ever expect from perfection. -- Chuck Palahniuk, Fight Club, Chapter 3 -- |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Nathanael MarchandExpert .Net So@t Inscription : octobre 2008 Messages : 3 520 ![]() |
Je tiens à dire quelque chose! Ouvrir et fermer une connection est très couteux. Ceci dit, c'est pas pour autant qu'il faut avoir qu'une connection partagé par tous le monde et qui dure indéfiniment. Il est généralement d'usage dans une application web d'avoir une connection par requête utilisateur (un GET sur une page). Pour un client lourd, c'est une connection par fenêtre. Après, ca se nuance par projet.
Après pourquoi ton collègue n'a pas des perfs dégueulasse, c'est que justement, les fournisseurs de composants d'accès aux données ont créé le concept de Connection Pool. Grosso modo, même si tu fermes une connection dans ton code, elle n'est pas effectivement fermée et peut être réutilisée si une autre requête SQL en a besoin. Ca permet d'économiser du temps. Tu peux t'amuser à désactiver le Connection Pool et tu veras une nette dégradation des performances entre ouvrir une connection globale et ouvrir pour chaque requête.
__________________
Retrouvez moi sur : |
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Danie Marie-Sainte Inscription : novembre 2009 Messages : 42 ![]() |
Merci à vous pour vos conseils.
Je vais donc récupérer toutes mes données avec la même conexion. Merci aussi pour le lien avec les video. Je vais me débrouiller même si c'est en anglais, il faut vraiment que je me documente sur EF ... |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com