Znajdź błąd projektowy: wykorzystanie AJAX (część I)
Nie przepadam za AJAX. Moja niechęć dotyczy nie tyle samej technologii, co jej nadużywania. Świat jednak idzie do przodu i trzeba pogodzić się z tym, że coraz więcej aplikacji z AJAX i podobnych technologii korzystać będzie. A czasami wykorzystanie nowej technologii niesie ze sobą nowe, lepsze błędy. Tym razem zaprezentuję prosty schemat dostępu do danych, który spotkałem w kilku implementacjach.
Schemat DFD i opis do niego
Na początek prosty diagram DFD:
Na diagramie tym istotne są data flow , w szczególności te, które nazwałem od DF1 do DF6 oraz trust boundary. Fakt umieszczenia na diagramie dwóch obiektów aplikacji (aplikacja i webservice) nie jest specjalnie istotny, równie dobrze mógłby być jeden obiekt tego typu. Diagram ten przedstawia następującą historię:
- W pierwszym kroku klient (użytkownik) otrzymuje formatkę, na której może określić dane wyszukiwania. To, co użytkownik może wybrać na formatce jest ograniczone jego uprawnieniami. W zależności od roli użytkownika, pewne opcje są lub nie są dostępne. Wypełniona formatka jest wysyłana do aplikacji w DF1. Ponieważ DF1 przekracza trust boundary (tampering!) przesłane przez użytkownika parametry są weryfikowane po stronie serwera.
- Jeśli użytkownik przysłał poprawne dane, serwer generuje “szablon” strony (bez danych), na której osadzone jest odpowiednie zapytanie AJAX, które ma pobrać odpowiednie dane i zaprezentować je użytkownikowi. Wszystko to jest przesyłane do klienta przez DF2.
- Po załadowaniu strony w przeglądarce, generuje ona żądanie (osadzony w kroku drugim kod) do WebService w celu pobrania danych. To, jaka funkcja jest wywoływana i z jakimi parametrami zależy od przesłanych w pierwszym kroku przez użytkownika parametrów. Wywołanie odbywa się w DF3.
- Na podstawie otrzymanego od klienta zapytania, WebService konstruuje zapytanie do DB i przesyła je z wykorzystaniem DF4.
- Odpowiedź jest odbierana przez WebService w DF5
- Klient otrzymuje dane, których parametry określił w kroku pierwszym przez DF6, dane wyświetlane są na stronie.
Pytanie: gdzie jest błąd?
Oryginał tego wpisu dostępny jest pod adresem Znajdź błąd projektowy: wykorzystanie AJAX (część I)
Autor: Paweł Goleń