18 sierpnia 2008
MVC.NET i hosting
Hosting
Jak wiadomo z hostingiem dla aplikacji pisanych przy użyciu MVC.NET nie jest łatwo. W Polsce znam dwie firmy wogóle oferujące hosting aplikacji ASP.NET na platformie Windows. Jest to
http://www.amm.net.pl/windows_hosting.htm i
http://hostedwindows.pl/. Na AMM mam swoją stronę już od dłuższego czasu i narzekać nie mogę - zero problemów. W drugiej firmie stoi ZINE i jak działa sami widzicie (
Michał miałby tu pewnie coś do powiedzenia :).
Na dodatek dziś dowiedziałem się, że poczynając od planu START można uruchamiać aplikacje oparte o MVC.NET bez definiowania rozszerzenia pliku w URL'u. Jak to możliwe skoro hosting oparty jest na IIS6?
Otóż na prośbę skierowaną mailem firma AMM może zmienić indywidualnie konfigurację danej aplikacji. Daje to możliwość wyłączenia sprawdzania istnienia zasobu w konkretnej aplikacji. Wyłączenie tego sprawdzenia powoduje, że przy takim odwołaniu jak to:
http://domena.pl/blog/2007/08/18/hosting-mvc-net nie dostaniemy błędu 404. Żądanie takie zostanie przepuszczone przez IISa i trafi bezpośrednio do naszej aplikacji. :)
UPDATE:
Bartek napisał, że w HostedWindows jest tak samo, wystarczy wysłać maila. :)
Jakieś minusy?
Od tej pory nasza aplikacja będzie serwować każdy zasób i musi zatroszczyć się o obsługę żądań do tych nieistniejących, nawet statycznych, takich jak: css, js, itd. Przy prawidłowej konfiguracji żądanie do kontentu statycznego przejmuje DefaultStaticHandler.
Ponadto trzeba mieć na uwadze sposób działania tego handlera. Otóż jeśli podczas żądania do kontentu statycznego nie zostanie zmodyfikowany/dodany żaden nagłówek i nic nie zostanie dopisane do kontentu oraz nie zostanie założony żaden filtr (patrz kompresja) i proces działa właśnie na IIS6 to żądanie takie zostanie przekazane spowrotem do IISa. W przeciwnym wypadku żądanie to zostanie wykonane przez StaticFileHandler, który nie działa w sposób optymalny (na przykład nie obsługuje nagłówków 'If-Modified-Since' czy 'If-None-Match'). Dodatkowo handler ten nie wczytuje do pamięci wcześniej pobieranego zasobu, co oznacza każdorazowe czytanie plików z dysku za każdym żądaniem.
Oczywiście można napisać własny handler, który będzie lepszy i bardziej optymalny, albo poszukać i
znaleźć na sieci już napisany. Tu o problemach i ich rozwiązaniu pisał niejaki Omar. :)
Poza tym dobrą praktyką jest wystawianie statycznego kontentu z innego miejsca niż sama aplikacja. Przykładowo css i js wystawiamy na
static.domena.pl, gdzie sama aplikacja działa na
domena.pl. Dzięki temu static.domena.pl działa standardowo bezpośrednio na IIS'ie bez żadnych dodatkowych zmian. Z planów hostingowych obu firm wynika iż można zakładać kilka subdomen w ramach jednej domeny, a każda subdomena jest odrębną aplikacją.
Zatem do dzieła. Spodziewam się teraz wysypu startup'ów opartych o MVC.NET ;)))))
Powiadamianie o komentarzach
Jeżeli chciałbyś otrzymywać email gdy ta wypowiedź zostanie zaktualizowana, to zarejestruj się tutaj
Subskrybuj komentarze za pomocą
Comment Policy: No HTML allowed. URIs and line breaks are converted automatically. Your e–mail address will not show up on any public page.