eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingVisualStudio C# - Okienko Logowania do bazy SQL... › Re: VisualStudio C# - Okienko Logowania do bazy SQL...
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: "Robert Winkler" <w...@N...fm>
    Newsgroups: pl.comp.programming
    Subject: Re: VisualStudio C# - Okienko Logowania do bazy SQL...
    Date: Thu, 10 Dec 2009 09:32:15 +0100
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 79
    Message-ID: <hfqbmf$bsd$1@inews.gazeta.pl>
    References: <hfh2fs$aat$1@atlantis.news.neostrada.pl>
    <hfp1u0$1o2$1@nemesis.news.neostrada.pl>
    NNTP-Posting-Host: gate.alan-systems.com
    Mime-Version: 1.0
    Content-Type: text/plain; format=flowed; charset="ISO-8859-1"; reply-type=response
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1260433935 12173 62.181.186.82 (10 Dec 2009 08:32:15 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 10 Dec 2009 08:32:15 +0000 (UTC)
    Importance: Normal
    In-Reply-To: <hfp1u0$1o2$1@nemesis.news.neostrada.pl>
    X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8089.726
    X-Priority: 3
    X-Newsreader: Microsoft Windows Live Mail 14.0.8089.726
    X-User: robert.k.winkler
    X-MSMail-Priority: Normal
    Xref: news-archive.icm.edu.pl pl.comp.programming:184271
    [ ukryj nagłówki ]

    > Tylko wtedy istota okienka logowania
    > sprawdzala by tylko na chwile czy wykona metode Open
    > a potem zrobi Close i przekaze InitString do bazy ?!
    >
    > W sumie wiekszosc rynkowych aplikacji po zalogowaniu przez caly czas
    > pokazuje
    > jakies informacje lub kartoteki, które podczas pracy przez caly czas sa
    > aktywne....
    >
    > Ale ok, skoro nie da sie w prosty sposób miec dostepna z wszystkich
    > formularzy globalny aktywny obiekt polaczenia z baza bede musial
    > Zrobic tak jak piszesz.....
    > Tylko kazda otwierana kartoteka bedzie opózniana przez zestawienie
    > polaczenia z baza !!!
    > A to spowolni prace calej aplikacji...
    >
    > Dziekuje z góry za kazda opinie - jesli ktos inaczej to robi to prosze o
    > posta !!!

    To, ze twoja aplikacja nie ma jednego globalnego obiektu polaczenia
    reprezentowanego przez obiekt SqlConnection
    wcale nie oznacza iz takie polaczenia nie ma.
    .NETowa implementacja polaczenia do bazy
    posiada w swoim wnetrzu mechanizm puli polaczen.
    Dzieki temu tylko jesli pierwszy raz tworzysz obiekt SqlConnection i
    wywolujesz metode Open
    to tak naprawde zestawiasz nowe polaczenie.
    Pózniej gdy wywolujesz metode Close aby zamknac polaczenia
    albo korzystasz z tego ze jest implementuje ona interfejs IDisposable
    (i poprzez odpowiedni sposób tworzenia obiektu SqlConnection gwarantujesz
    wywolanie metody Dispose)
    polaczenie z baza nie jest zamykane, ale dalej otwarte trafia do wewnetzrnej
    puli polaczen
    z której to zostanie pobrane przy kolejnym utworzeniu obiektu SqlConnection.
    Nie istnieje wiec zaden narzut czasowy na tworzenie kolejnego polaczenia.

    Kolejna zaleta to mozliwosc pracy wielowatkowej,
    z jednej instancji obiektu SqlConnection
    moze w danej chwili korzystac tylko jedna operacja bazodanowa,
    musialbys wiec stworzyc dodatkowy mechanizm blokujacy innym watkom aplikacji
    dostep do bazy
    w momencie gdy którys z nich juz z tego polaczenia korzysta.
    Jesli dwa watki w tym samym czasie beda zadaly dostepu do bazy
    to zostanie poprostu utworzone drugie polaczenia
    i umieszczone w puli aktywnych polaczen.
    Jesli dwa watki z jakichs powodów beda naprzemiennie zadaly dostepu do bazy
    to aplikacja caly czas bedzie korzystala tylko z jednego otwartego
    polaczenia.

    Widze ze fakt iz aplikacja caly czas prezentuje zawartosc bazy danych
    utozsamiasz z koniecznoscia ciaglego utrzymywania polaczenia.
    Musze cie rozczarowac, w przypadku ADO.NET nie jest to prawda.
    U podstaw ADO.NET lezy koncepcja praca bezpolaczeniowej.
    Aplikacja co prawda na starcie laczy sie z serwerem i pobiera dane
    ale pobiera je do lokalnych struktur znajdujacych sie
    w pamieci operacyjnej komputera uzytkownika.
    Gdy dane zostaly juz pobrane polaczenie do bazy mozna zamknac.
    Oznacza to jednak iz uzytkownik nie otrzyma zadnych informacji
    o jakichkolwiek zmianach w bazie danych
    oraz ze zmiany jakie dokona na swoim komputerze nie znajda sie w bazie.
    Za obsluge tego odpowiedzialny jest programista
    który powinien napisac aplikacje w taki sposób
    aby cyklicznie odpytywala baze danych o zmiany
    oraz zapisywala lokalne zmiany w bazie.
    Oczywiscie takie podejscie powoduje kolejne problemy
    jesli wielu uzytkowników modyfikuje te same dane
    program musi bys w stanie rozpoznac konflikty
    i odpowiednio na nie reagowac.
    Moze sie to tez wiazac z odpowiednim projektem samej bazy danych,
    sposobem przechowywania danych,
    oraz koniecznoscia rozszerzenia tabel o dodatkowe informacje techniczne
    konieczne do rozpoznawania i obslugi konfliktów,
    czy tez ulatwiajacych przyrostowa synchronizacje danych pomiedzy SQL'em z
    programem.
    --
    ____________
    Pozdrawiam
    Robert Winkler

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: