Długo myślałem jak opisać tą książkę. W końcu przyszła mi na myśl analogia budowlana ze świata drogownictwa. Pomyślałem o południowej autostradowej obwodnicy Krakowa. Droga ta spina ze sobą autostradę A4 z Wrocławia i Katowic z Zakopianką i Drogą Krajową 4, wiodącą w kierunku Tarnowa i Rzeszowa. Na początku lat 90tych ubiegłego wieku połączono autostradę A4 z Zakopianką, parę lat później dociągnięto do „czwórki” (a obecnie trwa budowa autostrady do Szarowa koło Bochni).
Pamiętam, że zanim owa obwodnica powstała, Droga Krajowa 4 prowadziła przez centrum Krakowa, a następnie ulicą Wielicką wybiegała z miasta na wschód. Jakieś dwa kilometry za Prokocimiem dwujezdniowa droga zbiegała w dół do skrzyżowania z ulicą Mała Góra, na którym kierowcy spotykali ostatnią przed dłuższą drogą sygnalizację świetlną. Za skrzyżowaniem droga ulatywała w górę, w kierunku Wieliczki już jako jednojezdniowa, wąska, DK4.
Gdy rozpoczęła się budowa obwodnicy, przy owym skrzyżowaniu pojawiły się maszyny budowlane. Na samym skrzyżowaniu, jak i w jego okolicy, niczym sen pijanego projektanta, zaczęły pojawiać się dziwne betonowe konstrukcje. Ruch prowadzony był drogą technologiczną pomiędzy tymi dziwnymi budowlami. Wszystko sprawiało wrażenie totalnego chaosu: a to w jednym suchym miejscu budowano most nad nieistniejącą rzeką, a to wbijano gdzieś samotnie stojące na polu betonowe podpory, a to spychacze sypały nie wiedzieć czemu ziemne wały. Stopniowo sen pijanego konstruktora zaczynał łączyć się w całość: pod „niepotrzebny” most skierowano lokalną małą rzeczkę, wały zaczęły układać się w zjazdy z autostrady, na podporach pojawił się wiadukt. To, co dla nas stało się widoczne dopiero po zakończeniu budowy, dla robotników było znane od samego początku, gdyż dysponowali oni planami.
Takie właśnie myśli nasunęły mi się czytając książkę „Developing XML Web Services and Server Components with Microsoft Visual Basic .NET and Microsoft Visual C# .NET”. Większość rozdziałów tworzona jest właśnie niczym wielki rozjazd drogowy: poszczególne lekcje zdają się sterczeć w polu jako niczym nie powiązane ze sobą elementy konstrukcji. Ot, tu się napisze coś o atrybutach związanych z COM+, ot tu coś się napisze o bezpieczeństwie. Całościowy obraz pojawiał się najczęściej dopiero przy okazji laboratorium, mającego (teoretycznie) pokazywać praktyczne zastosowanie poznanych technologii, a de facto stanowiącego jedyne wytłumaczenie jak dane klocki ze sobą działają.
Sam materiał egzaminów 70-310 i 70-320 (do których podręcznik ma przygotowywać) jest dość obszerny – są to komponenty serwerowe i Web Service, przy czym jako komponenty serwerowe rozumiane są tu także usługi Windows oraz technologia COM+. Oczywiście zrozumieć należy że same egzaminy, jak i sam podręcznik, mają już kilka dobrych lat, i omawiane w nich technologie nie zawsze przetrwały do dziś: o ile bowiem ADO.NET i Web Service używane są obecnie, o tyle usługi Windows i COM+ zaczynają być powoli technologiami niszowymi i tymi, które Microsoft określa pięknym słowem „legacy”.
Książka rozpoczyna się od wprowadzenia do .NET i krótkiego omówienia cech tej platformy. Skądinąd jest to chyba najlepszy jej rozdział. Dalej jest tylko gorzej – rozdział drugi to usługi systemu Windows. Po raz pierwszy książka ujawnia syndrom „budowy skrzyżowania”. Podobna sytuacja dotyczy rozdziału trzeciego, gdzie mowa jest o COM+. Dla kogoś kto nie zna COM+ rozdział ten równie dobrze mógłby być napisany po chińsku – jego wartość dydaktyczna jest znikoma. Nieco lepiej jest przy omówieniu .NET Remotingu w rozdziale czwartym, choć i tak całość sprawia wrażenie opisu „jak wymyć swoją lewą stopę za pomocą języka” (jakby nie dało się użyć ręki i prysznica).
Sytuacja ulega pewnej poprawie w rozdziale piątym, omawiającym technologię ADO.NET. Niestety, omówienie dotyczy wersji 1.0 środowiska .NET, która obecna była na rynku bardzo krótko i została szybko wyparta przez wersję 1.1. Jest to o tyle ważne, że wersja 1.0 posiadała w standardzie tylko i wyłącznie sterowniki baz danych dla SQL Servera i mechanizmu OLE DB. Dopiero wersja 1.1 dodała obsługę sterowników Oracle oraz możliwość użycia ODBC. Nie to jest jednak największym błędem tego podręcznika: w rozdziale tym zabrakło omówienia obiektowego modelu ADO.NET.
Warto o tym wspomnieć, gdyż jest to naprawdę ważne rozwiązanie – każdy sterownik baz danych to zestaw obiektów implementujących zestaw standardowych interfejsów. W połączeniu z wzorcami projektowymi takimi jak fabryka abstrakcji i metoda fabrykująca, możliwe staje się stworzenie kodu, w którym faktycznie używany engine bazy danych jest sprawą tylko i wyłącznie konfiguracji. Sam jestem autorem aplikacji, która dane trzymać może w PostgreSQL, MS-SQL czy Firebird w zależności od zawartości pliku konfiguracyjnego. Oczywiście obecnie często używane są różnorakie mappery, niemniej jednak warto wiedzieć jakie zasady przyświecają twórcom owych mapperów – a tego w tej książce brakuje.
Rozdział szósty to krótka wycieczka po pracy z XMLem, zaś rozdział siódmy to krótki opis technologii Web Service. Opis na tyle krótki, że Web Service dostały rozdział ósmy, który w swym tytule obwieszcza nam, że oto naucza „zaawansowanych” elementów. Oczywiście w porównaniu do Programming .NET Web Services autorstwa Alexa Ferrary i Matthew MacDonalda to rozdział ten jest po prostu pusty. Zakończenie książki stanowią dwa rozdziały o testowaniu i wdrażaniu opisanych w książce elementów, choć zamieszczono je chyba jedynie po to, aby dać zadość wymaganiom egzaminu…
Ogólnie rzecz biorąc po dość dobrym podręczniku do ASP.NET, Microsoft Press zaliczył wpadkę. Fakt, udało mi się zdać egzamin 70-320, jednak jego wynik był dla mnie dość niezadowalający, biorąc pod uwagę czas spędzony z tą książką.
Microsoft Corporation (jak firma może być autorem książki?): Developing XML Web Services and Server Components with Microsoft Visual Basic .NET and Microsoft Visual C# .NET, Microsoft Press, Redmond 2003