Czy istnieją jakiekolwiek ograniczenia idealistycznej aplikacji internetowej HTML5

11

Załóżmy, że następujące dwa założenia są prawdziwe.

  • Twoja cała baza użytkowników ma dostęp szerokopasmowy wszędzie
  • Istnieje wyimaginowana przeglądarka X, która implementuje całą roboczą specyfikację grup HTML5 i WHATWG, konsekwentnie i wszyscy użytkownicy używają przeglądarki X.

Jakie są nieodłączne ograniczenia komercyjnej publicznej aplikacji internetowej HTML5, do której potrzebujemy komercyjnych publicznych aplikacji komputerowych?

Interesują mnie ograniczenia aplikacji internetowych bez wtyczek, które nie polegają na mostkach Flash / Java / SilverLight / itp. W celu uzyskania dodatkowych funkcji ani na wtyczkach przeglądarki w celu uzyskania dodatkowych funkcji.

Możliwe ograniczenia, które nie mają zastosowania:

  • Bazy danych? Mamy WebSQL i indexedDB.
  • Plik IO? Mamy interfejs API plików HTML5, który zarówno odczytuje, jak i pisze.
  • Prędkość? W ostatnim wyścigu silnika JavaScript przeglądarka nie jest już wolna. Natywny C ++ jest tylko 3 razy szybszy niż silnik V8 chrome.
  • Narzędzia programistyczne? Sieć dojrzała i dostępna jest cała gama narzędzi, których nie można wymienić.
  • Zamknięte źródło? Tak, cały kod jest open source. Jest to obosieczny miecz i istnieje wiele opinii na temat używania zamkniętego lub otwartego kodu źródłowego. Osobiście uważam, że zalety otwartego kodu przeważają nad wadami.
  • JavaScript / HTML5? Argumenty takie jak „Osobiście uważam HTML5 i EcmaScript za okropne platformy programistyczne” nie liczą się.

Znane ograniczenia:

  • Krytyczny kod czasu rzeczywistego / bezpieczeństwa (ściśle tajny) nie należy do sieci ani nie może. Musi być napisany w niskim, kontrolowanym języku, takim jak C lub C ++.
  • Każde narzędzie, które musi wchodzić w interakcję z obcym sprzętem innej firmy podłączonym do komputera, będzie miało trudności z rozmową z aplikacją internetową.

Istnieje również cały zestaw programów, które nie należą do sieci. Systemy operacyjne, sterowniki, oprogramowanie serwera, niskopoziomowe interfejsy API. Zdaję sobie z tego sprawę, ale nie klasyfikuję ich jako „komercyjnych” aplikacji, są to rodzaje oprogramowania, które można wstępnie zainstalować na komputerach.

Nawiasem mówiąc, wiem, że te dwa założenia są okropnie nierealne, ale możemy je zrealizować za 5/10/20/30 lat. Interesuje mnie rodzaj aplikacji i funkcje aplikacji, które czynią je całkowicie niekompatybilnymi z Internetem.

Motywacja:

Punkt:

Biorąc pod uwagę zestaw problemów, w których aplikacja komputerowa jest prawidłowym rozwiązaniem.

  • Dlaczego aplikacja internetowa nie jest prawidłowym rozwiązaniem?
  • Jak rozpoznać, czy mogę używać aplikacji internetowej jako rozwiązania.

Próbowałem usunąć główne trudności z aplikacjami internetowymi (połączenie internetowe i obsługa przeglądarki), twierdząc, że nie istnieją.

Poza tym aplikacje offline HTML5 i Modernizr są na dobrej drodze do rozwiązania obu tych problemów.

Jakie są inne trudności z tworzeniem aplikacji internetowych?

Raynos
źródło
2
Główne ograniczenie: dobry pomysł na aplikację internetową, z której będzie chciało korzystać wystarczająco dużo osób, związany z modelem biznesowym, który przynajmniej zwróci koszty. Reszta jest daleko na drugim miejscu.
SF.
„Jakie są wewnętrzne ograniczenia”? Co rozumiesz przez „wewnętrzne ograniczenie”? Co znaczą te słowa? Jakich informacji chcesz? Jaki masz problem? Jakie jest pytanie?
S.Lott,
@SF usuń słowo „sieć”. Potrzebujesz problemu i rozwiązania. Jeśli to rozwiązanie jest aplikacją, musi rozwiązać problem, mieć bazę użytkowników i mieć model biznesowy, który będzie działał. Właśnie porównuję zestaw problemów, które stanowią rozwiązanie dla aplikacji komputerowej, i pytam, dlaczego aplikacja internetowa nie będzie działać.
Raynos,
@ S. Niech pan się zgadza, pytanie było zbyt niejasne, mam nadzieję, że wyjaśniłem, jakie jest rzeczywiste pytanie.
Raynos,
Co? „Jakie są nieodłączne ograniczenia komercyjnej publicznej aplikacji internetowej, do której potrzebujemy komercyjnych publicznych aplikacji komputerowych?” Czy to oznacza „Kiedy potrzebujemy komputera, ponieważ sieć nie działa?” Jeśli tak, wszystkie są duplikatami: programmers.stackexchange.com/search?q=desktop+web
S.Lott

