Wprowadzenie
Jako inżynier z firmą Tailwind Traders wiesz, że Twoja firma planuje uruchomić nową witrynę internetową, która udostępnia klientom informacje o cenach akcji. Niedawno praktykant stworzył prototyp witryny internetowej dla nowej aplikacji, a teraz główny architekt zwrócił się do Ciebie o udoskonalenie rozwiązania. Twoim celem jest zaktualizowanie aplikacji w celu wdrożenia automatycznych aktualizacji informacji o cenach akcji, lecz przy zapewnieniu, że komunikacja między klientem i serwerem odbywa się tylko po zmianie danych na serwerze.
Architektura prototypu
Prototyp serwera ma 2 funkcje:
Nazwa funkcji | Typ wyzwalacza | opis |
---|---|---|
getStocks | Azure Cosmos DB | Serwer jest odpowiedzialny za odczytywanie wszystkich danych z tabeli stocks w bazie danych i zwracanie tych danych w odpowiedzi HTTP za każdym razem, gdy klient zażąda go. |
setPrice | Czasomierz | Funkcja umożliwiająca zmianę danych w bazie danych jest uruchamiana w wyzwalaczu czasomierza. Symuluje to odbieranie zmian z systemu zaplecza. |
Jako prototyp stażysta symulował źródło danych zapasów za pomocą funkcji czasomierza, która jest aktualizowana co minutę. Witryna internetowa klienta żąda wszystkich zasobów z punktu końcowego interfejsu /api/getStocks
API co 5 sekund, próbując wyświetlić dane niemal w czasie rzeczywistym. To żądanie klienta nie jest wydajne. Zamiast ściągać dane z serwera, bardziej wydajne jest wypychanie nowych informacji o magazynie przez serwer.
Zadania do wykonania
Zawartość tego modułu:
- Uruchom prototyp: Wyświetl aplikację kliencką, która sonduje serwer pod kątem wszystkich zasobów w regularnych odstępach czasu
- Ulepszanie aplikacji: zaimplementuj bezserwerową aplikację usługi Azure Functions, aby emitować zmiany do połączonych klientów przy użyciu usługi SignalR Service do produktów niemal w czasie rzeczywistym.
- Zaktualizuj aplikację internetową JavaScript klienta, aby nawiązać połączenie z usługą SignalR, aby pobrać i wyświetlić komunikaty.