Teraz chciałbym napisać coś z interfejsem okienkowym(MDI) tylko nie
wiem nawet jak się za to zabrać.
Czy trzymać aktywne połączenie przez całe życie programu(jeżeli tak to
jak i gdzie?)
Jak bezpiecznie zaszyć hasło do bazy? w kilku programach spotkałem się
z rozwiązaniem, że użytkownicy są tworzeni na poziomie bazy - czyli
każdy nowy użytkownik programu to nowy użytkownik bazy, takie coś
pozwoliło by nie trzymać hasła do bazy w programie, ale gdybym chciał
mieć użytkowników na poziomie aplikacji(używając jednego usera db) a
nie bazy to jak trzymac to hasło?
Moja główna proźba to prosił bym o tytuł(y) jakichś dobrych książek na
ten temat (C# + windows forms + bazy danych) ale jak by ktoś chciał
powiedzieć kilka słów na ten temat to też będzie miło.
TIA
Pzdr
W �adnym wypadku! Po��czenie tworzysz tylko na czas wykonania zapytania.
Chyba, �e to zapytanie to ca�e �ycie tego programu :)
> Jak bezpiecznie zaszy� has�o do bazy? w kilku programach spotka�em si�
> z rozwi�zaniem, �e u�ytkownicy s� tworzeni na poziomie bazy - czyli
> ka�dy nowy u�ytkownik programu to nowy u�ytkownik bazy, takie co�
> pozwoli�o by nie trzyma� has�a do bazy w programie, ale gdybym chcia�
> mie� u�ytkownik�w na poziomie aplikacji(u�ywaj�c jednego usera db) a
> nie bazy to jak trzymac to has�o?
Wystarczy je zaszyfrowaďż˝.
> Moja g��wna pro�ba to prosi� bym o tytu�(y) jakich� dobrych ksi��ek na
> ten temat (C# + windows forms + bazy danych) ale jak by ktoďż˝ chciaďż˝
> powiedzie� kilka s��w na ten temat to te� b�dzie mi�o.
MSDN.
tm
> > Moja główna proźba to prosił bym o tytuł(y) jakichś dobrych książek na
> > ten temat (C# + windows forms + bazy danych) ale jak by ktoś chciał
> > powiedzieć kilka słów na ten temat to też będzie miło.
>
> MSDN.
No w sumie po wysłaniu tego posta też na to wpadłem ;-)
I tak sobie czytam na MSDN wszystko co się da o ADO.NET + windows
forms, ale mimo wszystko lubię mieć papierową książkę do nauki, więc
jeżeli ktoś mógł by polecić coś wartościowego (najlepiej bogatego w
przykłady) to było by miło.
Po lekkim serczu na amazonie znalazłem:
http://www.amazon.com/Professional-ADO-NET-Entity-Framework-Programmer/dp/047018261X/
http://www.amazon.com/Programming-Entity-Framework-Julia-Lerman/dp/059652028X/
http://www.amazon.com/ADO-NET-3-5-Cookbook-Cookbooks-OReilly/dp/0596101406/
Tylko fajnie by było kupić coś "sprawdzonego".
Pozdrawiam i dzięki
Jakub Owczarski
A tak z ciekawo�ci. Czemu nie?
Zanczy czy sďż˝ jakieďż˝ powody techniczne czy teďż˝ raczej ideologoczne ;)
Pozdrawiam
Mariusz
>> Jak bezpiecznie zaszy� has�o do bazy? w kilku programach spotka�em si�
>> z rozwi�zaniem, �e u�ytkownicy s� tworzeni na poziomie bazy - czyli
>> ka�dy nowy u�ytkownik programu to nowy u�ytkownik bazy, takie co�
>> pozwoli�o by nie trzyma� has�a do bazy w programie, ale gdybym chcia�
>> mie� u�ytkownik�w na poziomie aplikacji(u�ywaj�c jednego usera db) a
>> nie bazy to jak trzymac to has�o?
>
> Wystarczy je zaszyfrowaďż˝.
No tak.
Tylko, �e zawsze mo�na to odszyfrowa�.
Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
zaszyfrowane dziecinnie �atwo "wysnifowa�".
A przecie� w MS SQL jest takie tw�r jak Application Role...
/ciach/
--
wloochacz
Bo to dobra praktyka sprawdzona i pewna
> Dla wielu kr�tkich zapyta�, gdzie ka�de tworzy w�asne connection i to
> si� musi z baz� po��czy� (a baza alokuje zasoby dla takiego connection),
> to... doskona�y pomys�.
> Tak, rewelacja...
znasz program kt�ry robi duzo ma�ych zapyta� je�li taki tworzysz to to
jest to bardzo dziwne podej�cie do tematu (robisz zapytanie sqlowe do
ka�dego textboxa ? czy raczej bierzesz z bazy to co jest ci potrzebne za
jenym razem?)
> No i cz w/w uwaga dotyczy wszelkiej ma�ci baz danych, czy tylko np. MS SQL?
> Jako� nie mog� si� odczepi� od zwi�zk�w, �e je�li .NET to MS SQL :)
Wszystkich z wyj�tkiem baz objekowch
> No tak.
> Tylko, �e zawsze mo�na to odszyfrowa�.
> Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
> zaszyfrowane dziecinnie �atwo "wysnifowa�".
Wszystko idzie wysnifowaďż˝ .....
> A przecie� w MS SQL jest takie tw�r jak Application Role...
Istnieje dop�ty dop�ki nie trafisz na op�r materii ludzkiej.
Wracaj�c do tematu, takie podej�cie jest standardowe w aplikacjach
webowych, ale w WindowsForms, gdzie aplikacja dzia�a (zzwyczaj) w trybie
state full?
Po co?
Zrozumia�bym jeszcze takie podej�cie, gdzie jest automatycznie
zarz�dzana pula po��cze� - wtedy, ok.
Lecz je�eli tego nie ma, to zbytnie szafowanie zasobami serwera - imo.
>> No i cz w/w uwaga dotyczy wszelkiej ma�ci baz danych, czy tylko np. MS
>> SQL?
>> Jako� nie mog� si� odczepi� od zwi�zk�w, �e je�li .NET to MS SQL :)
>
> Wszystkich z wyj�tkiem baz objekowch
Masz na my�li obiektowych? A jakie to ma znaczenie, czy to baza
obiektowa, relacyjna czy relacyjna-obiektowa?
>> No tak.
>> Tylko, �e zawsze mo�na to odszyfrowa�.
>> Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
>> zaszyfrowane dziecinnie �atwo "wysnifowa�".
>
> Wszystko idzie wysnifowaďż˝ .....
To nie jest argument. �aden.
>> A przecie� w MS SQL jest takie tw�r jak Application Role...
>
> Istnieje dop�ty dop�ki nie trafisz na op�r materii ludzkiej.
A tego nie rozumiem - co to ma do rzeczy?
--
wloochacz
/ciach/
--
wloochacz
Zaiste w pe�ni si� zgadzam :)
>>> No i cz w/w uwaga dotyczy wszelkiej ma�ci baz danych, czy tylko np.
>>> MS SQL?
>>> Jako� nie mog� si� odczepi� od zwi�zk�w, �e je�li .NET to MS SQL :)
>>
>> Wszystkich z wyj�tkiem baz objekowch
> Masz na my�li obiektowych? A jakie to ma znaczenie, czy to baza
> obiektowa, relacyjna czy relacyjna-obiektowa?
Obiektowa - ma znaczenie.
>
>>> No tak.
>>> Tylko, �e zawsze mo�na to odszyfrowa�.
>>> Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
>>> zaszyfrowane dziecinnie �atwo "wysnifowa�".
>>
>> Wszystko idzie wysnifowaďż˝ .....
> To nie jest argument. �aden.
To bardzo mocny argument.
>
>>> A przecie� w MS SQL jest takie tw�r jak Application Role...
>>
>> Istnieje dop�ty dop�ki nie trafisz na op�r materii ludzkiej.
> A tego nie rozumiem - co to ma do rzeczy?
W sumie nic do p�ki nie trafisz na administratora troglodyt�, kt�ry sql
server traktuje jak czasrne pude�ko lub maszyn� kt�ra robi "pik" jak w
monty-pythonie lub te� trafisz na innego zbocze�ca kt�ry powie bo nie.
Poza tym ograniczasz siďż˝ tymsamym do MSsql.
po to aby nie trzyma� po��czenia kiedy nic nie jest wysy�ane ?
po to by szanowaďż˝ czas serwera i jego zasoby ?
>>>> No tak.
>>>> Tylko, �e zawsze mo�na to odszyfrowa�.
>>>> Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
>>>> zaszyfrowane dziecinnie �atwo "wysnifowa�".
>>>
>>> Wszystko idzie wysnifowaďż˝ .....
>> To nie jest argument. �aden.
>
> To bardzo mocny argument.
Eee.. tam; chodzi�o mi o poziom wymaganej wiedzy do z�amania danego
sposobu autoryzacji - tu jest prosto, inne sposoby daj� wy�sze poziomy
bezpiecze�stwa. Po prostu nie jest tak hop-sip - zainstalowa� Wireshark
i lux.
>>>> A przecie� w MS SQL jest takie tw�r jak Application Role...
>>>
>>> Istnieje dop�ty dop�ki nie trafisz na op�r materii ludzkiej.
>> A tego nie rozumiem - co to ma do rzeczy?
>
> W sumie nic do p�ki nie trafisz na administratora troglodyt�, kt�ry sql
> server traktuje jak czasrne pude�ko lub maszyn� kt�ra robi "pik" jak w
> monty-pythonie lub te� trafisz na innego zbocze�ca kt�ry powie bo nie.
> Poza tym ograniczasz siďż˝ tymsamym do MSsql.
To "tylko" zmiana sposobu autoryzacji - przy dobrze zaprojektowanym
systemie do "pikuďż˝" :)
Obiektowe bazy danym cnaj� to do siebie �e s� obiektowe ? i
objekty.maj�swojemetody
albo
objekty.maj�KolekcjeObjekt�w.ktremaj�obiekty(0).imaj�metody()
kt�re w momencie sejw je�dz� po wielu "tabelach" i czasem zapisanie
czego� poni�ej wymaga otwartego po��cznia do bazy kt�re czasem lepiej
jest potrzyma� d�u�ej, bo tw�j jeden zapis po stronie kodu mo�e
powodowa� wiele zapis�w po stronie bazy -ot relacje.
>
>>>>> No tak.
>>>>> Tylko, �e zawsze mo�na to odszyfrowa�.
>>>>> Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
>>>>> zaszyfrowane dziecinnie �atwo "wysnifowa�".
>>>>
>>>> Wszystko idzie wysnifowaďż˝ .....
>>> To nie jest argument. �aden.
>>
>> To bardzo mocny argument.
> Eee.. tam; chodzi�o mi o poziom wymaganej wiedzy do z�amania danego
> sposobu autoryzacji - tu jest prosto, inne sposoby daj� wy�sze poziomy
> bezpiecze�stwa. Po prostu nie jest tak hop-sip - zainstalowa� Wireshark
> i lux.
mo�na zainstalowa� fidlera, .Net Reflektora lub inne dziadowskie
oprogramowanie i jak b�dziesz chcia� si� dowiedzie� na pewno si�
dowiesz. Poza tym jak chcesz ju� na prawd� by� bezpieczny to przesy�asz
dane https'em przez webservice czy inaczej modnym sk�d in�d serwisem
ostatnio WCF'owym do aplikacji Windows a nie kombinujesz z Conection
Stringami po stronie aplikacji Windows - one nie s� tam potrzebne do �ycia.
>
>
>>>>> A przecie� w MS SQL jest takie tw�r jak Application Role...
>>>>
>>>> Istnieje dop�ty dop�ki nie trafisz na op�r materii ludzkiej.
>>> A tego nie rozumiem - co to ma do rzeczy?
>>
>> W sumie nic do p�ki nie trafisz na administratora troglodyt�, kt�ry
>> sql server traktuje jak czasrne pude�ko lub maszyn� kt�ra robi "pik"
>> jak w monty-pythonie lub te� trafisz na innego zbocze�ca kt�ry powie
>> bo nie.
>> Poza tym ograniczasz siďż˝ tymsamym do MSsql.
> To "tylko" zmiana sposobu autoryzacji - przy dobrze zaprojektowanym
> systemie do "pikuďż˝" :)
�eby� wiedzia� kolego jaki ten piku� potrafi by� gigantyczny i nie do
przeskoczenia w realnym �wiecie - jak ci si� jeden z drugi uprze. Owszem
implementacja pikuďż˝,
--
wloochacz
>>>>>> No tak.
>>>>>> Tylko, �e zawsze mo�na to odszyfrowa�.
>>>>>> Poza tym, je�eli ��cze z baz� nie b�dzie szyfrowane, to takie
>>>>>> zaszyfrowane dziecinnie �atwo "wysnifowa�".
>>>>>
>>>>> Wszystko idzie wysnifowaďż˝ .....
>>>> To nie jest argument. �aden.
>>>
>>> To bardzo mocny argument.
>> Eee.. tam; chodzi�o mi o poziom wymaganej wiedzy do z�amania danego
>> sposobu autoryzacji - tu jest prosto, inne sposoby daj� wy�sze poziomy
>> bezpiecze�stwa. Po prostu nie jest tak hop-sip - zainstalowa�
>> Wireshark i lux.
>
> mo�na zainstalowa� fidlera, .Net Reflektora lub inne dziadowskie
> oprogramowanie i jak b�dziesz chcia� si� dowiedzie� na pewno si�
> dowiesz. Poza tym jak chcesz ju� na prawd� by� bezpieczny to przesy�asz
> dane https'em przez webservice czy inaczej modnym sk�d in�d serwisem
> ostatnio WCF'owym do aplikacji Windows a nie kombinujesz z Conection
> Stringami po stronie aplikacji Windows - one nie s� tam potrzebne do �ycia.
Ale s� proste i skuteczne, poza tym to naprawd� zale�y co si� tam
pisze... Nie wsz�dzie jest potrzebna architektura komponentowa, a zwyk�y
connection string wystarczy - przy jakiej� ma�ej aplikacyjce...
>>>>>> A przecie� w MS SQL jest takie tw�r jak Application Role...
>>>>>
>>>>> Istnieje dop�ty dop�ki nie trafisz na op�r materii ludzkiej.
>>>> A tego nie rozumiem - co to ma do rzeczy?
>>>
>>> W sumie nic do p�ki nie trafisz na administratora troglodyt�, kt�ry
>>> sql server traktuje jak czasrne pude�ko lub maszyn� kt�ra robi "pik"
>>> jak w monty-pythonie lub te� trafisz na innego zbocze�ca kt�ry powie
>>> bo nie.
>>> Poza tym ograniczasz siďż˝ tymsamym do MSsql.
>> To "tylko" zmiana sposobu autoryzacji - przy dobrze zaprojektowanym
>> systemie do "pikuďż˝" :)
>
> �eby� wiedzia� kolego jaki ten piku� potrafi by� gigantyczny i nie do
> przeskoczenia w realnym �wiecie - jak ci si� jeden z drugi uprze. Owszem
> implementacja pikuďż˝,
Napisa�em - dobrze zaprojektowany system, to np. taki kt�ry potrafi
autoryzowa� si� za pomoc� r�nych metod i kana��w (WebService, baz
danych, serwer aplikacyjny czy cokolwiek innego). Interfejs
autoryzacyjny jest taki sam - implementacje r�ne.
Jak facio chce appRole - spoko, odpowiedni plugin i szlus.
Je�eli chce WS - tak samo i analogicznie dalej. To naprawd� nie jest
trudne do zrobienia - podkre�lam, mam na my�li tylko i wy��cznie
mechanizm autoryzacji.
--
wloochacz
A co to ma wsp�lnego z aplikacja Windows Forms? Zreszt� wtedy wystarczy
siďż˝ dostaďż˝ do serwera z danymi.
Nie ma zupe�nie nic z�ego w bezpo�rednim ��czeniu si� do bazy.
Zastosowanie Web Service'�w, WCF ma wynika�
z potrzeb, a nie po to �eby programista m�g� zaszpanowa� jakiej to
technologii nie zna.
Chyba czego� nie rozumiesz. W�a�nie po to jest connection pooling, aby�
zamyka� i otwiera� po��czenia bardzo cz�sto.
Dzi�ki temu mo�esz mie� jednocze�nie wi�cej u�ytkownik�w pracuj�cych z
bazďż˝.
To i nic wi�cej na temat nie trzeba. Zobacz opinie. Polecaj� j� te� ludzie
z MS.
>
>> http://www.amazon.com/Programming-Entity-Framework-Julia-Lerman/dp/059652028X/
>
> To i nic wi�cej na temat nie trzeba. Zobacz opinie. Polecaj� j� te�
> ludzie z MS.
Oczywi�cie je�eli chcesz programowa� z wykorzystaniem EntityFramework.
> 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.
> Dzi�ki temu mo�esz mie� jednocze�nie wi�cej u�ytkownik�w pracuj�cych z
> bazďż˝.
Niezupe�nie tak - mog� sprawi�, aby kod wykonywa� si� r�wnolegle, a nie
sekwencyjnie. Prawie wszystkie bazy danych, maj� krety�skie
ograniczenie, kt�re nie pozwala mie� aktywnych wielu zestaw�w danych,
kt�re korzystaj� z tego samego po��czenia. Chlubnym wyj�tkiem jest
Firebird (tu mo�na mie� nawet wiele transakcji w tym samym connection i
nie mam na my�li save point�w) i ciekaw� inicjatyw� jest MARS dost�pny
od MS SQL Server 2005.
--
wloochacz
> 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ďż˝?
Jednak nie rozumiesz chyba idei connection poolingu.
Poniewa� zalecan� metod� pracy jest tworzenie po��czenia na czas zapytania
i zamykanie po jego wykonaniu
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). Dzi�ki temu
wi�cej klient�w mo�e pracowa� r�wnolegle. Connection pooling daje ci tylko
to, �e szybciej uzyskujesz po��czenia.
Gdyby� mia� ca�y czas otwarte po��czenia to ConnectionPooling do niczego
nie by�by ci potrzebny.
>> Dzi�ki temu mo�esz mie� jednocze�nie wi�cej u�ytkownik�w pracuj�cych z
>> bazďż˝.
> Niezupe�nie tak - mog� sprawi�, aby kod wykonywa� si� r�wnolegle, a nie
> sekwencyjnie. Prawie wszystkie bazy danych, maj� krety�skie
> ograniczenie, kt�re nie pozwala mie� aktywnych wielu zestaw�w danych,
> kt�re korzystaj� z tego samego po��czenia. Chlubnym wyj�tkiem jest
> Firebird (tu mo�na mie� nawet wiele transakcji w tym samym connection i
> nie mam na my�li save point�w) i ciekaw� inicjatyw� jest MARS dost�pny
> od MS SQL Server 2005.
>
Czy nie widzisz, �e piszesz o czym� zupe�nie innym? Pisz� o wielu
u�ytkownikach jednocze�nie, a ty mi tu o MARSie piszesz.
Serwer bazy danych ma ograniczon� liczb� po�acze�, kt�re mo�e mie� na raz
otwarte. Wynika to g��wnie z przyczyn sprz�towych (wielko�� pami�ci) ale te�
czasami z licencyjnych. Poza tym od kiedy wymy�lono Connection Pooling
trzymanie otwartych po��cze� nie ma najmniejszego sensu.
yamma
Pisa�e� kiedykolwiek w czym� innym ni� .NET?
Tam gdzie nie by�o poolingu?
> Jednak nie rozumiesz chyba idei connection poolingu.
Oczywi�cie.
> 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.
> 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.
> 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.
> 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...
>>> Dzi�ki temu mo�esz mie� jednocze�nie wi�cej u�ytkownik�w pracuj�cych
>>> z bazďż˝.
>
>> Niezupe�nie tak - mog� sprawi�, aby kod wykonywa� si� r�wnolegle, a
>> nie sekwencyjnie. Prawie wszystkie bazy danych, maj� krety�skie
>> ograniczenie, kt�re nie pozwala mie� aktywnych wielu zestaw�w danych,
>> kt�re korzystaj� z tego samego po��czenia. Chlubnym wyj�tkiem jest
>> Firebird (tu mo�na mie� nawet wiele transakcji w tym samym connection
>> i nie mam na my�li save point�w) i ciekaw� inicjatyw� jest MARS
>> dost�pny od MS SQL Server 2005.
>>
> Czy nie widzisz, �e piszesz o czym� zupe�nie innym? Pisz� o wielu
> u�ytkownikach jednocze�nie, a ty mi tu o MARSie piszesz.
Powiem tak, �eby� zrozumia�; a co gdyby u�ytkownik by� de-facto
polecenim SQL, a wi�c chodzi o to, �e u�ytkownicy wykonuj� polecenia SQL
za pomocďż˝ jednego globalnego connection?
--
wloochacz
>> 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ďż˝.
http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
"We strongly recommend that you always close the connection when you are
finished using it so that the connection will be returned to the pool. You
can do this using either the Close or Dispose methods of the Connection
object, or by opening all connections inside a using statement in C#, or a
Using statement in Visual Basic. Connections that are not explicitly closed
might not be added or returned to the pool."
yamma
�eby by�a jasno��; Connection Pooling w ADO.NET przy po��czeniach z SQL
Server jest bardzo OK i absolutnie nie jestem jej przeciwnikiem.
Ale nie jest to globalna zasada, kt�ra dotyczy wszystkiego i w ka�dej
sytuacji.
--
wloochacz
Nie wiem jak inni ale ja odnosz� wra�enie, �e dyskutujesz z samym sob�.
Pytanie by�o o to, czy trzyma� aktywne po��czenie przez ca�y czas �ycia
programu. Ty si� czepi�e� tematu baza z Connection Poolingiem vs baza bez
Connection Poolingu, w dodatku podaj�c jako argumenty sytuacje do��
ekstremalne i wynikaj�ce raczej z niekompetencji architekta aplikacji.
Wiesz, my tutaj w wiekszo�ci wiemy co to jest Connection Pooling i nie
musisz nas u�wiadamia�. :-) Ja w ka�dym b�d� razie nie zamierzam o tym
dyskutowa�. Ja tylko odpowiedzia�em na twoje pytanie o to, gdzie to jest
napisane.
yamma
> Pytanie by�o o to, czy trzyma� aktywne po��czenie przez ca�y czas �ycia
> programu. Ty si� czepi�e� tematu baza z Connection Poolingiem vs baza
> bez Connection Poolingu, w dodatku podaj�c jako argumenty sytuacje do��
> ekstremalne i wynikaj�ce raczej z niekompetencji architekta aplikacji.
Mhm... niech Ci b�dzie; tzn - tak, przyk�ady s� skrajne i by� mo�e,
naci�gane - zw�aszcza w kontek�cie grupy (.NET), ale z ta niekompetencj�
to chyba nie do ko�ca si� rozumiemy.
> Wiesz, my tutaj w wiekszo�ci wiemy co to jest Connection Pooling i nie
> musisz nas u�wiadamia�. :-)
OK, nie b�d�. Ale dalej podtrzymuje swoje stanowisko - w przytoczonym
przez Ciebie nie tego, co chcia�em aby mi pokazano; innymi s�owy - ciut
nie na temat....
> Ja w ka�dym b�d� razie nie zamierzam o tym
> dyskutowa�. Ja tylko odpowiedzia�em na twoje pytanie o to, gdzie to jest
> napisane.
No wi�c w�a�nie niezupe�nie...
Ale, OK - EOT z pozdrowieniem :)
--
wloochacz
> yamma pisze:
>> wloochacz wrote:
>>> 3P pisze:
>>
>>>> Poniewa� zalecan� metod� pracy jest tworzenie po��czenia na czas
>>>> zapytania i zamykanie po jego wykonaniu
>>> Bzdura.
>>> Kto to zaleca w WindowsForms?
>> http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx
>> "We strongly recommend that you always close the connection when you
>> are finished using it so that the connection will be returned to the
>> pool. You can do this using either the Close or Dispose methods of the
>> Connection object, or by opening all connections inside a using
>> statement in C#, or a Using statement in Visual Basic. Connections that
>> are not explicitly closed might not be added or returned to the pool."
> Tu jest napisane, �e oni mocno zalecaj� zamykanie nieu�ywanego
> po��czenia, �eby wr�ci�o do puli.
> A nie tego, �e mocno zalecaj� u�ywania connection pooling.
>
Widz�, �e masz spore problemy z czytaniem ze zrozumieniem. Napisa�em ci,
�e si� otwiera i zamyka po��czenia po ich wykorzystaniu
z czym si� nie zgodzi�e�. Kolega zacytowa�, �e MS to zaleca, na co ty
odpowiadasz, �e oni nie zalecaj� connection poolingu
tylko zamykanie po��czenia po jego wykorzystaniu (o czym ja napisa�em) LOL!
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.
Bez komentarza
--
wloochacz
Wcze�niej zacytowa�em ca�y tekst i podkre�li�em, ale si� rozjecha�o.