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 ;)))))
Filed under: ,
 

Komentarze:

# bszafko said:

no ja, właśnie w wolnym czasie dłubie przy czymś w mvc co mam nadzieje będzie chodzić na hostedwindows

zobaczymy tylko co i kiedy ;) z tego wyjdzie

18 sierpnia 08 at 15:11
# dario-g said:

A dadzą Ci URLe bez rozszerzenia? :)

18 sierpnia 08 at 15:28
# pp said:

W home.pl tez jest taka mozliwosc w ramach hostingu windows. Jedyny problem to rewrite URL ktorego nie mozna definiowac bez url.

18 sierpnia 08 at 19:47
# pp said:

Przepraszam bez rozszerzenia - a nie url :)

18 sierpnia 08 at 19:52
# Luke said:

Mój blog jest oparty na ASP.NET MVC i stoi na http://hostedwindows.pl/ (źle dałeś link w notce) - tak jak napisałeś. Wszystko śmiga jak trzeba :) Domenę mam z home.pl

18 sierpnia 08 at 21:11
# dario-g said:

Luke: Faktycznie link źle mi się wstawił, już poprawiłem. Dzięki. Blog masz fajny i fajnie działa :)

18 sierpnia 08 at 21:32
# bszafko said:

@dario-g: urle bez rozszerzenia dają bez problemu, trzeba tylko maila do nich wysłać

19 sierpnia 08 at 10:09
# dario-g said:

bszafko: Nie wiedziałem o tym, ale już uzupełniłem posta :)

19 sierpnia 08 at 11:50
# Luke said:

Dzięki za miłe słowa :) A powiem Ci, że zdecydowałem się przenieść bloga na BlogEngine, ale w tej sytuacji pomyślę jeszcze raz, czy nie rozwinąć dalej mojego systemu blogowego ;)

20 sierpnia 08 at 01:09
# Procent said:

@Luke:

Ja z kolei zastanawiam się nad ruchem w drugą stronę:). Zalecam wstrzymanie się z przesiadką na BlogEngine do wydania kolejnej wersji - aktualna posiada bug powodujący zamieszanie wśród czytników RSS i co jakiś czas ściągane są przez nie wszystkie posty z bloga. Irytujące i fuj.

20 sierpnia 08 at 10:05
# bszafko said:

@Luke: to może dasBlog albo subtext, dasBloga używa Scott Hanselman :)

20 sierpnia 08 at 10:32
# Luke said:

@Procent : Dzięki za informację

@bszafko: o dasBlogu myślałem, a o subtekście nie słyszałem (popatrze niebawem)

W zasadzie, to chciałem się dołączyć jako kontrybutor do jakiegoś fajnego projektu i w ten sposób - mieć prawie własny system blogowy ;) Ale w sumie, to takich projektów jest jak na lekarstwo :( Nie ma zbyt wielu istniejących, a nowych tym bardziej (na CodePlex powinna być opcja, aby oznaczać projekt, jako poszukujący ludzi; pisałem o tym jako requested feature, ale jakoś nikt tego w ciągu półtora roku nie zaimplementował :P)

20 sierpnia 08 at 13:25
# dario-g said:

Ja także myślałem o stworzeniu kolejnego systemiku blogowego już wcześniej, zanim pojawił się BlogEngine. Powstał zalążek, który do tej pory używam jako silnik kontentu na swojej stronie (oraz jedno malutkie wdrożenie u klienta), ale nigdy nie było czasu na jego rozwinięcie. :(

20 sierpnia 08 at 14:16
# Luke said:

@Dario: Nawet chciałem kiedyś "wyłudzić" źródła Twoje systemiku, ale sprytnie mnie zbyłeś :P

Z naszych wypowiedzi wynika, że trzeba skrzyknąć team i zbudować jakiś ładny, zgrabny systemik ;)

21 sierpnia 08 at 00:14
# dario-g said:

E tam zbyłem, po prostu mocno zarobiony byłem i nie wiedziałem gdzie ręce wsadzić, a kod był troszkę rozgrzebany.

Co do wspólnego systemiku to było by można coś pomyśleć. To by było fajne doświadczenie i może jakaś inicjatywa wokół zina. :))

21 sierpnia 08 at 09:30
# Luke said:

A tak na poważnie, to może niegłupi pomysł jest ;) Są jacyś chętni i nieco dyspozycyjni?

22 sierpnia 08 at 00:12
# dario-g said:

<dream-mode>O o o , i jeszcze Zina na tym postawimy ;) </dream-mode>

22 sierpnia 08 at 11:33
# Luke said:

Widzę, że jednak zainteresowanie bardzo minimalne, no trudno ;P

24 sierpnia 08 at 01:03
# Webio Grzegorz Wołoszyn said:

Chcialbym poinformowac, ze w hostingu Webio (http://www.webio.pl - IIS7), ktory mam przyjemnosc prowadzic jest zainstalowany mod URL Rewrite (http://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx) dzieki czemu mozna definiowac wlasne reguly w pliku web.config. W razie pytan prosze pisac pod adres kontakt@webio.pl lub Jabber g.woloszyn@webio.pl

Co do samego blogu i MVC jest jeszcze jBlogMvc:

http://amrelsehemy.net/post/2008/09/21/Introducing-jBlogMvc.aspx

24 września 08 at 20:11
# RomanWyrz said:

Jaki znacie dobry hosting do asp.net MVC ? Na  http://www.amm.net.pl/windows_hosting.htm  wrzycam podstawowy projekt i dostaje: Parser Error Message: Could not load file or assembly Czyli chyba nie wspierją jednak MVC?

26 lutego 09 at 22:35
Komentarze anonimowe wyłączone