Jeśli śledzicie blog CSS-Tricks na pewno zauważyliście, że od jakiegoś czasu znajduje się tam sonda dotycząca rozróżnienia między „stronami internetowymi” i „aplikacjami internetowymi”. Wczoraj opublikowano wyniki tej sondy i powstała cała, interesująca dyskusja na temat rozgraniczenia pojęć aplikacji i strony. Jednak czytając kolejne posty nie trafiłem na taki, który (moim zdaniem) rzeczywiście by mnie przekonywał. Dlatego postanowiłem sam „rozkminić” ten temat.
Dlaczego ten temat jest ciekawy?
Tak na wstępie chciałem wyjaśnić dlaczego uważam ten temat za interesujący. Otóż w branży internetowej jest tyle dwuznacznych i niejednoznacznych pojęć, określeń i nazw, że czasami można się pogubić w tym wszystkim. Zresztą dobry przykład na to dał właśnie CSS-Tricks publikując artykuł o nazwach posad. Bezpośrednio do tego artykułu nawiązywaliśmy w cyklu index.jpg (taka kryptoreklama).
Jak więc widać tworzenie ścisłych i jednoznacznych definicji nie jest mocną stroną Internetu. I taka właśnie sytuacja zachodzi w przypadku podziału na „strony” i „aplikacje”. Zacznijmy od początku…
Co myślą ludzie?
Jeśli spojrzeć na wyniki ankiety z CSS-Tricks, widać wyraźnie, że większość osób głosujących widzi potrzebę w rozróżnieniu pojęć aplikacji i strony internetowej. I wydaje się to dość oczywiste, ale kiedy spojrzymy na niektóre uzasadnienia to można odnieść wrażenie, że chyba większość głosujących odczuwa tę potrzebę raczej intuicyjnie.
Niemniej jednak jest to ważny dowód w naszych dociekaniach. Ludzie pracujący w branży internetowej (mniej lub bardziej świadomie) widzą (czy też czują) różnicę między czymś co nazywamy aplikacją, a stroną internetową. Pytanie czy w tym wypadku większość ma rację?
„Mówimy jak jest”
Definicja na Wiki jest dość wyraźna:
Aplikacja internetowa, (ang.) web application – zwana również aplikacją webową, to program komputerowy, który pracuje na serwerze i komunikuje się poprzez sieć komputerową z hostem użytkownika komputera z wykorzystaniem przeglądarki internetowej użytkownika, będącego w takim przypadku interaktywnym klientem aplikacji internetowej. W pracy aplikacji internetowej musi pośredniczyć serwer WWW. Do przygotowania samej aplikacji używa się różnych mechanizmów (np. CGI, JSP, ASP.NET) i języków (np. PHP, Java, C#), jak również serwerów aplikacji. Mechanizm prezentacji danych w przeglądarce określa się czasem mianem cienkiego klienta. Przykładem aplikacji internetowej jest mechanizm edycji treści encyklopedii Wikipedia. Inne witryny WWW należące do tej kategorii to np. serwis aukcyjny Allegro czy księgarnia internetowa Merlin.
Jeśli spojrzeć na jej treść to można się spytać „czego tu nie da się rozumieć?”. Wszystko wydaje się jasne, czytelne i przede wszystkim dość proste…
Zobaczmy jak Wiki definiuje stronę internetową:
Strona internetowa, strona WWW (ang. web page) – dokument HTML udostępniony w Internecie przez serwer WWW. Po stronie hosta użytkownika, strona WWW jest otwierana i wyświetlana za pomocą przeglądarki internetowej. Autorem pierwszych stron WWW jest Tim Berners-Lee[1].
Jak widać można by powiedzieć, że znowu wszystko jest jasne. Dokument HTML i arkusz stylów CSS zamieszczony na serwerze www = strona internetowa. Tutaj moglibyśmy właściwie powiedzieć, że skończyliśmy szukać różnic. Strona internetowa ograniczała by się do technologii HTML i CSS podczas gdy aplikacja potrzebuje jeszcze innych technologii np. PHP do tego aby móc wykonywać więcej funkcji niż statyczny dokument HTML i CSS.
To niestety nie koniec
Wikipedia nie jest może najbardziej rzetelnym źródłem informacji, ale w tym wypadku okazuje się wystarczająca. Jeśli spojrzymy na definicję aplikacji internetowej możemy łatwo dojść do wniosku, że pozwala ona dość precyzyjnie określić o czym mowa. Ze stroną internetową jest pozornie tak samo, ale… (zawsze jakieś jest). Kiedy poczytamy definicję strony dalej zobaczymy, że jest tam mowa dużo bardziej o jej funkcjach (wizerunkowa, marketingowa itd.), a jeszcze dalej pojawiają się wylistowane systemy zarządzania treścią takie jak Joomla, czy WordPress. Jeśli wrócić do definicji aplikacji to właściwie wychodzi na to, że „strona internetowa” z CMS’em jest już aplikacją… Więc o co chodzi?
Moim zdaniem nazwa „strona internetowa” to pojęcie worek, do którego każdy wrzuca właściwie to co chce. Generalnie dla laika wszystko co wyświetla się w przeglądarce to strona internetowa. Niestety takie myślenie potrafi się odbić nawet na ludziach, którzy powinni znać rozróżnienie. Kiedyś widziałem ogłoszenie o pracę, w którym szukano programisty stron internetowych…
Jak jest?
Uważam, że najprostszym kryterium podziału jest kryterium techniczne. Jeśli coś jest po prostu statycznym HTML’em i CSS’em to mamy do czynienia ze stroną internetową. Jeśli zaś pod maską mamy jeszcze inną technologię możemy śmiało powiedzieć, że w tym wypadku mamy do czynienia już z aplikacją internetową.
Oczywiście są jeszcze inne punkty widzenia. Jak już wspomniałem dla laika właściwie wszystko wychodzi na to samo i różnice są najwyżej w nazwie. Z punktu widzenia UX do pewnego stopnia różnica też jest płynna ponieważ zarówno strona internetowa jak i aplikacja webowa to interfejs, który zapewnia przekazywanie pewnych informacji i interakcję. Nie da się ukryć, że poziom skomplikowania aplikacji będzie na pewno dużo wyższy, ale samo stwierdzenie „co siedzi w środku” nie ma tak istotnego znaczenia dla przeżyć użytkownika. Jest też punkt widzenia SEO i marketingu, ale myślę że tutaj akurat techniczne różnice nie są aż tak istotne. To co jest ważne to przede wszystkim poziom merytorycznego i funkcjonalnego skomplikowania serwisu, który oczywiście jest też konsekwencją technologii, ale jednak samo rozróżnienie strona-aplikacja nie odegra tutaj znaczącej roli.
Podsumowując
Mam nadzieję, że to co napisałem ma jakiś sens i może przyczyni się do wyklarowania podziału między aplikacjami i stronami internetowymi. Myślę że kryterium techniczne jest chyba jedynym wyraźnym jakie możemy przyjąć. Oczywiście może doprowadzić do lekkiej aberracji kiedy prosta strona internetowa (znowu te nazwy…) zostanie zakwalifikowana jako aplikacja ponieważ oparta jest na systemie zarządzania treścią… Uff… Niestety chyba od pewnych absurdów nie uciekniemy…
Image courtesy of Salvatore Vuono at FreeDigitalPhotos.net
>Jeśli coś jest po prostu statycznym HTML’em i CSS’em to mamy do czynienia ze stroną internetową.
A Jekyll? Albo moje cudeńko do generowania stron? Aplikacja czy strona? ;)
Strona za główny swój cel ma przekazywanie informacji. Aplikacja natomiast służy nie tyle do przekazywania informacji, co raczej jej tworzenia i przetwarzania.
Pozwolę sobie przytoczyć swoją wypowiedź, która swego czasu padła na forumweb.pl:
ostatnio na CSS Tricks była ciekawa dyskusja na temat tego jak rozróżnić webappa od zwykłej strony i czy to rozróżnienie w dzisiejszych czasach jest wciąż absolutnie konieczne. najczęściej wymieniane kryterium podziału było dość prozaiczne: webapp do swojego działania wymaga JS.
warto się zastanowić gdzie zaciera się granica. czy np sklep, który ma router po stronie klienta i dociąga jedynie potrzebne info o produktach jest już webappem? IMO tak.
ba, choćby taka moja domowa też może pretendować do miana webappa. czemu? bo (jak to w końcu poprawię) nie będzie wgl łączyć się z Internetem
przykłady można mnożyć. nawet to forum powoli skręca w stronę webappowości (powiadomienia są IMO pierwszym krokiem; kolejny leży na repo – mówię tutaj o idei kontrolerów dla poszczególnych URI, czyli de facto o zalążku routera). obecnie granica między stronami a webappami się bardzo szybko zaciera. owszem, niektóre webappy są wciąż stronami internetowymi (np korzystające z History API i wspomnianych client-side routing), ale niektóre nie (np Fotoszop online zbudowany na canvas i ładujący gotowe obrazki na dysk usera przez FileSystem API, który to nie potrzebuje Internetu, bo swoje pliki ściągnął i wrzucił do Offline Cache…). i dopiero z tymi jest większy problem (bo de facto jest to odrębna kategoria). natomiast te pierwsze po prostu są wciąż stronami internetowymi, które podpadają pod kategorie związane z dostępnością i użytecznością (głównie PE). jeśli sklep internetowy ma backend i może słać do backendu żądania tylko AJAX-em, to mamy po prostu do czynienia ze źle zaprojektowaną od podstaw architekturą strony.
takie jest moje spojrzenie ;)
Hmm… przyznam, że ciekawe, ale dość skomplikowane (zagmatwane). Myślałem troche nad bardziej 'wysublimowanym’ podziałem, ale ostatecznie stwierdziłem, że to nie ma sensu.
Moim zdaniem kluczem do zrozumienia tego o co chodzi w tym wszystkim to zrozumienie, że 'strona internetowa’ to pojęcie rozdmuchane do granic przyzwoitości i jego objętość jest wręcz nieprzyzwoicie duża.
Fakt – z aplikacjami poszedłem w podobną skrajność, ale taki podział jest dla mnie zrozumiały. Może po prostu zamiast rozdrapywać podział na web apps’y i strony powinno się zastanowić nad podziałm appek webowych według jakiś sensownych kryteriów, a obok tego zbioru postawić takie (chyba już niewystępujące w przyrodzie) strony HTML/CSS?
Bardzo ciekawy artykuł, poruszający interesującą kwestię. Fakt, że nasz język pozostawia nam pewne trudności w takim dookreśleniu wszystkiego na pewno tego nie ułatwia.
Nie zgodzę się natomiast z jednym – z tym, jakoby strona internetowa z góry zawsze była czymś innym niż aplikacja. Może przykłady prostych CMS’ów faktycznie są dyskusyjne, ale co z SaaS’ami? Wydaje mi się, że autor mógł napomknąć o tej grupie „zabawek”, które często nie kończą się na maglowaniu php w te czy inną stronę, a na prawdziwych kombajnach technologicznych.
Aplikacje internetowe to też bardzo szerokie pojęcie i w sumie jakiś wewnętrzny podział by się przydał bo jak wspominałem 'strony’ na CMS’ach podpadały by pod kategorię apek gdyby stosować się rygorystycznie do mojego podziału. Z drugiej strony jest to chyba takie 'mniejsze zlo’.
Strona internetowa (WEB page) to nic innego jak kartka gazety wyświetlanej w Internecie (wystarczy sam HTML+CSS i nic więcej). Natomiast aplikacja internetowa (WEB Application) to program komputerowy, który wchodzi w interakcję z użytkownikiem. A więc aplikacja WEBowa jak każdy program komputerowy musi mieć jakąś warstwę logiki, natomiast strona internetowa nie musi, wystarczy, że tylko wyświetla jakieś treści typu: tekst, grafika czy efekty multimedialne.