Dobrana para
- Paweł Matyjasek,
- 29.05.2007
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.
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 serwerów 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.
- 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.
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).
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.
- 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