Jak wspomnieli inni, jest to kwestia kompromisów i posiadania odpowiedniej wiedzy.
Jedyną pułapką, którą możesz rozważyć, jest to: w swoim pytaniu wspominasz, że postrzegasz sieć jako „wieloplatformową” jako zaletę. Ale czy to naprawdę? Pomyśl o tym w ten sposób: jeśli opracujesz coś na komputer, musisz zdefiniować listę platform i ich wymagania do obsługi.
Nie popełnij błędu, to samo dotyczy Internetu. I chociaż jest to już znacznie prostsze niż kiedyś, jeśli projektujesz szeroką publiczną aplikację, będziesz musiał poradzić sobie z każdą możliwą wersją każdej przeglądarki internetowej. A jeśli jest to bardziej aplikacja dla przedsiębiorstw, przygotuj się i przygotuj, aby bardzo dokładnie przygotować wymagania dotyczące obsługiwanych platform przeglądarki.
Nie sądzę, że unikniesz hacków specyficznych dla platformy tu i tam, jeśli zbudujesz coś znaczącego.
A potem zabawne części. Co jest najlepsze Przeglądarki, które aktualizują się prawie w bardzo przejrzysty sposób, tak jak Chrome? Lub te, które wprowadzają aktualizacje zabezpieczeń tylko co miesiąc i najważniejsze funkcje w każdej epoce kamienia (np. IE)? Odpowiedź nie jest tak oczywista, jak mogłoby się wydawać, ponieważ niektóre z tych częstych „przezroczystych” aktualizacji mogą uszkodzić kod i trzeba będzie postępować zgodnie z nim i niezwłocznie zareagować. Lub miej oko na wersje beta i deweloperskie podczas opracowywania i testowania. Dla wszystkich przeglądarek głupio powiedziałeś, że chcesz wesprzeć (powodzenia).
No i nie zapominajmy o uwagach dotyczących interfejsu użytkownika. Również zmierzyć się z radości z podjęciem decyzji, czy chcesz spójnego interfejsu CAŁEJ wszystkich platformach docelowych, czyli spójnego interfejsu WITHdocelowa platforma każdego hosta. Widzisz te wszystkie małe przyciski, które możesz przeglądać na stronach internetowych? Czy chcesz, aby były dokładnie takie same wszędzie, czy integrowały się ze środowiskiem używanym przez użytkownika? Oczywiście ten problem nie jest nowy i istniał w innych modelach programistycznych, ale wydaje się, że jest tutaj ważniejszy i zależy od rodzaju docelowych użytkowników i ich oczekiwań. Publiczny użytkownik końcowy chciałby, abyś zintegrował się z jego platformą - ale nadal będzie chciał, abyś „wow!” je z fantazyjnymi rzeczami - podczas gdy użytkownik korporacyjny będzie chciał czegoś, co wygląda jak aplikacja komputerowa. Platformy mobilne miały nowy wymiar.
W przypadku ostatnich 2 akapitów powszechnym pomysłem jest czasami pakowanie wstępnie skonfigurowanej przeglądarki internetowej z instalatorem, która następnie łączy się z aplikacją internetową (lokalnie hostowana lub w Internecie). Jest to świetne, ponieważ kontrolujesz częstotliwość aktualizacji i możesz „zamrozić” stan i dokładnie wiesz, na czym polegać i wspierać. Dodatkowo możesz dodawać fajne rzeczy, takie jak dedykowane rozszerzenia użytkownika. Na przykład pakowanie „zamrożonego” chromu z małymi rozszerzeniami Chrome, które opracowałeś, aby ułatwić korzystanie z aplikacji internetowej różnym użytkownikom, może być bardzo miłe. Z drugiej strony ... jesteś teraz odpowiedzialny za naruszenie bezpieczeństwa, ponieważ zamroziłeś cykl wydania, a twoja aplikacja nie skorzysta z poprawy prędkości (jeśli w ogóle).
Jak wiele rzeczy, jest to obosieczny topór.
Uwaga: Mam silną stronniczość w stosunku do sieci, ponieważ jestem w zasadzie dużym stosem częściowo wypieczonych technologii (i jestem tutaj uprzejmy), aż do warstw OSI, na których ciągle dodajemy warstwy badziewia, chowając problemy pod spodem, nie rozwiązując się tak naprawdę lub naprawiając je.
Biorąc to pod uwagę, jestem zwolennikiem sieci ze względu na jej wszechobecny charakter jako platformy. Myślę, że ruch Twojej firmy jest (prawdopodobnie) właściwy. Oczywiście zależy to od rynku docelowego i platform, na które celujesz. Jeśli chcesz ujawnić coś jako usługę, prawdopodobnie dobrze jest iść (choć nie jest to również konieczne). Jeśli nie, to może nie ma tak wielu powodów.
Hmm, i spodziewaj się zabawnych zmian w przyszłości, teraz, gdy coraz więcej lekkich wariantów istniejących systemów operacyjnych odradza się w środowiskach mobilnych (netbooki, smartfony, urządzenia PDA, tablety, eBooki ...), z większym naciskiem na używanie lekkich osadzonych przeglądarek. .. ale z całym ich nowym udziałem w renderowaniu interfejsu użytkownika.
Odnośnie technologii opartych na wtyczkach ... powiedziałbym, żeby się od nich oddalić. Zwiększą moc Twojej aplikacji, ale ograniczą jej penetrację rynku. W niektórych przypadkach będzie to postrzegane jako plus pod względem wsparcia międzyplatformowego, dopóki nowa platforma nagle odmówi ich obsługi. Standardy internetowe są tutaj z jakiegoś powodu (bądź ostrożny, aby nie ekscytować się zbytnio wszystkim w HTMl5, bo może to wybuchnąć ci w twarz).
EDYCJA: inne rzeczy do rozważenia ...
Rekrutacja
Jest to bardzo trudne do znalezienia doświadczonych programistów. Można by pomyśleć, że jest ich stado, ale gubią się w ogromnej puli, cóż, dość niekompetentnych ludzi, którzy myślą, że udało się napisać 700 wierszy JavaScript / ECMAScript, aby zaimplementować sprawdzanie poprawności w swoich formularzach, to wszystko i wszystko, co można osiągnąć w zakresie umiejętności na wysokim poziomie.
Nie żartuję, ostatnio moim pierwszym pytaniem do wszystkich wywiadów z programistami jest to, jak zadeklarować zmienną, a następnie, czy istnieje różnica między używaniem, var
czy nie (w zależności od tego, jak odpowiadają). To przygnębiające. Znalezienie przeciętnego lub zaawansowanego programisty WWW jest dla mnie znacznie trudniejsze niż znalezienie przeciętnego lub zaawansowanego programisty komputerowego.
Postrzeganie
Nikt nigdy nie będzie cię traktować poważnie, gdy powiesz „Jestem programistą”. To jest dla podklasy programistów, programistów, prawda? Te, które ignorujesz i kpisz z daleka, i nie dołączają, gdy idą po kawę. :)
Jest to oczywiście nieprawda, ale sprowadza się to do tego, że tworzysz środowisko, które jest w większości zarządzane za Ciebie. Przeglądarki korygują twój zepsuty znacznik, zepsuty styl, a nawet poprawią niektóre zepsute skrypty i zoptymalizują je dla Ciebie, jeśli chcesz. A jeśli jesteś programistą internetowym, ludzie nie zakładają, że masz pojęcie o programowaniu niższego poziomu, więc musisz być kompletnym idiotą, prawda?
A potem zdają sobie sprawę, jak szalenie skomplikowany może być ECMAScript, ale odmówią przeglądu swojej opinii. Ponieważ to jest sieć. Nie lubimy tego z natury, po prostu lubimy to, co pozwala nam to robić.