Tworzenie aplikacji webowych

Ostatnio zastanawiałem się nad tworzeniem aplikacji webowych, w szerszym zakresie niż tylko język programowania. Element, który moim zdaniem jest niezbędny do prawidłowego funkcjonowania to CMS ( lub szerzej serwer aplikacji webowych). Według mnie budowanie aplikacji webowej w ramach takiego serwera aplikacji ( lub systemu cms) może znacznie skrócić czas realizacji. Prawdopodobnie nie będziemy musieli martwić się o tworzenie mechanizmów rejestracji, logowania czy przypominania hasła. Dodatkowym zyskiem jest zapewnienie przez CMS mechanizmu do obsługi treści statycznych. Treści statyczne to ważna część aplikacji webowej. Z reguły zawiera rzadko zmieniające się informacje np.: pomoc, opis formularzy, polityki prywatności lub regulaminy. Dostęp do tych części od strony administracyjnej z reguły mają osoby niezbyt “techniczne” i oczekują łatwej możliwości edycji ( bez konieczności odpalania np visual studio lub vi i grzebania w htmlu) koniecznie za pomocą edytora WYSIWYG. Z reguły tworzenie takich mechanizmów mocno wykracza poza zakres projektu lub zapomina się o nich i w ogóle nie zostają uwzględnione.

Przyglądając się bliżej różnym rozwiązaniom( będę bazował na rozwiązaniach .netowych i php oraz troszkę na rubym, pozostałych nie znam, ale zapraszam do podzielenia się) w kontekście potrzeb opisanych w poprzednim paragrafie nasuwa się parę wniosków:

  • Sharepoint – wielkie rozwiązanie, praktycznie serwer aplikacji, ma bardzo duże możliwości, ale wymaga sporej wiedzy na temat windows i funkcjonowania samego sharepointa. Z tego co kojarzę koszt licencji dla sharepointa wystawionego w Internecie też jest dosyć znaczny.
  • Drupal, phpNuke, joomla, mambo – również spore możliwości, niestety także trzeba poznać same rozwiązania i ich specyfikę
  • W ruby on rails rozwiązano ten problem trochę inaczej. Powstał mały CMS – Comatose, który można dowolnie podłączyć do swojej aplikacji na zasadzie biblioteki, skonfigurować i już mamy prosty CMS.

Oczywiście istnieją zagrożenia przy używaniu gotowych środowisk( w głównej mierze dotyczy to pierwszych 2 rozwiązań). Po pierwsze same systemy narzucają pewne ograniczenia wynikające z założeń projektowych. Twórcy mogą napisać własne moduły ale w pewnych ramach np. trudno będzie dodać kontrolę dostępu na poziomie wiersza. Dodatkowym problemem może być zautomatyzowane testowanie, wiele z serwerów aplikacji/CMS nie przewidziało możliwości testowania własnych modułów i wtyczek, więc może np brakować interfejsów do mockowania itd – to naprawdę może zabić projekt.

Dla mnie najbardziej eleganckie wydaje się metoda proponowana przez Comatose w Ruby on Rails. Pozwala twórcy utrzymać maksymalną kontrolę nad aplikacją jako całością z zachowaniem elastyczności systemu CMS. Zainspirowany tą metodą szukałem czegoś podobnego co można by dołączyć do .net. Okazuje się, że na razie nic takiego nie istnieje. Noszę się z zamiarem stworzenia takiego projektu(Comatose.NET???), na razie jest to w fazie pomysłu, ale wydaje mi się, że asp .net mvc(a szczególnie system.web.routing) się do tego nadaje. Jesteś zainteresowany tym tematem? Masz jakieś przemyślenia? Podziel się nimi…