Tworzenie logów działania aplikacji w .NET

Prędzej czy później w życiu każdego programisty przychodzi czas, kiedy zaczyna pisać oprogramowanie coraz bardziej rozbudowane, realizujące całą masę różnych zadań. Co za tym idzie, prędzej czy później zajdzie też potrzeba śledzenia poczynań takich aplikacji. Przyczyn takiego stanu rzeczy może być wiele, od najbardziej banalnych (sprawdzanie poprawności działania aplikacji i co za tym idzie ułatwione diagnozowanie błędów) po bardziej „wyrafinowane” (tworzenie logów z działania serwera, co dostarcza często ważnych informacji o jego pracy). Jednak czy każda trochę bardziej rozbudowana aplikacja powinna tworzyć logi ze swojego działania? Kiedy warto poświęcić swój czas i wysiłek w implementację mechanizmu rejestrującego logi, a kiedy zwyczajnie tworzenie czegoś takiego mija się z celem? Ostatnio trochę się nad tym zastanawiałem, a efektem moich przemyśleń jest właśnie ten wpis. Zapraszam do lektury 🙂

Czytaj dalej

326 total views, 2 views today

Odczytywanie informacji o zasobach komputera – WMI i C#

Zastanawialiście się kiedyś, jak dostać się do szczegółowych informacji na temat komputera przy użyciu .NET’a? Do tego celu służy WMI  (Windows Management Instrumentation). Czym konkretnie jest WMI? Jak mówi polska Wikipedia, jest to: „zestaw protokołów i rozszerzeń systemu Windows umożliwiających zarządzanie i dostęp do zasobów komputera, takich jak adaptery sieciowe, aktualnie otwarte programy, lista procesów, odczyty z wbudowanych czujników temperatury, odczytów woltomierzy itp.”. Co ciekawe można korzystać z tego mechanizmu także zdalnie. Dostęp do WMI z poziomu .NET’a zapewnia nam przestrzeń nazw System.Management. Niezbędne, więc będzie dodanie do niej referencji w projekcie. Z dobrodziejstw WMI możemy korzystać nie tylko poprzez C#. Możliwe jest korzystanie z tego mechanizmu również z poziomu Visual Basica .NET, VBScript, F#, PowerShell’a, C++ i pewnie także z innych 😉

Czytaj dalej

492 total views, 1 views today

Dekompilacja aplikacji pisanych w .NET

Myślę, że o czymś takim jak dekompilacja wiele osób już słyszało. Jednak na wstępie przypomnę jeszcze czym właściwie ona jest. Jak wskazuje sama nazwa, jest to proces odwrotny do procesu kompilacji programu. Polega ona, więc na zamianie kodu maszynowego z powrotem na język wyższego poziomu. Należy przy tym zaznaczyć, że dekompiler podczas dekompilacji nie odtwarza oryginalnego kodu, jaki istniał przed kompilacją. Jednak odtwarza kod o takim samym działaniu jak ten źródłowy. W przypadku C# dekompilacja jest wyjątkowo prosta. Głównie z tego powodu, że programy nie są kompilowane bezpośrednio do kodu maszynowego, tylko do tzw. Common Intermediate Language (CLI). Kod ten zamieniany jest na kod maszynowy dopiero po uruchomieniu aplikacji na przeznaczonym do tego komputerze. Zapewnia to lepszą wydajność, oraz przenośność kompilowanych aplikacji. Jakie są tego konsekwencje? Takie, że właściwie każdy może odtworzyć oryginalny kod naszego programu, posiadając jedynie plik wykonywalny *.exe – a czasami możemy tego nie chcieć 😉

Czytaj dalej

1,105 total views, 2 views today