czwartek, październik 20, 2011

VS11 i .NET Framework 4.5

Wczoraj miałem przyjemność wygłosić kolejną prelekcję na spotkaniu Wroc.NET. Tym razem jako temat padło Visual Studio 11 oraz .NET Framework 4.5

Widziałeś tę sesję na 38. spotkaniu Wroc.NET? Ocenią ją! Możesz także ocenić ją na portalu speakerrate.

Materiały z tej prelekcji dostępne są na portalu grupy - Materiały 38. spotkanie Wroc.NET.

Co omówiłem podczas prelekcji? Pokazałem co nowego lub ulepszonego będzie nam oferować VS 11. Zademonstrowałem narzędzia: Code Clones (nowe), Concurrency Visualizer (stare), SQL Schema Comapre (stare) oraz TFS w najnowszej wersji. Z tego ostatniego pokazałem, jaki przepływ pracy będzie dostępny dla programistów. Visual Studio wesprze możliwość wysyłania próśb o review kodu innym programistom oraz możliwość podglądu zmian bezpośrednio w edytorze. Wygląda i działa to całkiem przyjemnie. Po zakończeniu review uwagi są przesyłane do programisty a on może je przejrzeć i uwzględnić.

Trochę dłużej zatrzymałem się także przy Concurrency Visualizer. To narzędzie jest dość niedoceniane z racji, że w VS201 było dostępne tylko i wyłącznie w wersjach Ultimate oraz Team Systems. Dzięki udostępnieniu jej od wersji Professional więcej osób będzie mogło skorzystać z jego działania.

Następnie przeszedłem do prezentacji nowości Frameworka. Jako, że była to sesja wprowadzająca w temat to pokrótce przedstawiłem te, które pojawią się w tej wersji bez wnikania we wszystkie szczegóły. Trochę dłużej zatrzymałem się przy WPFie, gdyż zmian wprowadzonych do tej części frameworka jest sporo.

Główną uwagę w tej części poświęciłem jednak WinRT oraz MetroUI. Pokazałem, jak będą wyglądały aplikacje pisane z użyciem WinRT oraz jak w naszych aplikacjach w prosty sposób można się zintegrować z Windows8. Visual Studio wspiera nas w tym dość mocno - aby nasza aplikacja zachowywała się naturalnie w systemie i dawała pełnie możliwości nie trzeba pisać bardzo dużo kodu.

Na koniec podsumowałem całość mówiąc, że od tej wersji zwolennicy pisania sterowników będą mogli skorzystać z dobrodziejstw IDE. Dodatkowo także Visual Studio umożliwia podgląd plików modeli używanych przy pisaniu gier z użyciem DirectX.

niedziela, październik 02, 2011

Show me your code–przegląd narzędzi do podglądania

Update - 17.11.2011: Dodano powiązane posty z innych blogów.

Dawno dawno temu było…Reflector i długo długo nic (de facto na początku był jest ildasm ale nie o nim dziś).

Na szczęście pewnego lutowego dnia pojawiła się informacja, że już niedługo nie będzie on dostępny za darmo i się zaczęło. Flame’y, groźby i krzyki :). Stało się też sporo dobrego bo o to na rynku pojawiły się alternatywy. Ilspy, dotPeek oraz JustDecompile. Przyjrzyjmy się im z bliska i zobaczmy co mają do zaoferowania.


Reflector - umarł król...

Reflector to zdecydowanie najlepszy, z racji swojej "dorosłości" decompiler na rynku. Rozwijany na początku przez Lutz'a Roeder'a a następnie przejęty przez firmę Red-Gate. Posiadacze darmowej wersji muszą się zadowolić wydaniem 6.0 bez widoków na aktualizacje, co sprawi, że, w przypadku rozwoju .NET, Reflector straci na używalności a zastąpią go alternatywy. Płatna wersja narzędzia jest i (miejmy nadzieję) będzie rozwijana dalej.


Siła Reflector'a nie tkwi (narzędzie jest super to fakt) w nim samym, ale w ogromie dodatków, które powstały przez cały ten czas kiedy miał monopol wśród tego typu narzędzi. Jakiekolwiek czynności, które chcielibyśmy zrobić na podglądanym kodzie można szybko wykonać bo na na 99% istnieje dodatek który nam w tym pomoże. Np. modyfikacja kodu? Jest Reflexil.
Reflector podczas pracy
Obsługuje możliwość wyświetlania kodu zarówno w C#, VB.NET oraz F# (w zasadzie pokazuje jeszcze Delphi, MC++ oraz Oxygene, ale nie wiem czy ktoś z tego w ogóle korzysta?). Można także pokazać ILa jeśli ktoś ma taką potrzebę.

