[asp.net]Databaseverbinding: globaal of lokaal ?

Pagina: 1
Acties:

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
Ik ben begonnen met asp.net, dmv doorlezen van boeken tutorials en stukken op internet. Wat ik eigenlijk niet tegenkom is het of openen/opzetten van een databaseverbinding in ieder formulier hoort of voor ieder formulier een 'globale' databaseverbinding.

Enerzijds is een lokale verbinding veiliger en beter af te schermen (zegt mijn gevoel), anderzijds is een globele connectie makkelijker programmeren en te beheren (database veranders van naam oid).

Wie heeft hier een goed onderbouwde mening over ?

Verwijderd

Zo lang mogelijk wacht met het openen van een connectie en en deze zo snel mogelijk ook weer sluiten... Niet globaal doen dus... maar ook niet aan het begin van je code voor een pagina een connectie openen en deze aan het einde van je code weer sluiten...

Maar gebruik eerder function zoals zoiets :

code:
1
2
3
4
5
Function GetDataTable (Command as SqlCommand)
  OpenConnection
  ExecDatabase command
  CloseConnection
end Function


Hierdoor geef je zo snel mogelijk deze kostbare resources weer terug aan het OS/Databaseserver.

[ Voor 11% gewijzigd door Verwijderd op 27-07-2005 20:37 ]


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 06-03 20:19

_Thanatos_

Ja, en kaal

Ik heb een class library gemaakt met daarin wat ik noem, een DataHandler. Dit ding zorgt eigenlijk voor het opentrappen van een verbinding, query uitvoeren en iets teruggeven (een object, Hashtable, array van iets, DataSet, DataTable, enz), en verbinding dichtgooien.

Let wel dat dit geen aanslag maakt op je SQL server, omdat ADO.NET zorgt voor connection pooling. Dus met 5 queries is dat gewoon 1 verbinding, ook al worden er in je code 5 verbindingen gemaakt.

In dit verband moet je er uiteraard wel voor zorgen dat je connectionstring op een centrale plek staat. Er wordt altijd aangeraden em in je web.config te zetten, het liefst encrypted.

[ Voor 8% gewijzigd door _Thanatos_ op 28-07-2005 12:36 ]

日本!🎌


  • joopst
  • Registratie: Maart 2005
  • Laatst online: 01-10-2024
als je in asp.net connecties opent en sluit, dan wordt op de achtergrond een connectie uit de 'pool' gehaald en er weer terug in gestopt.
Connecties met dezelfde connectiestring worden in dezelfde pool beheerd.
Het werkelijke verbindingen maken naar de database doet .net dus automatisch voor je.

Als je je connectie niet sluit, dan blijft deze ongebruikt buiten de pool totdat deze timeout. En dat is slecht voor je performance en het aantal 'werkelijke' connecties die .net moet maken naar de database.

je kan het nalezen op de site van Bill Gates