.NET i takie tam

SqlConnection vs. SqlCeConnection

with one comment

Takie spostrzeżenie – niby wszystko, na platformie .NET, jest uogólnione i każdy (no prawie) obiekt można wykorzystywać w ten sam sposób. Jednakże nie znaczy, że powinniśmy to robić. Weźmy np. SqlConnection i jego odpowiednik na urządzeniach przenośnych SqlCeConnection. Otóż generalną zasadą dla SqlConnection jest – utwórz połączenie zrób co trzeba i jak najszybciej je zamknij.

Można w ten sam sposób postąpić z SqlCeConnection – jednakże jest mały kruczek. Otóż koszt utworzenia i późniejszego zwolnienia zasobów (szczególnie tych niezarządzanych) jest stosunkowo wysoki i zalecane jest aby utworzyć jedno połączenie i zamknąć je dopiero przy zakończeniu pracy.

Takie podejście jednak ma swoje minusy – otóż Microsoft – ‘zaleca’ żeby aplikacje pracujące na urządzeniach przenośnych nie miały opcji ‘Exit’ (inaczej na pewno nie dostaniemy certyfikacji – jeśli o takową się staramy). Więc powstaje pytanie kiedy zamknąć nasze połączenie?😉

Poza tym poważniejszym, problemem jest to, że SqlCeConnection nie jest bezpieczne dla wątków. Możemy to rozwiązać na dwa sposoby:

  • Tworzenie odrębnych połączeń dla poszczególnych wątków.

Z mojej praktyki uważam, że drugie rozwiązanie jest bezpieczniejsze – fakt może wydawać się, że jest ono wolniejsze, jednakże należy pamiętać – że używanie słowa kluczowego lock (którego musimy użyć) – jest bardzo kosztowne – w przypadku gdy tworzymy dużo wątków – rozwiązanie pierwsze może być nawet wolniejsze.

Written by sakowicz

Kwiecień 18, 2007 @ 8:08 am

Napisane w .NET CF

Jedna odpowiedź

Subscribe to comments with RSS.

  1. Singletona mozna zaimplementowac rowniez bez locka:
    http://www.yoda.arachsys.com/csharp/singleton.html

    Aleks

    Wrzesień 6, 2007 at 11:33 pm


Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s

%d bloggers like this: