Dobrana para

Modyfikacje i nowe funkcje wprowadzone przez Microsoft do serwera IIS 7 istotnie ułatwiają pracę programistów wykorzystujących platformę ASP .Net 2.0.

Modyfikacje i nowe funkcje wprowadzone przez Microsoft do serwera IIS 7 istotnie ułatwiają pracę programistów wykorzystujących platformę ASP .Net 2.0.

Nowa konsola do zarządzania serwerem i aplikacjami www — IIS MANAGER

Nowa konsola do zarządzania serwerem i aplikacjami www — IIS MANAGER

Najnowsza wersja serwera Microsoft IIS 7 (Internet Information Services) wprowadza przełomowe zmiany wpływające nie tylko na bezpieczeństwo i stabilność serwera oraz hostowanych aplikacji WWW. IIS 7 będzie oficjalnie wspierany nawet na "domowych" wersjach systemu Windows Vista, choć oczywiście funkcjonalność będzie w tym wypadku ograniczona. Niestety nie jest planowane wydanie wersji IIS 7 zgodnej z systemem Windows Server 2003.

Istotnie lepsza integracja Internet Information Services 7 z zarządzanym kodem przekłada się na możliwość znacznie bardziej efektywnego wykorzystania możliwości tego serwera. Cecha ta - połączona z modularnością IIS 7 - sprawia, że już wkrótce można się spodziewać pojawienia się wielu nowych modułów pozwalających na rozszerzenie lub ulepszenie funkcji IIS. Największe oczekiwania użytkowników są obecnie związane z tymi, które ułatwiłyby wdrożenie przyjaznych adresów w ramach aplikacji (URL rewriting).

Jak było wcześniej

Dotychczasowe relacje między serwerem Microsoft Internet Information Services a ASP .Net były dość chłodne. Problemy były widoczne już od samego początku, czyli instalacji i konfiguracji serwera na lokalnej maszynie, a na instalacji na serwerze produkcyjnym kończąc.

W czasie świetności Visual Studio i ASP .Net 1.1 programiści "staczali boje", aby doprowadzić do ładu dodatek FrontPage Server Extensions, bez którego nie były możliwe tak proste operacje jak automatyczne utworzenie katalogu wirtualnego dla nowego projektu. Wielu programistów musiało także zmieniać system operacyjny, ponieważ oficjalnie oprogramowanie IIS nie było wspierane na maszynach pracujących pod kontrolą Windows XP w wersji Home.

Wraz ze środowiskiem deweloperskim Visual Studio 2005 Microsoft wprowadził nowość - specjalny serwer WWW przeznaczony tylko do uruchamiania aplikacji na lokalnym serwerze. Dlaczego tak się stało? Oto główny powód: przy złej konfiguracji niektóre aktywne funkcje serwera IIS otwierały furtkę dla potencjalnych intruzów.

Od tego momentu IIS na maszynie programisty (przynajmniej teoretycznie) stał się zbędny, bo w praktyce lokalne uruchomienie dowolnego projektu trwało jedynie kilka sekund. Czy jednak z tego powodu fora internetowe przestały być zalewane ogromną liczbą pytań? Wręcz przeciwnie - uruchamianie aplikacji na lokalnym komputerze, "pod kloszem" przebiegało sprawnie, natomiast po przeniesieniu aplikacji na serwer hostingowy wychodziły na jaw błędy związane z brakiem uprawnień i optymistycznymi założeniami programisty.

Dość poważnym problemem był też dotąd proces obsługi żądań przychodzących do serwera. ASP .Net udostępniał środki do blokowania dostępu do plików i katalogów, ale środki te uwzględniały tylko niektóre typy plików (np. *.aspx). Pliki *.doc, *.txt czy *.htm w aplikacjach ASP .Net działających na IIS 6 i starszych wersjach tego oprogramowania były udostępniane bez ograniczeń. To zachowanie można było zmienić, ale warunkiem był dostęp do serwera na prawach administratora, co z reguły jest nierealne w warunkach hostingu.

Kolejną bolączką programistów ASP .Net były jak dotąd słabe możliwości rozszerzenia funkcjonalności serwera. Oferowane przez ASP .Net moduły umożliwiały "podpinanie się" pod proces przetwarzania żądania, ale zazwyczaj dopiero na jego późnym etapie. Jedynym rozwiązaniem było stworzenie własnego filtru ISAPI, niestety filtr mógł być napisany tylko w języku C++, przy użyciu niezbyt przyjaznego API.

Konfiguracja IIS 7

Zmiany wprowadzone w Microsoft IIS 7 eliminują większość prezentowanych problemów i nie ulega wątpliwości, że pozytywnie wpłyną na pracę programistów ASP .Net 2.0.

Konfiguracja IIS 7 opiera się wyłącznie na plikach XML. Administrator może teraz pozwolić właścicielom witryn na modyfikację prawie wszystkich ustawień. Co więcej, ustawienia konfiguracyjne są zintegrowane z plikami konfiguracyjnymi ASP .Net (pliki web.config). Jest to szczególnie ważne w kontekście hostingowych, bo dzięki temu cały proces instalacji aplikacji może zostać sprowadzony do przekopiowania plików na serwer. Nie będzie już konieczności korzystania z niewygodnych paneli WWW przeznaczonych do konfigurowania aplikacji.

Zarządzanie modułami W IIS 7

Zarządzanie modułami W IIS 7

Kolejnym, ważnym usprawnieniem procesu konfiguracji jest wprowadzenie nowej konsoli IIS Manager, która oprócz wygodnego interfejsu użytkownika zapewnia:

  • możliwość edycji takich ustawień aplikacji jak identyfikatory baz danych (connection string);
  • zdalny dostęp za pośrednictwem protokołu HTTPS;
  • podgląd ustawień IIS 7 w trybie tylko do odczytu.
Jeśli zajdzie taka potrzeba, konsola IIS Manager może zostać rozszerzona o stworzone przez użytkownika wtyczki plug-in. Jeśli ktoś chce dodatkowo "pomajsterkować" i zautomatyzować przynajmniej część zadań w serwerze, może zamiast skryptów PowerShell użyć bibliotek dostarczanych wraz z serwerem IIS (z przestrzeni nazw Microsoft.Web.Administration) i języka: C#/VB .Net lub innych, wspieranych na platformie .Net.

Wsteczna zgodność

Właściciele stron napisanych w ASP .Net, które są hostowane na komercyjnych serwerach, zapewne zastanawiają się, jak na ich aplikacje wpłynęłoby przejście z IIS 6 na IIS 7i czy wówczas będzie konieczne wprowadzenie zmian do już działającego oprogramowania. Odpowiedź na to jest prosta - nie trzeba będzie wprowadzać żadnych zmian, pod warunkiem że użytkownik nie zechce skorzystać z nowych funkcjonalności serwera. Wynika to z tego, że w przypadku ASP .Net IIS 7pozwala na uruchomienie aplikacji w jednym z dwóch trybów pracy:

  • Classic (zapewnia pełną zgodność z ASP .Net 2.0 oraz możliwość uruchomienia aplikacji ASP .Net 1.1 po wykonaniu prostych zadań administracyjnych).
  • Integrated (pełna integracja z nową architekturą IIS 7).
Aby zmienić tryb na Integrated, wystarczy przypisać aplikację do puli zgodnej z tym trybem (domyślnie jest to DefaultAppPool). Jeśli w pliku konfiguracyjnym aplikacji zostały zadeklarowane handlery http lub moduły, wówczas trzeba je przenieść do nowej sekcji konfiguracji - system.webServer. Czynność ta może być wykonana automatycznie za pomocą polecenia %windir%\system32\inetsrv\APPCMD.EXE migrate config <nazwa aplikacji>.

Szybkość, bezpieczeństwo i kontrola

IIS 6 ma monolityczną architekturę. Nawet jeśli użytkownik korzysta tylko z części funkcjonalności tego oprogramowania, to i tak cały kod IIS 6 musi być ładowany do pamięci. Natomiast IIS 7 oferuje skrajnie odmienne podejście, składa się z wielu modułów, które można na stałe wyłączyć lub zastąpić innymi (nawet własnymi, opracowanymi przez programistę). Pozwala to m.in. na tworzenie szybkich, wyspecjalizowanych serwerów.

Moduły ASP .Net mają obecnie ten sam status co rozszerzenia ISAPI (czyli moduły natywne). Za pomocą jednego wpisu w pliku konfiguracyjnym można np. zastąpić moduł odpowiedzialny za wyświetlanie listy plików w katalogu i w miejsce nazw plików graficznych wyświetlić ich miniaturki.

Oprócz tego ulepszona integracja ASP .Net i IIS 7 umożliwia wykorzystanie funkcjonalności Failed Request Tracing (śledzenia błędnych żądań), co zwiększa kontrolę bezpieczeństwa systemu. Odpowiadają za to klasy Trace-Source i IisTraceListener.

Najważniejsze nowości Microsoft IIS 7

  • modularna budowa, możliwość wyłączenia niepotrzebnych modułów
  • zwiększone bezpieczeństwo i wydajność — instaluj i używaj tylko niezbędne komponenty
  • możliwość zdalnego zarządzania serwerem za pośrednictwem nowej konsoli administracyjnej
  • lepsza niż dotąd integracja z ASP .Net
  • delegowana konfiguracja


TOP 200