Zamierzam rozpocząć boczny projekt budowy aplikacji internetowej „pojedynczej strony”. Aplikacja musi być w czasie rzeczywistym, wysyłając aktualizacje do klientów w miarę zmian.
Czy są jakieś dobre zasoby dla najlepszych praktyk w architekturze dla tego rodzaju aplikacji? Najlepszym zasobem, jaki do tej pory znalazłem, jest artykuł o architekturze trello tutaj: http://blog.fogcreek.com/the-trello-tech-stack/
Dla mnie ta architektura, choć bardzo seksowna, jest prawdopodobnie przeprojektowana dla moich konkretnych potrzeb - chociaż mam podobne wymagania. Zastanawiam się, czy muszę zawracać sobie głowę publikacją po stronie serwera, czy nie mogę po prostu przesyłać aktualizacji z serwera, gdy coś się dzieje (np. Kiedy klient wysyła aktualizację do serwera, zapisuje aktualizację do bazy danych, a następnie wysłać aktualizację do klientów).
Technicznie rzecz biorąc, prawdopodobnie zamierzam to zbudować w Node.JS, a może Ruby, chociaż wytyczne dotyczące architektury powinny do pewnego stopnia mieć zastosowanie do wszelkich bazowych technologii serwerowych.
źródło
Prawdopodobnie wybrałbym framework javascript MV * dla frontonu. Sam buduję jednostronicową aplikację internetową i po przeanalizowaniu szeregu rozwiązań ostatecznie zdecydowałem się na Backbone.js. Przekonałem się, że chociaż to rozwiązanie nie zapewniało największej funkcjonalności od samego początku, zapewniło mi podstawową podstawę i jest o wiele bardziej elastyczne niż inne rozwiązania, na które patrzyłem (co było dla mnie ważne).
Inne popularne rozwiązania to Ember.js i Knockout.js, które zapewniają więcej gotowych funkcji, jednak musisz przestrzegać ich konwencji, aby korzystać z funkcji thT (która może, ale nie musi, działać).
źródło
To jest bezmyślne IMO. AngularJS dla frontonu, ponieważ jest niesamowity. NodeJS / express / SocketIO dla dynamicznego i seksownego backendu z dobrem pub / sub i minimum zamieszania. Jako bonus możesz użyć jednego języka dla przodu i tyłu!
Sprawdź moją implementację tego samego https://github.com/hackify/hackify-server na przykład
Jedno zastrzeżenie, niektórzy ludzie zalecają alternatywę NodeJS do gniazda o nazwie sockjs, ale nie sprawdziłem tego, więc nie mogę go polecić
źródło
Wygląda na to, że patrzysz na Apache 2.2 z serwerem aplikacji PHP lub Tomcat z prostym serwletem, który obsługuje żądania. Jest to odpowiednik stolarza dla młota i gwoździ. Nic skomplikowanego, ale wykonuje zadanie. Jeśli kiedykolwiek chciałeś rozszerzyć funkcjonalność, zawsze możesz to zrobić, ponieważ Tomcat może obsługiwać pliki jsp i jsf, jeśli kiedykolwiek były potrzebne.
Jeśli chodzi o interfejs, bez problemu skorzystam z jQuery ( $ .post , $ .load , $ .ajax ), ponieważ jest to bardzo przydatne podwojenie jako sposób na dodanie funkcjonalności strony w połączeniu z interfejsem jQuery
źródło
Jeśli chcesz aktualizować klientów w czasie rzeczywistym, musisz albo wdrożyć długo blokujące połączenia „AJAX”, albo najlepiej użyć nowoczesnych gniazd internetowych. Umożliwiają one wypychanie aktualizacji do podłączonego klienta, który będzie obsługiwany przez odrobinę javascript.
Rozumiem, że obecna najnowsza (lub najnowsza moda) to AngularJS firmy Google. Jest częściowo zaprojektowany, aby ułatwić pisanie SPA.
źródło
Jeśli chcesz czegoś zbliżonego do średniego stosu (node.js, mongo ...) do zbudowania jednostronicowej aplikacji, która musi być reaktywna, wybrałbym meteor . Zwłaszcza jeśli budujesz prototyp i zaczynasz od zera.
Szyny z kanciastym frontendem byłyby dobrym wyborem imho, ale trudniej będzie ci „wysyłać aktualizacje do klientów w miarę zmian”, ponieważ będziesz musiał zainstalować określone klejnoty, połączyć kilka bibliotek z długimi pollingami lub biblioteką sockjs .. .
źródło