ILSpy - dobra alternatywa...


ilSpy
- Pełni OpenSource'owe narzędzie oparte na bibliotece Mono.Cecil. Dzięki dostępności kodu możemy je sobie rozwijać według potrzeb. Startuje długo jakby był napisany w Java (joke :]), ale potem oferuje pełnię swoich możliwości. Umożliwia wyświetlenie kodu w C# jak też IL (maniacy jak ja, którzy czytają gołego ILa to docenią).
ILSpy
Do plusów można zaliczyć przejście do dokumentacji MSDN po kliknięciu w daną instrukcję ILa, jak również przeskakiwanie pomiędzy etykietami w tymże widoku. Zdecydowanie ułatwia nawigację w kodzie i pozwala łatwiej śledzić flow programu.

dotPeek



dotPeek
- Narzędzie ze stajni panów z JetBrains. Wspiera jedynie C#. Jako duży plus należy zaliczyć tu możliwość otwierania podglądu jako zakładki. Bardzo ułatwia to nawigowanie się podczas przeglądania kodu. Posiada multum (jak na tego typu narzędzia) opcji i konfiguracji, co na początku utrudnia rozeznanie się w nim.


dotPeek
Umożliwia drukowanie wygenerowanego kodu, co choć na pierwszy rzut oka może wydawać się niepotrzebną opcją, czasem się przydaje. Umożliwia dość rozbudowaną nawigację po kodzie znaną z innego narzędzia JetBrains'a - R#. Możemy zatem przejść do konkretnego typu czy pliku, przenawigować się po właściwościach czy metodach danej klasy za pomocą ALT+strzałka w dół, a nawet zobaczyć hierarchię typów jeśli zajdzie taka potrzeba.
Hierarchia typów w dotPeeku
Jako jedyne narzędzie, nie jest oparte na bibliotece Mono.Cecil (czy to plus czy minus).

JustDecompile



JustDecompile
- Tutaj Telerik zwietrzył okazję i wypuścił swoje narzędzie do podglądu. Jako jedyny posiada instalator - co trochę denerwuje. Zwykle przy tego typu narzędziach chcemy je ściągnąć i zacząć używać bez konieczności instalacji. Na szczęście da się go wrzucić na usb'a i uruchamiać z niego. Inaczej potrzeba instalacji wykluczałaby to narzędzie praktycznie. na pierwszy rzut oka narzędzie to wyróżnia się całkiem przyjemnym UI ewidentnie napisanym w WPFie.

JustDecompile
Z dostępnych języków docelowych mamy: IL, C# oraz VB. Edytor podobnie jak IlSpy umożliwia, po kliknięciu w daną instrukcję, przekierowanie na strony MSDN do dokumentacji danego OpCode'u. Dodatkowo każdy typ jest "klikalny" i możemy nawigować po kodzie klikając na odpowiednie typy parametrów czy też zawracanych wartości. Narzędzie to jako jedyne (albo u innych tego nie znalazłem) umożliwia konfigurację kolorów, tak więc możemy sobie wynikowy kod dostosować do naszych ulubionych kolorów.

CodeReflect


CodeReflect - mało znane (chyba) narzędzie od firmy DevExtras. Wyglądem dość znacznie przypomina .NET Reflector'a, co można uznać za plus jeśli ktoś był przyzwyczajony do tego układu i działania.
CodeReflect
Podobnie jak powyżej umożliwia przechodzenie po dll'kach dzięki kliknięciom w odpowiednią nazwę typu. Dzięki temu możemy w dość prosty sposób nawigować po kodzie i przechodzić od jednej metody do drugiej za pomocą myszki. W IL'u brakuje jednak możliwości przejścia do dokumentacji w MSDN aby dowiedzieć się czegoś więcej o konkretnej instrukcji. Brakuje podstawowych opcji konfiguracji, ale gdyby nie było pod ręką nic innego to oczywiście narzędzie zda egzamin i pokaże nam co siedzi pod spodem naszego kodu...

... niech żyje król?


Czy jest jednogłośny zwycięzca tegoż rankingu? Nie wiem - ja nadal mam zainstalowanego Reflectora ale coraz częściej sięgam po ilSpy'a (tak w ogóle to mam wszystkie zainstalowane :]). Każdy chyba powinien sam wybrać, ale warto wiedzieć o ich mocnych i słabych stronach aby wybór był świadomy i celowy. Pomijając Reflector'a, pozostałe narzędzia są w fazie Beta lub Pre-Release więc jeszcze sporo może się w nich zmienić. Oby na lepsze...

Powiązane wpisy

Narzędzia do analizy aplikacji .NET - Security News
Darmowe dekompilatory .NET - Grzegorz Trybulski