Article View: alt.pl.comp.lang.csharp
Article #21074Re: windows forms i bazy danych
From: 3P
Date: Tue, 06 Oct 2009 13:38
Date: Tue, 06 Oct 2009 13:38
108 lines
5863 bytes
5863 bytes
Dnia 06-10-2009 o 11:40:22 wloochacz <nospam.wloochacz@nospam.dgbit.pl>
napisał(a):
> 3P pisze:
>> Dnia 05-10-2009 o 12:39:10 wloochacz <nospam.wloochacz@nospam.dgbit.pl>
>> napisał(a):
>>
>>> 3P pisze:
>>> /ciach/
>>>
>>>> Chyba czegoś nie rozumiesz.
>>> Nie sądzę...
>>>
>>>> Właśnie po to jest connection pooling, abyś zamykał i otwierał
>>>> połączenia bardzo często.
>>> Niezupełnie.
>>> Connection pooling jest po to, abyś nie musiał robić osobnego
>>> "connection dla każdego zapytania", ot co...
>>> A "przy okazji" załatwia w inteligentny (mniej lub bardziej) cykl
>>> życia danego connection, które jest zarządzane pulą.
>>> Generalnie mechanizm jest prosty; potrzebujesz connection prosisz pulę
>>> o nie. Ono Ci daje to które jest aktualnie wolne, lub tworzy je dla
>>> Ciebie, kiedy wolnego nie ma.
>>> Kiedy connection nie jest Ci potrzebne - wraca do puli i czeka na
>>> następne żądania.
>>> Dzięki temu nie musisz się martwić o to, czy dane connection nie jest
>>> zaalokowane przez inne zapytanie.
>>>
>> Nie rozumiem o czym piszesz w ostatnim zdaniu. A kiedy niby musze się
>> martwić?
> Otwórz sobie recordset z kursorem po stornie serwera (nawet w .NET da
> się to zrobić...), nie zamykaj goi do tego samego połączenia (ta sama
> instancja, czyli bez puli) podepnij nową instancję w/w zapytania.
> Jak trafisz na komunikat "connection is busy with another resultset", to
> wróć i pogadamy.
Skoro nie da się w .NET to po jakiego grzyba to tutaj piszez? Zauważyłeś
nazwę grupy?
Poza tym jakbym chciał wykonywać 2 operacje jednocześnie to bym miał 2
połączenia, albo MARS.
>
> Pisałeś kiedykolwiek w czymś innym niż .NET?
> Tam gdzie nie było poolingu?
Tak, ale nie pisałem aplikacji bazo danowych. A ty chyba w .NET dopiero
zaczynasz.
>
>> Jednak nie rozumiesz chyba idei connection poolingu.
> Oczywiście.
Dobrze, że tutaj się zgadzamy.
>
>> Ponieważ zalecaną metodą pracy jest tworzenie połączenia na czas
>> zapytania i zamykanie po jego wykonaniu
> Bzdura.
> Kto to zaleca w WindowsForms?
> Gdzie to jest napisane?
> Pokaż proszę.
> Nie piszę w .NET i nie piszę app webowych.
>
Już kolega zacytował. To po cholerę się wypowiadasz jak nie masz pojęcia o
.NET?
>> to stosuje się connection pooling, aby nie tracić czasu na tworzenie
>> nowych połączeń. Dzięki temu
>> masz cały czas dostępne obiekty połączeń do bazy (tzn. klienci mogą się
>> łączyć do bazy).
> Tak, ale te połączenia i tak zostały stworzone i są utrzymywane przez
> pulę - wszystko dzieje się automatycznie, to całą różnica.
>
>> Dzięki temu
>> więcej klientów może pracować równolegle.
> Dzięki czemu? Jak pooling przekłąda się na "więcej klientów"?
> Chyba nie rozumiesz idei connection poolingu.
A no tak mądralo, że serwer ma ograniczoną liczbę jednoczesnych połączeń.
Abyś zrozumiał, bo widzę,
że masz spore problemy wyjaśnię ci na takim przykładzie.
Serwer ma ograniczenie do 3 jednoczesnych połączeń. Wg twojego super
designe'u 3 klientów odpala
aplikację i wykorzystuje te 3 połączenia. Teraz 4 klient chce się połączyć
i dupa!
W "moim" projekcie każdy z nich bardzo krótko wykorzystuje połączenie.
Dzięki temu 4 i 40 klient podłącza się
bez problemu.
Teraz zrozumiałeś jak connection pooling przekłada się na więcej klientów?
Oczywiście bez CP też można
to osiągnąć, ale uzyskiwanie połączeń będzie dłuższe.
>
>> Connection pooling daje ci tylko to, że szybciej uzyskujesz połączenia.
> Niezupełnie szybciej - po prost pula trzyma połączenia, więc dostajesz
^^^^^^^^^^^^^^^^^^^^
> istniejące aktywne połączenie. Jeżeli pula nie ma wolnych aktywnych
> połączeń to musi je utworzyć; tyle że w przypadku MS SQLa utworzenie
> połączenia typu pooled nie wymaga wykonania wszystkich akcji, które są
> wymagane do utworzenia normalnego połączenia - a więc tak, tworzenia
> połączenia typu pooled jest szybsze.
^^^^^^^^^^^^^
Bez komentarza
>
>> Gdybyś miał cały czas otwarte połączenia to ConnectionPooling do
>> niczego nie byłby ci potrzebny.
> Co Ty nie powiesz?
> Jest potrzebny - spróbuj utrzymać połączenie i wykonać jakąś operację,
> ale równolegle w wielu wątkach używając tego samego połączenia (nie
> puli).
> A potem wróć i pochwal się wynikami...
Już ci napisałem jak to się robi.
Technical Details
Message-ID:
<op.u1dr580vmsp0fz@mcs>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!plix.pl!newsfeed1.plix.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mailReferences:
<3489e71f-a9c5-4e6a-9c8e-4277001d27bc@m11g2000yqf.googlegroups.com> <ha3ac0$hgl$2@nemesis.news.neostrada.pl> <ha4i1f$4d9$1@nemesis.news.neostrada.pl> <ha4p6t$3nu$1@news.wp.pl> <ha4rg5$emt$2@atlantis.news.neostrada.pl> <ha4s9n$5b4$1@news.wp.pl> <ha51bp$qgu$2@nemesis.news.neostrada.pl> <op.u06mdg0fmsp0fz@mcs> <hacism$53m$1@nemesis.news.neostrada.pl> <op.u1b911l6msp0fz@mcs> <haf3b7$bqo$1@atlantis.news.neostrada.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!nf1.ipartners.pl!ipartners.pl!plix.pl!newsfeed1.plix.pl!news.nask.pl!news.nask.org.pl!news.onet.pl!not-for-mail From: 3P <nospam@serwer.pl> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: windows forms i bazy danych Date: Tue, 06 Oct 2009 15:38:22 +0200 Organization: http://onet.pl Lines: 108 Message-ID: <op.u1dr580vmsp0fz@mcs> References: <3489e71f-a9c5-4e6a-9c8e-4277001d27bc@m11g2000yqf.googlegroups.com> <ha3ac0$hgl$2@nemesis.news.neostrada.pl> <ha4i1f$4d9$1@nemesis.news.neostrada.pl> <ha4p6t$3nu$1@news.wp.pl> <ha4rg5$emt$2@atlantis.news.neostrada.pl> <ha4s9n$5b4$1@news.wp.pl> <ha51bp$qgu$2@nemesis.news.neostrada.pl> <op.u06mdg0fmsp0fz@mcs> <hacism$53m$1@nemesis.news.neostrada.pl> <op.u1b911l6msp0fz@mcs> <haf3b7$bqo$1@atlantis.news.neostrada.pl> NNTP-Posting-Host: host-81-190-76-76.gdynia.mm.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1254836326 24397 81.190.76.76 (6 Oct 2009 13:38:46 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Tue, 6 Oct 2009 13:38:46 +0000 (UTC) User-Agent: Opera Mail/10.00 (Win32) X-Antivirus: avast! (VPS 091005-0, 2009-10-05), Outbound message X-Antivirus-Status: Clean Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit