Microsoft udostępnia kilka gotowych implementacji, jak i gamę interfejsów umożliwiających napisanie własnego providera. Dostępne providery:
- OleDb - SQL Server, SyBase, DB2/400. Microsoft Access
- Odbc - połączenie do wielu źródeł danych
- SQL Server - MS SQL
Obiekt połączenia - DbConnection
Aby móc pobierać i wysyłać dane należy stworzyć połączenie do źródła danych. Podczas tworzenia obiektu połączenia należy podać ConnectionString, który wskazuje gdzie znajduje się źródło i przekazuje dodatkowe parametry. Po zakończeniu pracy z źródłem, połączenie należy zamknąć aby zwolnić używane zasoby.
Przykład stworzenia połączenia:
Code:
Warto sobie zapisać adres strony http://www.connectionstrings.com. Zawiera ona potrzebne dane do połączenia z bazami danych, plikami danych oraz innymi źródłami.
Przechowywanie ConnectionString-a
ConnectionString najlepiej przechowywać w jednej z podanych lokalizacji:
- app.config
- web.config
- machine.config
Dodatkowo dzięki klasie ConfigurationManager w łatwy sposób wydobędziemy informacje potrzebne do połączenia z bazą danych.
Przykład:
Code:
Pobranie tak zdefiniowane ConnectionString-a:
Code:
Connection Pool
Tworzenie połączenia do bazy danych jest kosztowne. Aby zaradzić temu problemowi oferowany jest connection pool. Wyobrazić sobie można go jako cache o określonej wielkości. Gdy aplikacja potrzebuje połączenia, sprawdza czy w connection poolu istnieje wolne. Jeżeli tak zwraca je. Jeżeli nie istnieje wolne, ale nie osiągnięto jeszcze maksymalnej wielkości app poola, połączenie zostanie stworzone i zwrócone. Ostania ewentualność to brak wolnych połączeń i osiągnięcie maksymalnej wielkości connection poola. W takim przypadku żądanie o połączenie zostanie umieszczone w kolejce i po zwolnieniu przez inną aplikację połączenia - przydzielone do oczekującej aplikacji.
Connection pool kontrolowany jest przez parametry przekazywane do connection string-a. Możemy między innymi ustalić minimalną i maksymalną wielkość cache, czy połączenie ma być resetowane.
Aby connection pool działał, muszą być spełnione następujące warunki:
- connection string dla każdego połączenia musi być takie same (dotyczy także wielkości znaków)
- user id dla każdego procesu musi być takie same (jeżeli nie logujemy się za pomocą loginu i hasła, zostanie pobrany login konta systemowego)
- ID procesu musi być taki sam
Fakty odnoście connection pool:
- Cache tworzony jest po stronie klienta aplikacji - aplikacja serwerowa nie wie o nim.
- connection pool tworzony jest po pierwszym utworzeniu połączenia i otarciu go
- połączenie w connection pool przebywa domyślnie od 4 - 8 minut. Jeżeli chcemy, aby zawsze było dostępne jedno lub więcej należy zdefiniować tę liczbę w connection stringu
- domyślnie connection pool ustawiony jest na maksymalnie 100 połączeń. Ilość użytych połączeń można sprawdzić w narzędziu Performance Monitor
- connection pool można wyłączyć, jednak nie jest to zalecane i może znacząco obniżyć wydajność naszej aplikacji
- czyścić connection pool możemy za pomocą statycznych metod połączenia: ClearPool oraz ClearAllPools
Brak komentarzy:
Prześlij komentarz