Odpowiedzi:

11

Z czubka mojej głowy ...

  • uzyskiwać dostęp do zastrzeżonego sprzętu, który eksportuje swoje operacje we / wy w inny sposób niż plik. Może to być sprzęt naukowy, maszyna przemysłowa lub zwykły nagrywarka CD i tablet digitizera z funkcją przechylania.
  • tylko HTTP i mała rodzina innych protokołów. Nie możesz tworzyć gniazd, jak chcesz, przesyłając dowolne dane binarne, które chcesz. To znacznie ogranicza łączność z innymi systemami i usługami.
  • Żaden rozsądny programista nie stworzy gry wymagającej intensywnej grafiki w JavaScript. Internet szerokopasmowy nie jest prawie porównywalny z często potrzebnymi przepustowościami DVD / HDD. Obsługa 3D w kanwie jest znacznie gorsza niż w przypadku silników gier. Nie ma możliwości obsługi joysticka, wielokrotnego jednoczesnego naciskania klawiszy, otwarta natura ułatwia oszukiwanie. Ale przede wszystkim spadek wydajności jest nie do przyjęcia.
  • Ciężkie piaskownica. Nie dostaniesz rzeczy, które głęboko zintegrują się z systemem operacyjnym. Zrzuty ekranu, oprogramowanie antywirusowe, dyski wirtualne, zadania w tle i zasobnik systemowy, zadania administracyjne itp.
  • nie może być krytyczny dla misji. W zależności od łącza szerokopasmowego uruchamianie podstawowego oprogramowania przez cały czas nie jest preferowanym sposobem większości firm.
SF.
źródło
1
2. WebSockets ujawniają gniazdo TCP. Nie masz dostępu do UDP w przeglądarce, ale TCP daje o wiele więcej opcji.
Raynos,
2
3. WebGL robi interesujące postępy. Obsługa OpenCL niedawno się rozpoczęła. Jasne, że wciąż jest 5 lat rozwoju gier komputerowych, ale zaczyna być możliwe.
Raynos,
2
@Raynos: WebSockets zapewniałby funkcjonalność podobną do gniazd, ale wymaga określonego uzgadniania, nie można łatwo dostosować go do istniejących systemów, potrzebne są modyfikacje po stronie serwera. Oznacza to brak ogólnej aplikacji sieciowej klienta ssh. WebGL może rozwiązać niektóre problemy z GFX, wciąż nie ma rozwiązania masowych wymagań dotyczących danych (gigabajty tekstur i siatek), I / O kontrolera, a także obsługa dźwięku jest obecnie żałośnie słaba.
SF.
1
4. Interfejs API urządzenia W3C (o którym nie wiedziałem) jest naprawdę na dobrej drodze do rozwiązania problemów z piaskownicą.
Raynos
1
Wiele rzeczy zmieniło się od czasu, gdy napisałeś tę odpowiedź. Przeglądarka sama w sobie stała się legalną platformą oprogramowania; wiele z tego, co opisujesz w swojej odpowiedzi, jest teraz możliwe. Tak, mogę sobie wyobrazić prawie każdą grę lub aplikację działającą w przeglądarce, przy wystarczającym wysiłku.
Robert Harvey,
3

Zasadniczo wszystko, co można dopasować do modelu serwer / klient, może być dobrą aplikacją internetową, a ispo wręcz przeciwnie można powiedzieć, że to prawda. Trend przechodzenia do Internetu minął tak szybko, ponieważ widząc, jak większość programów można zamodelować w Model / Kontroler / Widok, programy mogą podzielić model i kontroler z jego widoku.

Oczywiście ze względów wydajnościowych niektóre kontrolery są umieszczane również po stronie klienta, aby uniknąć przeciążenia serwera błędnymi żądaniami i danymi.

Chodzi mi jednak o to, jakie programy nie pasują do architektury modelu / kontrolera / widoku, ponieważ prawdopodobnie są to te same programy, które nigdy nie zostały przekonwertowane na aplikacje internetowe. Dobrym przykładem, który przychodzi na myśl, są systemy operacyjne, harmonogramy zadań, wiersz polecenia, ochrona przed wirusami, ochrona przed programami szpiegującymi. Każdy z nich prawdopodobnie nie jest zaimplementowany na stronie internetowej, ponieważ nie pasuje do modelu. I to nie przypadek, że każdy z tych programów jest silnie zależny od twojego systemu. Większość wymaga bezpośredniego dostępu do sprzętu, podczas gdy inne wymagają po prostu większego bezpieczeństwa, aby można je było uruchomić i nie można ufać, że zrobią to strony internetowe.

