czemu system sie zawiesza? czemu aplikacja, ktora normalnie dziala, po kilqnastu dniach na serverze nagle przestaje funkcjonowac jak nalezy? czemu dany kompnent przestal odpowiadac? przewaznie wystarcza restart kompa - z jakis wzgledow, ktorys z komponentow zaleznych zostal przekonfigurowany/zastrzymany i w gaszczu powiazan pomiedzy bibliotekami nie jest sie w stanie dojsc czemu i jak. tak powstaje niedeterminizm. i dla tego najprostrza recepta jest restart - a na serwerze czesto nie mozna go wykonac az do weekendu.
a gdyby tak wszystkie biblioteki implementowaly cos aka DLL-ICMP ? tak, zeby mozna bylo wylasc polecenie commandlineowe do pliq uruchomieniowego a ten zaczyna wysylac pingi do bibliotek zaleznych tworzac mape powiazan. dzieki temu moznaby zlokalizowac komponent, ktory nieodpowiada i go zresetowac.
warunek - musialyby to implementowac *wszystkie* biblioteki.
byc moze ktos napisze, ze z podobnych narzedzi sie korzysta... te co widzialem byly 4developers only, a output jaki z siebie wypluwaly byl ciezki do zrozumienia nawet dla tworcy aplikacji. ale i tak swoja droga jestem ciekaw sie buduje mapy powiazan miedzy libami i chetnie sprawdzilbym jak to wyglada w ponoc uporzadkowanej vista...
piątek, marca 30, 2007
implementacja ping i tracert dla bibliotek dll
Subskrybuj:
Komentarze do posta (Atom)
2 komentarze:
Może i fajne by to było, tylko kompletnie nie da się tego zrobić. DLLki w windozie są tak porąbane, że nie da się określić mapy wywołań kolejnych bibliotek. Czemu? - Bo wywołania mogą się zapętlać; bo może istnieć kilka wersji jednej biblioteki; bo jedne są "managed" a inne nie; bo niektóre robią takie cyrki, że nawet napalony byś na to nie wpadł.
Utopia po prostu. W naszym świecie nie do osiągnięcia.
A jak mi tu ktoś wyjedzie z tekstem o DLLkach .Net które mogą być remedium na to, to niech się dwa razy zastanowi, bo jest taka masa "legacy code" w środowisku, i taka masa wrapperów na wrappery, że coś takiego jak "managed code" będzie miało rację bytu chyba tylko w innej rzeczywistości.
Prostą mapę zależności dla jednej aplikacji da się zrobić - służy do tego Dependency walker znajdujący się w Visual C++.
Co do .Net-a to każda aplikacja jest instalowana ze swoimi własnymi dll-kami, i w odróżnieniu od Win32 te dll-ki są trzymane w folderze aplikacji.
Prześlij komentarz