Oczywiście Google całkowicie dostosowuje tę koncepcję do swojego nowego systemu operacyjnego. Podobno, w przeciwieństwie do systemu Windows, nie jest to po prostu system, który zaczął korzystać z Internetu, ale raczej system w dużym stopniu od niego zależny. Wkrótce może się okazać, że wszystkie te programy zostaną udostępnione online, umożliwiając dostęp do sprzętu i oprogramowania, biorąc pod uwagę ścisłe uwierzytelnianie certyfikatu, aby uniemożliwić tylko dowolnej witrynie, ale raczej zaufanym stronom. Zależy mi na tym, aby wymyślić, co wymyślą, ponieważ myślę, że za 20 lat komputery nie będą już produkowane z oprogramowaniem do zainstalowania. Raczej wszystkie usługi będą dostępne online.

Neil
źródło
0

• Każde narzędzie, które musi wchodzić w interakcje z obcym sprzętem innej firmy podłączonym do komputera, będzie miało trudności z rozmową z aplikacją internetową.

Oprogramowanie, nad którym pracuję, ma teraz aspekt pulpitu, a także aspekt sieciowy właśnie dlatego, że musi gromadzić dane z zewnętrznych urządzeń peryferyjnych. Potrzebne są sterowniki i program kliencki do wypełnienia luki między urządzeniem a siecią.

Nie wyklucza to jednak aplikacji internetowych, ponieważ tego rodzaju aplikacje komputerowe mogą być cienkie, a logika znajduje się głównie na serwerze.

Z drugiej strony, jeśli chodzi o przetwarzanie w chmurze i masową wirtualizację, można powiedzieć, że żadna aplikacja nie musi być koniecznie ograniczana przez ograniczenia i luki w zabezpieczeniach technologii internetowej. Uruchamianie aplikacji komputerowych ze zwirtualizowanego środowiska na głupim terminalu (podobnie jak Citrix) stało się znacznie łatwiejsze do osiągnięcia i może być kolejną „modą” dla programistów.

Najważniejsze jest to, że jest teraz większy wybór niż kiedykolwiek przedtem i znacznie więcej gadających głów, grających w technologię jutra jako „najlepszy” sposób.

wałek klonowy
źródło
1
Co ciekawe, w przeglądarce internetowej można uruchamiać aplikacje komputerowe ze środowiska zwirtualizowanego. Starożytną funkcją większości serwerów VNC jest aplet Java przeglądarki VNC, domyślnie dostępny na http: // [zdalny komputer]: 5800 / So - desktop-app-as-web-app?
SF.
0

Załóżmy, że następujące dwa założenia są prawdziwe.

  • Twoja cała baza użytkowników ma dostęp szerokopasmowy wszędzie
  • Istnieje wyimaginowana przeglądarka X, która implementuje całą roboczą specyfikację grup HTML5 i WHATWG, konsekwentnie i wszyscy użytkownicy używają przeglądarki X.

Jakie są nieodłączne ograniczenia komercyjnej publicznej aplikacji internetowej HTML5, do której potrzebujemy komercyjnych publicznych aplikacji komputerowych?

Interesują mnie ograniczenia aplikacji internetowych bez wtyczek, które nie polegają na mostkach Flash / Java / SilverLight / itp. W celu uzyskania dodatkowych funkcji ani na wtyczkach przeglądarki w celu uzyskania dodatkowych funkcji.

Ok, oto rubla: ta przeglądarka ze swej natury będzie niepewna. Więc prosisz nas o kompromis między nimi. Jednak pokonanie tego i założenie, że mamy javascript (do którego nawiązałeś w swoim poście), to odpowiedź, że nie ma aplikacji, której nie można napisać przy użyciu samego HTML5 / Javascript. Zakładamy jednak, że przeglądarka nie przeszkadza.

Ta rzecz ma lokalny magazyn db, może nawiązywać połączenia z dowolną inną platformą za pomocą żądań HTTP (które RESTafarian powie ci, że jest wystarczająca) i może rysować (przez Canvas) prawie wszystko, co chcesz. Istnieją już gry 3D napisane przy użyciu otwartych standardów (OpenGL ish) i istnieją interfejsy API do robienia wszystkiego, co chcesz.

Jedyną prawdziwą wadą jest szybkość. Wykonywanie tych wywołań API HTTP do innych systemów (baz danych) potrwa. Przetwarzanie żądań FILE (COM1 :) zajmie trochę czasu (na przykład odczyt przez urządzenie szeregowe w systemie Windows), więc są to obszary problematyczne, których oczekiwałbym. Oczywiście zakładam również, że sterowniki są pisane tak, aby uzyskać do nich dostęp jak pliki, co, jestem pewien, nie jest już prawdą. Ale mogliby ujawnić taki mechanizm;)

Dla użytkownika niewiele będzie inaczej.

jcolebrand
źródło