ASP.NET MVC 4. Programowanie

Transcription

ASP.NET MVC 4. Programowanie
Tytuł oryginału: ASP.NET MVC 4. Programowanie
Tłumaczenie: Robert Górczyński
ISBN: 978-83-246-6644-7
© 2013 Helion S.A.
Authorized Polish translation of the English edition Programming ASP.NET MVC 4, ISBN 9781449320317
© 2012 Jess Chadwick, Todd Snyder, Hrusikesh Panda
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or controls all
rights to publish and sell the same.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: [email protected]
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/aspm4p
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
• Kup książkę
• Poleć książkę
• Oceń książkę
• Księgarnia internetowa
• Lubię to! » Nasza społeczność
Spis treci
Wprowadzenie ........................................................................................................................11
Cz I. Rozkrcamy si .......................................................................................................... 15
Rozdzia 1. Podstawy ASP.NET MVC .......................................................................................17
Opracowane przez Microsoft platformy tworzenia aplikacji sieciowych
Active Server Pages (ASP)
ASP.NET Web Forms
ASP.NET MVC
Architektura MVC
Model
Widok
Kontroler
17
18
18
18
19
20
20
20
Co nowego w ASP.NET MVC 4?
Wprowadzenie do aplikacji EBuy
Instalacja ASP.NET MVC
Tworzenie aplikacji ASP.NET MVC
20
22
23
23
Szablony projektów
Konwencja przed konfiguracj
Uruchamianie aplikacji
Routing
Konfiguracja tras
Kontrolery
Akcje kontrolera
Obiekt ActionResult
Parametry akcji
Filtry akcji
23
27
28
28
29
31
32
32
33
36
Widoki
Wyszukiwanie widoków
Poznaj Razor
Odrónianie kodu od znaczników
Ukady graficzne
Widoki czciowe
Wywietlanie danych
Metody pomocnicze HTML i URL
Modele
36
37
38
39
40
41
43
45
46
3
Kup książkę
Poleć książkę
Zebranie wszystkich komponentów w cao
Trasa
Kontroler
Widok
Uwierzytelnianie
AccountController
Podsumowanie
47
47
47
49
52
54
55
Rozdzia 2. ASP.NET MVC dla programistów formularzy sieciowych ................................. 57
Wszystko krci si wokó ASP.NET
Narzdzia, jzyki i API
Moduy i procedury obsugi HTTP
Zarzdzanie stanem
Wdraanie i rodowisko uruchomieniowe
Wicej rónic ni podobiestw
Oddzielanie logiki aplikacji od logiki widoku
Adresy URL i routing
Zarzdzanie stanem
Generowanie kodu HTML
Tworzenie widoku ASP.NET MVC za pomoc skadni Web Forms
Sowo ostrzeenia
Podsumowanie
57
58
58
58
59
59
60
60
61
62
66
66
67
Rozdzia 3. Praca z danymi ....................................................................................................69
Tworzenie formularza
Obsuga akcji POST formularza
Zapis danych w bazie danych
Technika Code First — zasada „konwencja przed konfiguracj”
Tworzenie warstwy dostpu do danych z uyciem techniki Code First
w Entity Framework
Weryfikacja danych
Okrelanie regu biznesowych za pomoc adnotacji danych
Wywietlanie komunikatów o bdach z procesu weryfikacji danych
Podsumowanie
69
71
71
72
72
73
74
77
80
Rozdzia 4. Programowanie po stronie klienta .................................................................... 81
Praca z jzykiem JavaScript
Selektory
Udzielanie odpowiedzi na zdarzenia
Manipulacje modelem DOM
AJAX
Weryfikacja danych po stronie klienta
Podsumowanie
4
_
81
83
86
88
89
91
95
Spis treci
Kup książkę
Poleć książkę
Cz II. Kolejny poziom ......................................................................................................... 97
Rozdzia 5. Architektura aplikacji sieciowej .........................................................................99
Wzorzec MVC
99
Zasada separacji zada
MVC i platformy sieciowe
99
100
Architektura aplikacji sieciowej
102
Architektura logiczna
Architektura logiczna aplikacji sieciowej ASP.NET MVC
Najlepsze praktyki w zakresie architektury logicznej
Architektura fizyczna
Przestrze nazw projektu i nazwy podzespoów
Opcje wdroenia
Najlepsze praktyki w zakresie architektury fizycznej
102
102
104
105
105
106
107
Reguy dotyczce architektury aplikacji
108
SOLID
Odwracanie sterowania
109
114
Nie powtarzaj si
Podsumowanie
121
122
Rozdzia 6. Usprawnianie witryny poprzez uycie technologii AJAX ............................... 123
Czciowe generowanie strony
123
Generowanie widoków czciowych
124
Wygenerowanie kodu JavaScript
129
Wygenerowanie danych JSON
danie danych JSON
Szablony po stronie klienta
129
131
131
Ponowne uywanie tej samej logiki zarówno w daniach AJAX, jak i pozostaych
134
Udzielanie odpowiedzi na dania AJAX
Udzielanie odpowiedzi na dania JSON
Zastosowanie tej samej logiki w wielu akcjach kontrolera
135
136
137
Wysyanie danych do serwera
138
Przekazywanie skomplikowanych obiektów JSON
Wybór cznika modelu
Efektywne wysyanie i odbieranie danych JSON
140
141
143
Wykonywanie da AJAX midzy domenami
144
JSONP
Wczanie Cross-Origin Resource Sharing
144
147
Podsumowanie
148
Rozdzia 7. Platforma Web API ASP.NET ............................................................................. 149
Tworzenie usugi danych
149
Rejestracja tras Web API
Wykorzystanie techniki „konwencja przed konfiguracj”
Nadpisanie konwencji
Uycie API
151
151
152
153
Spis treci
Kup książkę
_
5
Poleć książkę
Stronicowanie i pobieranie danych
Obsuga wyjtków
Media
Podsumowanie
155
156
158
161
Rozdzia 8. Zaawansowane dane ....................................................................................... 163
Wzorce dostpu do danych
Klasy POCO
Uywanie wzorca repozytorium
Mapowanie obiektowo-relacyjne
Ogólny opis Entity Framework
Wybór podejcia w zakresie dostpu do danych
Wspóbieno w bazie danych
Tworzenie warstwy dostpu do danych
163
163
164
166
168
169
169
171
Podejcie Entity Framework Code First
Model domeny biznesowej aplikacji EBuy
Praca z kontekstem danych
171
173
176
Sortowanie, filtrowanie i stronicowanie danych
Podsumowanie
178
183
Rozdzia 9. Zapewnianie bezpieczestwa .......................................................................... 185
Tworzenie bezpiecznej aplikacji sieciowej
Obrona
Nigdy nie ufaj danym wejciowym
Wymuszanie stosowania reguy najmniejszych uprawnie
Przyjmuj zaoenie, e zewntrzne systemy s niebezpieczne
Ogranicz moliwoci ataku
Wycz niepotrzebne funkcje
Zabezpieczanie aplikacji
Zabezpieczanie aplikacji intranetowej
Uwierzytelnianie formularzy
Ochrona przed atakami
SQL Injection
Cross-Site Scripting
Cross-Site Request Forgery
Podsumowanie
185
185
186
186
186
186
187
187
188
193
200
201
206
207
209
Rozdzia 10. Programowanie na platformy mobilne ...........................................................211
Funkcje mobilne platformy ASP.NET MVC 4
Wiksza przyjazno aplikacji mobilnej
Tworzenie widoku mobilnego dla aukcji
Rozpoczcie pracy z jQuery Mobile
Usprawnianie widoku za pomoc jQuery Mobile
Unikanie widoków biurkowych w witrynie mobilnej
Usprawnianie wersji mobilnej witryny
6
_
211
213
214
215
218
223
224
Spis treci
Kup książkę
Poleć książkę
Technika Adaptive Rendering
225
Znacznik viewport
Wykrywanie funkcji mobilnych
Zapytania mediów CSS
Widoki dla konkretnych przegldarek internetowych
225
226
228
229
Tworzenie nowej aplikacji mobilnej zupenie od pocztku
231
Platforma jQuery Mobile
Szablon aplikacji mobilnej w ASP.NET MVC 4
Uywanie szablonu aplikacji mobilnej w ASP.NET MVC 4
232
232
233
Podsumowanie
236
Cz III. Zagadnienia zaawansowane ............................................................................... 237
Rozdzia 11. Operacje na danych przeprowadzane równolegle,
asynchronicznie i w czasie rzeczywistym .......................................................239
Kontroler asynchroniczny
239
Tworzenie kontrolera asynchronicznego
Kiedy uywa kontrolera asynchronicznego?
240
242
Asynchroniczna komunikacja w czasie rzeczywistym
242
Porównanie modeli aplikacji
Model HTTP polling
Model HTTP long polling
Zdarzenia wysyane przez serwer
WebSocket
Usprawnianie komunikacji w czasie rzeczywistym
Konfiguracja i dostrajanie
242
243
244
245
246
247
250
Podsumowanie
252
Rozdzia 12. Buforowanie ....................................................................................................253
Rodzaje buforowania
253
Buforowanie po stronie serwera
Buforowanie po stronie klienta
253
254
Techniki buforowania po stronie serwera
254
Buforowanie o zasigu dania
Buforowanie o zasigu uytkownika
Buforowanie o zasigu aplikacji
Bufor ASP.NET
Bufor danych wyjciowych
Buforowanie donut caching
Buforowanie donut hole caching
Buforowanie rozproszone
254
255
256
256
258
261
263
264
Techniki buforowania po stronie klienta
269
Dziaanie bufora przegldarki internetowej
AppCache
Local Storage
269
271
273
Podsumowanie
274
Spis treci
Kup książkę
_
7
Poleć książkę
Rozdzia 13. Techniki optymalizacji po stronie klienta ....................................................... 275
Anatomia strony
Anatomia HttpRequest
Najlepsze praktyki
Wykonuj mniejsz liczb da HTTP
Uywaj CDN
Dodawaj nagówek Expires lub Cache-Control
Komponenty skompresowane w formacie GZip
Umieszczaj arkusze stylów na pocztku pliku
Umieszczaj skrypty na kocu dokumentu
Korzystaj z zewntrznych skryptów i arkuszy stylów
Zmniejszanie liczby zapyta DNS
Minimalizacja plików JavaScript i CSS
Unikaj przekierowa
Usunicie powielajcych si skryptów
Konfiguracja nagówka ETag
Pomiar wydajnoci po stronie klienta
Wykorzystanie platformy ASP.NET MVC do pracy
Tworzenie paczek i minimalizacja
Podsumowanie
275
276
277
278
278
280
282
283
283
285
286
286
287
289
289
290
293
294
297
Rozdzia 14. Zaawansowany routing ..................................................................................299
Wayfinding
Adresy URL i techniki SEO
Tworzenie tras
Domylne parametry i opcjonalne trasy
Priorytet i kolejno tras
Routing do istniejcych plików
Ignorowanie tras
Trasy typu Catch-All
Ograniczenia trasy
Narzdzie Glimpse i trasy
Routing oparty na atrybutach
Rozszerzanie routingu
Mechanizm routingu
Podsumowanie
299
301
302
303
305
305
305
306
307
309
310
313
314
318
Rozdzia 15. Ponownie uywane komponenty interfejsu uytkownika ........................... 319
Co platforma ASP.NET MVC oferuje standardowo?
Widoki czciowe
Metody rozszerzajce HtmlHelper czy wasne metody?
Szablony Display i Editor
Html.RenderAction()
Przejcie o krok dalej
Razor Single File Generator
Tworzenie wielokrotnie wykorzystywanych widoków ASP.NET MVC
Tworzenie wielokrotnie uywanych metod pomocniczych ASP.NET MVC
8
_
319
319
319
320
320
321
321
323
327
Spis treci
Kup książkę
Poleć książkę
Testy jednostkowe dla widoków Razor
Podsumowanie
328
330
Cz IV. Kontrola jakoci .................................................................................................... 331
Rozdzia 16. Rejestrowanie informacji ................................................................................333
Obsuga bdów na platformie ASP.NET MVC
333
Wczanie wasnych bdów
Obsuga bdów w akcjach kontrolerów
Definiowanie globalnych procedur obsugi bdów
334
335
335
Rejestrowanie informacji i ledzenie
337
Rejestrowanie informacji o bdach
Monitorowanie stanu ASP.NET
337
340
Podsumowanie
342
Rozdzia 17. Zautomatyzowane testowanie .......................................................................343
Semantyka testowania
343
Rczne testowanie
Zautomatyzowane testowanie
344
345
Poziomy zautomatyzowanego testowania
345
Testy jednostkowe
Szybko (ang. fast)
Testy integracyjne
Testy akceptacyjne
345
347
348
349
Co to jest projekt zautomatyzowanych testów?
350
Tworzenie projektu testowego w Visual Studio
Tworzenie i przeprowadzanie testu jednostkowego
Testowanie aplikacji ASP.NET MVC
Testowanie modelu
Test-Driven Development
Tworzenie przejrzystych, zautomatyzowanych testów
Testowanie kontrolerów
Refaktoring testów jednostkowych
Symulacja spenienia zalenoci
Testowanie widoków
350
351
354
354
357
358
360
363
364
368
Test pokrycia
370
Mit 100% wyniku testu pokrycia
372
Tworzenie kodu atwego do testowania
Podsumowanie
372
374
Rozdzia 18. Automatyzacja kompilacji .............................................................................. 375
Tworzenie skryptów kompilacji
376
Projekty Visual Studio s skryptami kompilacji!
Dodanie prostego zadania kompilacji
Przeprowadzanie kompilacji
Moliwoci s nieograniczone!
376
376
377
378
Spis treci
Kup książkę
_
9
Poleć książkę
Automatyzacja kompilacji
378
Rodzaje zautomatyzowanej kompilacji
Definiowanie zautomatyzowanej kompilacji
379
380
Ciga integracja
383
Wykrywanie problemów
Reguy cigej integracji
383
384
Podsumowanie
388
Cz V. Umieszczanie aplikacji sieciowej w internecie .....................................................389
Rozdzia 19. Wdraanie ....................................................................................................... 391
Co trzeba wdroy?
391
Podstawowe pliki witryny internetowej
Tre statyczna
Czego nie trzeba wdraa?
Bazy danych oraz inne zewntrzne zalenoci
Jakie s wymagania aplikacji EBuy?
391
394
394
395
396
Wdraanie na serwerze Internet Information Server
396
Przygotowania
Tworzenie i konfiguracja witryny internetowej na serwerze IIS
Publikowanie witryny z poziomu Visual Studio
397
397
399
Wdraanie za porednictwem Windows Azure
403
Tworzenie konta Windows Azure
Tworzenie nowej witryny internetowej Windows Azure
Publikacja witryny internetowej Windows Azure poprzez system kontroli wersji
Podsumowanie
403
404
404
406
Dodatki .................................................................................................................................407
Dodatek A. Integracja platform ASP.NET MVC i Web Forms ..............................................409
Dodatek B. Wykorzystanie NuGet jako platformy .............................................................. 417
Dodatek C. Najlepsze praktyki .............................................................................................435
Dodatek D. Odniesienia — tematy, funkcje i scenariusze ................................................. 449
Skorowidz ...................................................................................................................453
10
_
Spis treci
Kup książkę
Poleć książkę
ROZDZIA 10.
Programowanie na platformy mobilne
Sie mobilna to oferujce bardzo due moliwoci medium dostarczania treci wikszej grupie
uytkowników. Wraz ze zwikszajc si liczb uywanych smartfonów i rozwojem sieci
mobilnej uwzgldnienie urzdze mobilnych podczas przygotowywania projektów staje si
coraz waniejsze.
Najwikszy problem podczas przygotowywania aplikacji do jej uywania w sieci mobilnej
polega na tym, e nie wszystkie urzdzenia mobilne s tworzone w taki sam sposób. Poszczególne urzdzenia maj róne moliwoci sprztowe i zainstalowane przegldarki internetowe,
a take odmienne funkcje, np. w zakresie dotykowej obsugi urzdzenia itd. Przystosowanie
witryny internetowej do prawidowego i spójnego dziaania w rónych urzdzeniach mobilnych
nie jest atwym zadaniem.
W tym rozdziale dowiesz si, jak uywa funkcji oferowanych przez platform ASP.NET
MVC — w szczególnoci nowych funkcji, które pojawiy si w wersji 4. platformy — w celu
zapewnienia prawidowego i spójnego dziaania witryny internetowej na maksymalnej liczbie
urzdze mobilnych. Przekonasz si równie, co zrobi w sytuacji, gdy dla danego urzdzenia
mobilnego nie mona zaoferowa prawidowej obsugi witryny internetowej, któr tworzysz.
Funkcje mobilne platformy ASP.NET MVC 4
Poczwszy od wersji 3., platforma ASP.NET MVC oferuje zestaw funkcji uatwiajcych tworzenie mobilnych wersji witryn internetowych. Funkcje te zostay usprawnione w wersji 4. platformy.
Ponisza lista przedstawia krótki opis funkcji pomagajcych w tworzeniu wersji mobilnej
aplikacji sieciowej, wprowadzonych w ASP.NET MVC 4. W pozostaej czci rozdziau przekonasz si, jak wykorzysta te funkcje w tworzonej aplikacji sieciowej.
Szablon aplikacji mobilnej w ASP.NET MVC 4
Jeeli ju od samego pocztku chcesz utworzy jedynie mobiln wersj aplikacji sieciowej, platforma ASP.NET MVC 4 oferuje szablon Mobile Application, który pozwala na
natychmiastowe przystpienie do tworzenia wersji mobilnej aplikacji sieciowej. Podobnie
jak w przypadku szablonów zwykych aplikacji MVC, w szablonie mobilnym platforma
umieszcza ju pewien kod odpowiedzialny za wygenerowanie widoków dla urzdze
mobilnych, przeprowadza konfiguracj pakietów jQuery Mobile MVC NuGet oraz tworzy
szkielet aplikacji. Dokadne omówienie szablonu aplikacji mobilnej znajdziesz w dalszej czci
rozdziau, w podrozdziale zatytuowanym „Szablon aplikacji mobilnej w ASP.NET MVC 4”.
211
Kup książkę
Poleć książkę
Tryby wywietlania
Aby mona byo jeszcze atwiej dostosowa aplikacj sieciow do rónych urzdze, platforma ASP.NET MVC 4 oferuje tak zwane tryby wywietlania — to funkcja odpowiedzialna za
wykrycie i przygotowanie odpowiedniego widoku dla poszczególnych urzdze.
Poszczególne urzdzenia mobilne maj róne rozdzielczoci ekranu, inne zachowanie
przegldarek internetowych, a nawet odmienne funkcje, które mog by wykorzystane
przez aplikacje sieciowe. Zamiast próbowa dopasowa dany widok do maksymalnej liczby rónych urzdze, lepszym rozwizaniem jest umieszczenie poszczególnych zachowa
i funkcji w oddzielnych widokach przeznaczonych dla konkretnych urzdze.
Zaómy, e masz przygotowany widok o nazwie Index.cshtml, przeznaczony dla zwykych urzdze biurkowych. Otrzymujesz zadanie przygotowania mobilnej wersji tego
widoku przeznaczonej do wywietlania na smartfonach i tabletach. Dziki uyciu trybów
wywietlania moesz przygotowa odpowiednie wersje widoku dla rónych urzdze,
np. Index.iPhone.cshtml i Index.iPad.cshtml, a nastpnie podczas uruchamiania aplikacji zarejestrowa je za pomoc dostawcy widoku na platformie ASP.NET MVC 4. Opierajc si
na kryteriach filtrowania, platforma ASP.NET MVC 4 moe automatycznie wyszuka
widok zawierajcy odpowiedni przyrostek (iPhone lub iPad) i wywietli ten widok zamiast standardowego, przeznaczonego dla urzdze biurkowych. (Zwró uwag, jak dla
widoków alternatywnych platforma ASP.NET MVC stosuje prost konwencj nadawania
nazw plikom w postaci nazwa_widoku.urzdzenie.rozszerzenie). W znajdujcym si w dalszej
czci rozdziau podrozdziale zatytuowanym „Widoki dla konkretnych przegldarek
internetowych” przekonasz si, jak uy tej funkcji w celu zapewnienia obsugi rónych
urzdze.
Nadpisanie zwykych widoków ich wersjami mobilnymi
Platforma ASP.NET MVC 4 wprowadzia prosty mechanizm pozwalajcy na nadpisanie
dowolnego widoku (wczajc w to ukady graficzne i widoki czciowe) dla poszczególnych przegldarek internetowych, w tym take dla przegldarek internetowych uywanych w urzdzeniach mobilnych. Aby dostarczy widok przeznaczony dla urzdzenia
mobilnego, konieczne jest utworzenie pliku widoku zawierajcego w nazwie czon .Mobile.
Na przykad przygotowanie mobilnej wersji widoku Index wymaga utworzenia jego kopii wraz z wymienionym wczeniej czonem w nazwie (Views\Home\Index.Mobile.cshtml);
platforma ASP.NET automatycznie wygeneruje ten (zamiast biurkowego) widok w mobilnej
wersji przegldarki internetowej. Warto doda, e wprawdzie funkcja trybów wywietlania
pozwala na wskazanie widoku dla konkretnej przegldarki internetowej w urzdzeniu
mobilnym, ale odbywa si to na ogólniejszym poziomie. Takie rozwizanie bdzie uyteczne,
jeli widoki s wystarczajco ogólne, aby mogy by prawidowo wywietlane w rónych
mobilnych wersjach przegldarek internetowych. T funkcj moesz równie stosowa,
jeli uywasz platformy takiej jak jQuery Mobile, która zapewnia spójne dziaanie aplikacji
na wikszoci platform mobilnych.
Platforma jQuery Mobile
Platforma jQuery Mobile przynosi aplikacjom sieciowym cae bogactwo i uyteczno bibliotek jQuery oraz jQuery UI. Zamiast zmaga si z niespójnociami dziaania przegldarek internetowych w rónych urzdzeniach mobilnych, moesz po prostu utworzy
jedn aplikacj sieciow, która bdzie dziaa we wszystkich urzdzeniach mobilnych.
Platforma ta oferuje korzyci wynikajce z moliwoci stosowania technik progresywnych usprawnie i zapewnia elastyczny projekt, dziki któremu starsze urzdzenia nadal
212
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
otrzymuj funkcjonaln (cho niekoniecznie adn i bogat w funkcje) aplikacj, podczas
gdy nowe urzdzenia korzystaj z peni moliwoci dostarczanych przez funkcje jzyka
HTML5. Platforma jQuery Mobile doskonale obsuguje motywy, co pozwala na utworzenie niepowtarzalnej witryny bez koniecznoci rezygnowania z zalet wynikajcych z progresywnych uaktualnie. W rozdziale tym przekonasz si, jak dziki platformie jQuery
Mobile mona przenie aplikacj na kolejny poziom.
Wiksza przyjazno aplikacji mobilnej
Tematyka zwizana z programowaniem na platformy mobilne jest obszerna i obejmuje wiele
aspektów, które twórca witryny internetowej musi uwzgldni, aby utworzy tego rodzaju
witryn. Prawdopodobnie najwaniejszym aspektem jest najlepszy sposób dostarczenia informacji uytkownikom oraz interakcja z uytkownikami.
We
pod uwag aplikacj sieciow dla urzdzenia biurkowego, w którym okno przegldarki
internetowej jest wywietlone na duym ekranie, a uytkownik ma do dyspozycji szybkie i niezawodne poczenie internetowe, natomiast interakcj z aplikacj sieciow prowadzi za pomoc klawiatury i myszy. Z kolei aplikacje mobilne z reguy s wywietlane na niewielkich
ekranach, internet nie zawsze jest szybki i niezawodny, natomiast do wprowadzania danych
suy najczciej piórko bd
kilka palców.
Wymienione ograniczenia niewtpliwie prowadz do zmniejszenia iloci dostarczanej treci
oraz liczby oferowanych funkcji w porównaniu z aplikacjami sieciowymi przeznaczonymi
dla przegldarek internetowych dziaajcych w urzdzeniach biurkowych. Jednak aplikacje
mobilne dostarczaj pewnych moliwoci, które zazwyczaj nie istniej w tradycyjnych aplikacjach sieciowych; s to np. obsuga danych dotyczcych geograficznego pooenia urzdzenia
mobilnego, wiksze moliwoci komunikacji, obsuga komunikacji audio i wideo itd.
Trafne okrelenie wymaga uytkowników aplikacji to pierwszy krok podczas przygotowywania strategii tworzenia aplikacji mobilnej. Przeanalizuj przedstawione poniej przykady
sposobów wykorzystania urzdze mobilnych.
x Spacer po ulicy i jednoczesne sprawdzanie poczty e-mail (od czasu do czasu podnoszenie
przy tym gowy, aby nie uderzy w latarni).
x Podró komunikacj miejsk i jednoczesne czytanie najnowszych wiadomoci.
x Popijanie kawy w kawiarni — uytkownik jedn rk trzyma filiank z kaw, natomiast
drug urzdzenie mobilne, w którym sprawdza wysoko salda na koncie.
Sytuacje te maj jedn wspóln cech — uytkownik dzieli swoj uwag, próbujc jak najszybciej wykona pewne zadania i przej do kolejnych w dniu wypenionym po brzegi rónymi zajciami.
Dla twórcy witryny internetowej oznacza to, e powinna ona koncentrowa si na dostarczaniu uytkownikowi treci w dany przez niego sposób, szybko, zrozumiale i odpowiednio
do wykonywanego zadania.
Wiksza przyjazno aplikacji mobilnej
Kup książkę
_
213
Poleć książkę
Tworzenie widoku mobilnego dla aukcji
Podczas tworzenia mobilnej aplikacji sieciowej prac rozpoczynasz od dodania do istniejcej
aplikacji widoków przeznaczonych dla urzdze mobilnych lub od utworzenia zupenie od
pocztku nowej aplikacji mobilnej. Ten wybór zaley od wielu czynników; oba podejcia
maj swoje wady i zalety. Jak si przekonasz, platforma ASP.NET MVC oferuje narzdzia
pomagajce w pracy w obu przypadkach.
Skoncentrujemy si teraz na dodaniu widoku mobilnego do istniejcego widoku dla urzdzenia biurkowego, a nastpnie bdziemy powoli usprawnia widok mobilny kolejnymi
funkcjami oferowanymi przez platform ASP.NET MVC 4.
Rozpoczynamy prac od utworzenia kopii widoku Auctions.cshtml i nadajemy jej nazw Auctions.Mobile.cshtml, co wskazuje, e widok jest przeznaczony dla urzdzenia mobilnego.
Aby zrónicowa generowane widoki, zmieniamy take nagówek <h1> w widoku mobilnym
na Aukcje mobilne.
Utworzenie widoku mobilnego mona potwierdzi poprzez uruchomienie aplikacji sieciowej
i wywietlenie strony aukcji w przegldarce internetowej dla urzdzenia mobilnego. Wynik
tej operacji pokazano na rysunku 10.1.
Rysunek 10.1. Platforma ASP.NET MVC potrafi wykry
i automatycznie wygenerowa
widok
dla urzdzenia mobilnego
214
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Jak moesz zobaczy na rysunku, nagówek Aukcje mobilne potwierdza wywietlenie widoku
mobilnego (przejcie na stron aukcji w biurkowej wersji przegldarki internetowej powoduje
wywietlenie zwykego widoku wraz z nagówkiem Aukcje). Tryby wywietlania to funkcja
platformy pozwalajca na wykrycie przegldarki internetowej uywanej przez klienta i wygenerowanie dla niej odpowiedniego widoku.
Kiedy danie przychodzi z urzdzenia mobilnego, platforma ASP.NET MVC 4 nie ogranicza
si jedynie do automatycznego wczytania widoku mobilnego. W rzeczywistoci wczytuje take
mobilne wersje ukadów graficznych i widoków czciowych — pakiet jQuery.Mobile.MVC jest
wykorzystywany do utworzenia opartego na jQuery Mobile ukadu graficznego zoptymalizowanego dla urzdze mobilnych.
Rozpoczcie pracy z jQuery Mobile
jQuery Mobile pozwala na szybkie usprawnienie istniejcego widoku i utworzenie na jego
podstawie widoku dla urzdze mobilnych, który bdzie mia rodzimy dla nich wygld i rodzime zachowanie. Moliwe jest take uycie motywu w aplikacji; technika uaktualnie progresywnych powoduje, e starsze wersje przegldarek internetowych otrzymuj nieco zredukowan (niezbyt atrakcyjn wizualnie), ale funkcjonujc i uyteczn stron.
Aby móc uywa jQuery Mobile, konieczne jest zainstalowanie pakietu jQuery.Mobile.MVC
z galerii pakietów NuGet (rysunek 10.2).
Rysunek 10.2. Dodanie platformy jQuery Mobile za pomoc NuGet
Wiksza przyjazno aplikacji mobilnej
Kup książkę
_
215
Poleć książkę
Pakiet ten powoduje dodanie nastpujcych plików:
jQuery Mobile Framework
Zestaw plików JavaScript (jQuery.mobile-1.1.0.js) i CSS (jQuery.mobile-1.1.0.css) wraz z ich
zminimalizowanymi wersjami oraz obrazami pomocniczymi.
/Content/Site.Mobile.css
Nowy arkusz stylów przeznaczony dla urzdze mobilnych.
Views/Shared/_Layout.Mobile.cshtml
Ukad graficzny zoptymalizowany dla urzdze mobilnych i odwoujcy si do plików platformy jQuery Mobile (JavaScript i CSS). Platforma ASP.NET MVC bdzie automatycznie
wczytywaa ten ukad dla widoków mobilnych.
Komponent przeczania widoku
Skada si z widoku czciowego Views/Shared/_ViewSwitcher.cshtml oraz kontrolera
ViewSwitcherController.cs. Ten komponent powoduje wywietlenie w mobilnej przegldarce
internetowej cza pozwalajcego uytkownikowi na przejcie do strony w wersji dla urzdzenia biurkowego. Sposób dziaania tego komponentu zostanie omówiony w dalszej czci
tego rozdziau, w podrozdziale „Przeczanie pomidzy widokami mobilnym i zwykym”.
Platforma jQuery Mobile nadal jest w fazie opracowywania, wic po jej zainstalowaniu
moe si okaza, e jej pliki s w nowszych wersjach ni wymienione w ksice.
Aby umoliwi platformie jQuery Mobile nadanie stronie odpowiedniego stylu, przejd
do
pliku Views/Shared/_Layout.Mobile.cshtml i zmodyfikuj jego tre w taki sposób, aby odpowiadaa
poniszemu fragmentowi kodu:
<body>
<div data-role="page" data-theme="b">
<header data-role="header">
<h1>@Html.ActionLink("EBuy: Witryna demonstracyjna ASP.NET MVC",
"Index", "Home")</h1>
</header>
<div id="body" data-role="content">
@RenderBody()
</div>
</div>
</body>
Nastpnie zmodyfikuj plik Auctions.Mobile.cshtml i zoptymalizuj go dla ukadu graficznego
przeznaczonego dla urzdze mobilnych:
@model IEnumerable<AuctionViewModel>
<link href="@Url.Content("~/Content/product.css")" rel="stylesheet" type="text/css" />
@{
ViewBag.Title = "Auctions";
}
<header>
<h3>Aukcje mobilne</h3>
</header>
<ul id="auctions">
216
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
@foreach (var auction in Model)
{
<li>
@Html.Partial("_AuctionTile", auction);
</li>
}
</ul>
Po wprowadzeniu wymienionych zmian skompiluj i uruchom aplikacj, a nastpnie wywietl
stron gówn aplikacji w mobilnej wersji przegldarki internetowej. Zwró uwag na zmiany
w stosunku do wersji biurkowej. Na ekranie powiniene zobaczy stron podobn do pokazanej na rysunku 10.3.
Rysunek 10.3. Aplikacja EBuy zoptymalizowana dla ukadu graficznego przeznaczonego dla urzdze
mobilnych
Moesz zobaczy, jak widok Auctions zosta zmieniony w celu jego dostosowania do przegldarki internetowej urzdzenia mobilnego. Wprawdzie wygld strony nie jest perfekcyjny, ale
pakiet jQuery Mobile dostarcza podstaw, na bazie których moesz szybko i atwo tworzy
widoki mobilne.
Wiksza przyjazno aplikacji mobilnej
Kup książkę
_
217
Poleć książkę
Usprawnianie widoku za pomoc jQuery Mobile
Pakiet jQuery.Mobile.MVC wykonuje wiksz cz pracy za programist, ale interfejs uytkownika witryny internetowej nadal nie przypomina rodzimej aplikacji dla urzdzenia mobilnego.
Na szczcie platforma jQuery Mobile dostarcza wielu komponentów i stylów, dziki którym
aplikacja otrzyma widok naprawd przypominajcy aplikacj mobiln.
Usprawnianie listy aukcji za pomoc komponentu listview platformy jQuery Mobile
Prac rozpoczynamy od usprawnienia listy aukcji poprzez uycie komponentu listview platformy jQuery Mobile. W celu przeprowadzenia wikszoci transformacji mobilnych platforma
jQuery Mobile operuje na atrybutach data-role. Aby zatem wygenerowa list aukcji jako
listview, koniecznie naley doda atrybut data-role="listview" do znacznika <ul> aukcji:
<ul id="auctions" data-role="listview">
@foreach (var auction in Model.Auctions)
{
<li>
@Html.Partial("_AuctionTileMobile", auction);
</li>
}
</ul>
oraz w nastpujcy sposób zmodyfikowa widok czciowy _AuctionTileMobile:
@model AuctionViewModel
@{
var auctionUrl = Url.Auction(Model);
}
<a href="@auctionUrl">
@Html.Thumbnail(Model.Image, Model.Title)
<h3>@Model.Title</h3>
<p>
<span>Koniec aukcji za: </span>
<span class="time-remaining" title="@Model.EndTimeDisplay">Ҋ
@Model.RemainingTimeDisplay</span>
</p>
<p>
<strong>Aktualna cena: </strong>
<span class="current-bid-amount">@Model.CurrentPrice</span>
<span class="current-bidder">@Model.WinningBidUsername</span>
</p>
</a>
Po wywietleniu widoku Auctions w mobilnej wersji przegldarki internetowej otrzymasz teraz
znacznie adniejsz list aukcji (rysunek 10.4).
Biorc pod uwag to, e element <ul> to w rzeczywistoci lista, moesz uzna za zbyteczne
dodawanie roli listview. Element <ul> wywietla list, ale obszar cza bdzie zbyt may, aby
mona byo klikn go w urzdzeniu mobilnym wyposaonym w niewielki ekran. Zadaniem
atrybutu data-role="listview" jest umoliwienie powikszania obszaru cza i uatwienie
uytkownikom naciskania elementów listy.
218
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Rysunek 10.4. Zawarto
znacznika <ul> wygenerowana przez platform jQuery Mobile jako listview
Umoliwianie przeszukiwania listy aukcji
dziki komponentowi „data filter” platformy jQuery Mobile
Kolejnym krokiem jest zwikszenie przyjaznoci widoku poprzez dodanie uytecznego pola
wyszukiwania, pozwalajcego uytkownikowi na szybkie filtrowanie listy aukcji. Dziki platformie jQuery Mobile to zadanie jest bardzo atwe — znacznikowi <ul> listy aukcji wystarczy
nada atrybut data-filter="true":
<ul id="auctions" data-role="listview" data-filter="true">
@foreach (var auction in Model.Auctions)
{
<li class="listitem">
@Html.Partial("_AuctionTileMobile", auction);
</li>
}
</ul>
Po odwieeniu strony w mobilnej wersji przegldarki internetowej powiniene zobaczy na
górze strony pole wyszukiwania (rysunek 10.5).
Wiksza przyjazno aplikacji mobilnej
Kup książkę
_
219
Poleć książkę
Rysunek 10.5. Dziki platformie jQuery Mobile list aukcji mona przeszukiwa
Wprowad
tekst w polu wyszukiwania i zobacz, jak platforma jQuery Mobile automatycznie
filtruje list, wywietlajc jedynie te aukcje, które zostay dopasowane do wprowadzonego
przez Ciebie tekstu (rysunek 10.6).
Przekonae si, jak platforma jQuery Mobile uatwia transformacj dowolnej strony, aby wywietlona w urzdzeniu docelowym miaa dla niego rodzimy wygld i sposób dziaania.
Oprócz wymienionych funkcji jQuery Mobile oferuje take wiele innych uytecznych komponentów, które moesz wykorzysta w widokach witryny internetowej, czynic je tym samym
bardziej dostosowanymi dla uytkowników urzdze mobilnych. Pen list odpowiednich
atrybutów znajdziesz na stronie dokumentacji API platformy jQuery Mobile pod adresem
http://jquerymobile.com/test/docs/api/data-attributes.html.
Przeczanie pomidzy widokami mobilnym i zwykym
Kiedykolwiek dostarczasz wersj mobiln witryny internetowej, ogólnie rzecz biorc, dobrym
rozwizaniem jest automatyczne przekierowanie uytkowników urzdze mobilnych do odpowiedniej wersji witryny. Warto jednak zapewni im moliwo przejcia do penej wersji
witryny internetowej przeznaczonej dla urzdze biurkowych.
220
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Rysunek 10.6. Platforma jQuery Mobile automatycznie filtruje list aukcji na podstawie tekstu
wprowadzonego w polu wyszukiwania
Zwró uwag, e na górze widoku mobilnego standardowo dostarczanego przez szablon
aplikacji mobilnej ASP.NET MVC znajduje si cze pozwalajce uytkownikom na przejcie
do „widoku zwykego”. To jest widget ViewSwitcher zainstalowany jako cz pakietu NuGet
jQuery.Mobile.MVC.
Aby dowiedzie si, jaki jest sposób dziaania tego widgetu, konieczne bdzie zagbienie si
w komponenty platformy jQuery Mobile.
Spójrz na nowy widok czciowy o nazwie _ViewSwitcher.cshtml, w którym znajdziesz nastpujcy kod znaczników:
@if (Request.Browser.IsMobileDevice && Request.HttpMethod == "GET")
{
<div class="view-switcher ui-bar-a">
@if (ViewContext.HttpContext.GetOverriddenBrowser().IsMobileDevice)
{
@: Wywietlenie widoku mobilnego.
@Html.ActionLink("Widok zwyky", "SwitchView", "ViewSwitcher",
new { mobile = false, returnUrl = Request.Url.PathAndQuery },
new { rel = "external" })
}
else
{
Wiksza przyjazno aplikacji mobilnej
Kup książkę
_
221
Poleć książkę
@: Wywietlenie widoku zwykego.
@Html.ActionLink("Widok mobilny", "SwitchView", "ViewSwitcher",
new { mobile = true, returnUrl = Request.Url.PathAndQuery },
new { rel = "external" })
}
</div>
}
Wartoci zwrotn metody GetOverridenBrowser() jest obiekt HttpBrowserCapabilities zawierajcy moliwoci oferowane przez nadpisywan przegldark internetow lub aktualnie uywan,
jeli nie jest nadpisywana. W ten sposób moesz sprawdzi, czy urzdzenie, które wykonao
danie, jest urzdzeniem mobilnym. Nastpnie widget okrela widok, który powinien zosta
wygenerowany, oraz tworzy odpowiednie cza pozwalajce na przeczanie pomidzy widokami mobilnym i zwykym.
Bonusem jest ustawienie waciwoci mobile w sowniku RouteValue, wskazujcej aktualnie
aktywny widok.
Spójrz teraz na klas ViewSwitcherController zawierajc logik odpowiedzialn za przeczanie
widoków:
public class ViewSwitcherController : Controller
{
public RedirectResult SwitchView(bool mobile, string returnUrl)
{
if (Request.Browser.IsMobileDevice == mobile)
{
HttpContext.ClearOverriddenBrowser();
}
else
{
HttpContext.SetOverriddenBrowser(mobile ? BrowserOverride.Mobile
: BrowserOverride.Desktop);
}
return Redirect(returnUrl);
}
}
W zalenoci od tego, czy danie pochodzi z urzdzenia mobilnego (na co wskazuje warto
waciwoci Request.Browser.IsMobileDevice), kontroler uywa metod ClearOverriddenBrowser()
i SetOverriddenBrowser() w celu poinformowania platformy ASP.NET MVC o sposobie traktowania dania. Nastpnie platforma wywietla odpowiedni wersj witryny, mobiln dla
urzdzenia mobilnego lub pen dla urzdzenia biurkowego.
Przedstawiony poniej fragment kodu umie przez zamykajcym znacznikiem <body> w pliku
Layout.Mobile.cshtml w celu wygenerowania widoku czciowego ViewSwitcher jako stopki (rysunek 10.7):
<div data-role="footer">
@Html.Partial("_ViewSwitcher")
</div>
222
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Rysunek 10.7. Przecznik widoku wywietlony w stopce strony
Po klikniciu cza Widok zwyky nastpi wywietlenie zwykej wersji widoku Auctions. Zwró
jednak uwag, e widok zwyky nie zawiera cza pozwalajcego na przejcie do widoku
mobilnego. Aby to naprawi, przejd
do widoku wspódzielonego _Layout.cshtml i umie w nim
poniszy wiersz kodu:
@Html.Partial("_ViewSwitcher")
Uruchom aplikacj; w mobilnej wersji przegldarki internetowej przejd
do dowolnej strony.
Przekonasz si, e przecznik widoków generuje cza pozwalajce na przeczanie pomidzy widokami zwykym i mobilnym (rysunek 10.8).
Unikanie widoków biurkowych w witrynie mobilnej
Na pewno zauwaysz, e w przypadku braku mobilnej wersji widoku platforma ASP.NET MVC
powoduje wygenerowanie wersji biurkowej widoku w mobilnym ukadzie graficznym strony.
Trzymanie si standardów podczas tworzenia kodu znaczników pomaga w wywietlaniu
w miar uytecznego widoku, ale mog zdarza si sytuacje, w których po prostu bdziesz
wola unikn takiego zachowania platformy.
Wiksza przyjazno aplikacji mobilnej
Kup książkę
_
223
Poleć książkę
Rysunek 10.8. Przecznik widoków wywietlony w widoku biurkowym strony
W tym celu naley przypisa warto true waciwoci RequireConsistentDisplayMode:
@{
Layout = "~/Views/Shared/_Layout.cshtml";
DisplayModeProvider.Instance.RequireConsistentDisplayMode = true;
}
Po wprowadzeniu powyszej zmiany aden widok domylny (to znaczy niemobilny) nie zostanie wygenerowany w mobilnym ukadzie graficznym strony. Ustawienie moesz wprowadzi take globalnie dla wszystkich widoków poprzez przypisanie wartoci true wymienionej waciwoci w pliku /Views/_ViewStart.cshtml.
Usprawnianie wersji mobilnej witryny
Mobilne wersje przegldarek internetowych maj moliwo wywietlania stron HTML,
przynajmniej do pewnego stopnia. Jednak poleganie w caoci na przegldarce internetowej
podczas wywietlania strony wcale nie gwarantuje uzyskania najlepszych wyników. Wynika
to z faktu, e przegldarki internetowe maj jedynie ograniczone moliwoci w zakresie
zmiany wielkoci strony i obrazów. Tylko autor moe zadecydowa, które elementy s najwaniejsze i tym samym powinny by wyrónione na maym ekranie oraz które s mniej wane,
przez co mona je po prostu pomin. Dlatego te Twoim obowizkiem jest zapewnienie witrynie adnego wygldu i umoliwienie jej funkcjonalnego dziaania w rónych przegldarkach
internetowych.
Na szczcie moesz wykorzysta techniki Adaptive Rendering i usprawnienia progresywne
w celu poprawienia sposobu wywietlania witryny. Dziki platformom ASP.NET MVC 4 i jQuery
Mobile jest to do atwe zadanie, o czym si przekonasz w poniszych podrozdziaach.
224 _
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Technika Adaptive Rendering
Adaptive Rendering to technika pozwalajca widokowi na „zaadaptowanie” moliwoci oferowanych przez przegldark internetow. Przyjmujemy zaoenie, e na stronie znajduje si
mnóstwo kart, a kliknita karta powoduje wykonanie dania AJAX w celu pobrania treci
i jej wywietlenia. W przypadku wyczonej obsugi jzyka JavaScript karta nie bdzie w stanie
wywietli treci danej przez uytkownika. Jednak gdy bdzie stosowana technika Adaptive
Rendering, karta bdzie po prostu zawieraa adres URL prowadzcy do zasobu z treci, a tym
samym uytkownik uzyska dostp do danej treci.
Innym przykadem moe by pasek nawigacyjny zawierajcy poziom list czy. Wprawdzie
przedstawia si on dobrze w urzdzeniu biurkowym, ale na maym ekranie urzdzenia mobilnego moe by przytaczajcy. Dziki technice Adaptive Rendering pasek nawigacyjny bdzie
móg zosta wywietlony jako rozwijane menu, co oznacza dostosowanie jego funkcjonalnoci
do urzdzenia o mniejszym ekranie.
Zalet omawianej techniki jest moliwo wywietlenia „funkcjonalnej” lub inaczej „uytecznej”
wersji witryny w rónych przegldarkach internetowych i urzdzeniach. Sam poziom usugi
moe by zaleny od moliwoci oferowanych przez poszczególne urzdzenia, ale witryna
mimo wszystko nadal pozostanie uyteczna.
Jeeli chcesz, aby uytkownicy nieustannie powracali na Twoj witryn, musisz zagwarantowa im przyjemno z korzystania z niej niezalenie od tego, jakich uywaj urzdze.
Platforma ASP.NET MVC 4 zapewnia techniki adaptacyjne poprzez jQuery Mobile.
Znacznik viewport
W grafice komputerowej pojcie viewport oznacza wywietlany prostoktny obszar. W przypadku
przegldarki internetowej jest to jej okno, w którym nastpuje wywietlanie dokumentu HTML.
Innymi sowy, to wyimaginowana konstrukcja zawierajca znacznik <html>, który z kolei jest
elementem gównym dla caego kodu znaczników strony.
Co si dzieje w przypadku powikszania lub pomniejszania (zmiana stopnia przyblienia) okna
przegldarki internetowej? A co si stanie po zmianie orientacji urzdzenia? Czy viewport
równie ulegnie zmianie?
W wiecie urzdze mobilnych udzielenie odpowiedzi na powysze pytania jest nieco utrudnione, poniewa w rzeczywistoci nie istnieje jeden, ale s dwa viewporty — jeden dla „ukadu
graficznego” oraz jeden „wizualny”.
Viewport ukadu graficznego nigdy nie ulega zmianie — to jest wyimaginowana konstrukcja
stanowica ogranicznik dla znacznika <html> strony. Podczas zmiany poziomu przyblienia
strony lub orientacji urzdzenia zmienia si viewport wizualny, co wpywa na elementy wywietlane na ekranie urzdzenia.
Rol viewportu powiniene postrzega jako sposób zapewnienia uytkownikom funkcjonalnej
i uytecznej witryny internetowej. Kiedy strona jest generowana w urzdzeniu mobilnym, jej
szeroko nie powinna by ani zbyt dua, ani zbyt maa — powinna by idealnie dopasowana
do ekranu. Ponadto strona dopasowana do szerokoci ekranu nie powinna by wywietlana
jako mikroskopijna, zmniejszona wersja penej strony; powinna to by wersja odpowiednio
dostosowana, czytelna.
Technika Adaptive Rendering
Kup książkę
_
225
Poleć książkę
W nowoczesnych przegldarkach internetowych to nie CSS, ale znacznik <meta name="viewport">
pozwala na zdefiniowanie wymiarów wizualnego viewportu:
<meta name="viewport" content="width=device-width" />
Uyta w powyszym kodzie warto "width=device-width" jest wartoci specjaln i oznacza,
e szeroko viewportu odpowiada rzeczywistej szerokoci ekranu urzdzenia. To najbardziej
elastyczna i najczciej uywana warto.
Waciwoci content mona przypisa konkretn warto liczbow, o ile tre bdzie zaadaptowana w ten sposób:
<meta name="viewport" content="width=320px" />
Po uyciu powyszego kodu niezalenie od szerokoci ekranu urzdzenia tre zawsze bdzie
miaa szeroko 320 pikseli. Oznacza to, e uytkownicy wikszych ekranów bd musieli j
powiksza, natomiast mniejszych — zmniejsza.
Znacznik <meta name="viewport"> jest standardem przemysowym, ale w rzeczywistoci nie jest czci standardu W3C.
Wymieniona funkcja zostaa po raz pierwszy zaimplementowana w przegldarce internetowej iPhone’a i bardzo szybko — ze wzgldu na du popularno tego smartfona
— zacza by obsugiwana take przez innych producentów urzdze mobilnych.
Wykrywanie funkcji mobilnych
Poniewa kade urzdzenie mobilne obsuguje odmienny zestaw funkcji, nigdy nie moesz
przyjmowa zaoenia, e konkretna funkcja bdzie dostpna w kadej przegldarce internetowej.
Przyjmujemy zaoenie, e aplikacja uywa funkcji Web Storage HTML5 obsugiwanej wprawdzie przez wiele smartfonów (np. iPhone, Android, Blackberry i Windows Phone), ale jednoczenie nieobsugiwanej przez pozostae.
Programici stosowali zazwyczaj takie techniki jak wykrywanie rodzaju przegldarki internetowej, aby sprawdzi, czy aplikacja moe by uruchomiona w danej przegldarce.
Zamiast wic sprawdza, czy funkcja Web Storage jest obsugiwana, w podejciu klasycznym
sprawdza si, czy uywan przegldark internetow jest Opera Mini.
Tego rodzaju podejcie wie si jednak z pewnymi wadami; niektóre z nich podano poniej.
x Potencjalne wykluczenie przegldarek internetowych, które nie zostay wykluczone wy-
ra
nie, ale obsuguj dan funkcj.
x Niebezpieczestwo nieprawidowego dziaania witryny internetowej, jeli uytkownik
wywietli j z poziomu innego urzdzenia.
Oto przykad omówionego podejcia.
// Ostrzeenie: nie stosuj takiego kodu!
if (document.all) {
// Internet Explorer 4+
document.write('<link rel="stylesheet" type="text/css" src="style-ie.css">');
}
226
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
else if (document.layers) {
// Navigator 4
document.write('<link rel="stylesheet" type="text/css" src="style-nn.css">');
}
Zwró uwag, e powyszy fragment kodu dostarcza arkusze stylów jedynie dla przegldarek Internet Explorer i Netscape Navigator 4 pomimo tego, e przegldarka internetowa musi mie wczon obsug JavaScript. Oznacza to, e w innych przegldarkach internetowych,
takich jak Netscape 6, Netscape 7, CompuServe 7, Mozilla i Opera, dana witryna internetowa
moe nie by wywietlona prawidowo.
Nawet jeli zapewnisz wyra
n obsug wikszoci przegldarek internetowych, nadal moesz pomin nowe wersje przegldarek zawierajce ju obsug funkcji wymaganych do
prawidowego dziaania witryny.
Inny potencjalny problem wie si z bdn identyfikacj przegldarki internetowej.
Poniewa mechanizm wykrywania przegldarki internetowej w duej mierze opiera si na
zgadywaniu na podstawie cigu tekstowego okrelajcego agenta uytkownika i na pewnych
waciwociach, to istnieje niebezpieczestwo bdnej identyfikacji pewnych przegldarek
internetowych.
// Ostrzeenie: nie uywaj tego kodu!
if (document.all) {
// Internet Explorer 4+
elm = document.all['menu'];
}
else {
// Przyjmujemy zaoenie, e przegldarka to Navigator 4.
elm = document.layers['menu'];
}
Zwró uwag na stosowany przez powyszy kod podzia przegldarek internetowych. Jeli
przegldarka nie zostanie rozpoznana jako Internet Explorer, to kod uznaje j za przegldark Netscape Navigator 4 i nastpuje próba uycia warstw.
To czsto spotykane ródo problemów podczas uywania przegldarek Opera i przegldarek opartych na silniku Gecko.
Wynika z tego, e najlepszym rozwizaniem jest wyra
ne sprawdzenie istnienia danej funkcji
zamiast przyjmowanie zaoenia o jej obsudze bd
braku obsugi przez konkretne wersje
poszczególnych przegldarek.
Poniej przedstawiono wczeniejszy fragment kodu, ale zmodyfikowany w celu wykrywania
obsugi konkretnych funkcji zamiast przegldarek.
// Jeeli obsugiwana jest funkcja localStorage, naley jej uy.
if (('localStorage' in window) && window.localStorage !== null) {
// atwa w uyciu waciwo obiektu.
localStorage.wishlist = '["Unicorn","Narwhal","Deathbear"]';
} else {
// W przypadku braku sessionStorage konieczne jest uycie pliku cookie
// za pomoc API document.cookie.
var date = new Date();
date.setTime(date.getTime()+(365*24*60*60*1000));
var expires = date.toGMTString();
var cookiestr = 'wishlist=["Unicorn","Narwhal","Deathbear"];'+
' expires='+expires+'; path=/';
document.cookie = cookiestr;
}
Technika Adaptive Rendering
Kup książkę
_
227
Poleć książkę
Powyszy fragment kodu nie tylko jest znacznie bardziej niezawodny, ale równie bdzie
doskonale odgrywa swoj rol w przyszoci — kada przegldarka, w której zostanie dodana obsuga funkcji Web Storage, otrzyma dostp do nowych funkcji aplikacji.
Zapytania mediów CSS
Zapytania CSS media to technika usprawnie progresywnych, która pozwala na zaadaptowanie i wywietlanie alternatywnych stylów w zalenoci od przegldarki internetowej.
Wersja druga specyfikacji CSS (znana jako „CSS2”) pozwala na wskazanie stylu na podstawie
medium, np. screen lub print.
Z kolei wersja trzecia specyfikacji CSS (znana jako „CSS3”) wprowadza koncepcj tak zwanych zapyta mediów, czyli technik rozszerzajc koncepcj pomagajc wykrywa w standardowy sposób funkcje oferowane przez przegldarki internetowe.
Niestety, specyfikacja CSS3 nadal pozostaje w fazie „rekomendacji”, co oznacza, e
zapytania mediów — oraz oczywicie inne nowe funkcje wprowadzone w specyfikacji CSS3 — niekoniecznie s doskonale obsugiwane przez wszystkie przegldarki
internetowe.
Dlatego te bardzo wane jest przygotowanie stylów domylnych dostarczanych
przegldarkom internetowym, które nie obsuguj nowych funkcji.
Wczeniej dowiedziae si, jak znacznik viewport pozwala na zdefiniowanie domylnej szerokoci na podstawie ekranu urzdzenia. Wprawdzie viewport powoduje, e strona wyglda
dobrze w standardowej wielkoci, ale nie bdzie pomocny, gdy uytkownik zechce powikszy lub zmniejszy stron w urzdzeniu.
Wraz ze zmian ukadu graficznego konieczne jest znalezienie sposobu na poinformowanie
przegldarki internetowej, jak ograniczy tre do konkretnej szerokoci, aby bya wywietlana poprawnie w kadej sytuacji.
Spójrz na prosty przykad rozwizania opartego na zapytaniu mediów CSS:
body {background-color:blue;}
@media only screen and (max-width: 800px) {
body {background-color:red;}
}
Reguy CSS s wykonywane od pocztku pliku do koca, wic rozpoczynamy od umieszczenia ogólnej reguy definiujcej niebieski kolor ta strony.
Nastpnie znajduje si regua przeznaczona dla konkretnego urzdzenia — wykorzystane
zostaje zapytanie mediów CSS. Regua powoduje zmian koloru ta na czerwony w urzdzeniach, których szeroko ekranu nie przekracza 800 pikseli.
W urzdzeniach obsugujcych zapytania mediów CSS i posiadajcych ekran o szerokoci
poniej 800 pikseli to bdzie wywietlone w kolorze czerwonym. Natomiast w pozostaych
urzdzeniach kolorem ta pozostaje niebieski. (Zauwa, e zmiana koloru ta podczas zmiany
wielkoci strony nie jest operacj wykonywan w rzeczywistych aplikacjach. Zamiast tego
w omówionym przykadzie koncentrujemy si na pokazaniu sposobu uywania zapytania
mediów w celu stosowania rónych stylów na podstawie okrelonych warunków).
228
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Bardzo wane jest umieszczenie ogólnej reguy na pocztku, a nastpnie jej usprawnianie poprzez dodanie obsugi zapyta mediów i wykrywania dostpnoci poszczególnych funkcji.
Dziki temu witryna internetowa bdzie wywietlana w penej krasie w przegldarkach internetowych oferujcych obsug najnowszych funkcji i jednoczenie bdzie wywietlana poprawnie (cho mniej atrakcyjnie pod wzgldem wizualnym) w starszych wersjach przegldarek internetowych.
Widoki dla konkretnych przegldarek internetowych
Nowa funkcja platformy ASP.NET MVC 4, jak jest tryb wywietlania, pozwala na wczytywanie odmiennych widoków w zalenoci od zdefiniowanych warunków. Przykadem uycia tej funkcji moe by utworzenie oddzielnych widoków przeznaczonych dla smartfonów
(urzdze o maych ekranach) i tabletów (urzdze o ekranach wikszych ni w smartfonach,
ale jednoczenie mniejszych ni w urzdzeniach biurkowych). Przygotowanie widoków dla
tych klas urzdze pozwala na optymalne wykorzystanie dostpnej powierzchni ekranu. Ponadto stanowi przykad dostarczenia efektywnej i uytecznej aplikacji przystosowanej do
moliwoci oferowanych przez konkretne urzdzenia.
Pierwszym krokiem podczas realizacji wymienionego podejcia jest rejestracja trybów wywietlania przeprowadzana w trakcie uruchamiania aplikacji.
using System.Web.WebPages;
// Rejestracja widoku przeznaczonego dla iPhone’a.
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("iPhone")
{
ContextCondition = (ctx => ctx.Request.UserAgent.IndexOf(
"iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
// Rejestracja widoku przeznaczonego dla Windows Phone.
DisplayModeProvider.Instance.Modes.Insert(0, new DefaultDisplayMode("WindowsPhone")
{
ContextCondition = (ctx => ctx.Request.UserAgent.IndexOf(
"Windows Phone", StringComparison.OrdinalIgnoreCase) >= 0)
});
Drugim krokiem jest przygotowanie odpowiednich widoków. Utwórz widok dla iPhone’a
poprzez skopiowanie widoku Auctions.mobile.cshtml i zmian jego nazwy na Auctions.iPhone.cshtml.
Nastpnie nagówek w nowym widoku zmie na Aukcje iPhone’a, aby go odróni od pozostaych. Aby zobaczy tak przygotowan stron w dziaaniu (rysunek 10.9), uruchom aplikacj
za pomoc emulatora przegldarki internetowej dla urzdzenia mobilnego (pokazane tutaj
przykady uywaj rozszerzenia User Agent Switcher dla przegldarki internetowej Firefox
pozwalajcego na emulacj przegldarki internetowej w iPhonie).
Aby przygotowa wersj widoku dla Windows Phone, utwórz kolejn kopi Auctions.mobile.cshtml
i zmie jego nazw na Auctions.WindowsPhone.cshtml. Nastpnie nagówek w nowym widoku
zmie na Aukcje Windows Phone, aby go odróni od pozostaych. Po uruchomieniu aplikacji
w emulatorze przegldarki internetowej na urzdzeniu mobilnym (rysunek 10.10) bdziesz
móg podziwia przygotowan stron w dziaaniu.
Technika Adaptive Rendering
Kup książkę
_
229
Poleć książkę
Rysunek 10.9. Widok utworzony dla iPhone’a
Aby sprawdzi, czy danie pochodzi z urzdzenia mobilnego, platforma ASP.NET
analizuje je i porównuje z zestawem doskonale znanych definicji przegldarek internetowych dla urzdze mobilnych.
Dziki klasie HttpBrowserCapabilities (http://msdn.microsoft.com/en-us/library/system.web.
httpbrowsercapabilities.aspx) platforma otrzymuje bardzo du ilo informacji dotyczcych moliwoci danej przegldarki. Informacje te s dostpne poprzez waciwo
Request.Browser.
Ewentualnie zamiast polega na wbudowanych w platform definicjach przegldarek,
moesz skorzysta z usugi takiej jak 51Degrees.mobi (http://51degrees.mobi/Support/Blogs/
tabid/212/EntryId/26/51Degrees-mobi-and-MVC4.aspx), która oferuje znacznie bardziej
aktualn baz informacji o rónych urzdzeniach mobilnych.
230
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Rysunek 10.10. Widok utworzony dla Windows Phone
Tworzenie nowej aplikacji mobilnej
zupenie od pocztku
Platforma ASP.NET MVC 4 bardzo uatwia dodawanie widoków mobilnych do istniejcych
aplikacji. Równie atwo moesz jednak zupenie od pocztku tworzy aplikacje mobilne. To uyteczne rozwizanie, jeli nie masz jeszcze aplikacji, któr mógby wykorzysta jako punkt
wyjcia, bd
gdy z jakiego powodu nie chcesz czy witryn w wersji zwykej i mobilnej.
Na platformie ASP.NET MVC 4 znajdziesz szablon Aplikacja dla urzdze przenonych, dziki
któremu szybko bdziesz móg rozpocz tworzenie aplikacji dla urzdze mobilnych. Szablon
ten w duej mierze opiera si na platformie jQuery Mobile. Aby zatem rozpocz tworzenie
efektywnych aplikacji, w pierwszej kolejnoci musisz pozna jQuery Mobile.
Tworzenie nowej aplikacji mobilnej zupenie od pocztku
Kup książkę
_
231
Poleć książkę
Platforma jQuery Mobile
Podczas pracy z jQuery Mobile bardzo istotne jest pojcie strony. W tradycyjnym programowaniu sieciowym strona oznacza dokument HTML, stron .aspx w ASP.NET Web Forms lub
widok .cshtml na platformie ASP.NET MVC. Pliki te zawieraj kod znaczników oraz logik
pozwalajce na wygenerowanie strony w przegldarce internetowej.
Jednak na platformie jQuery Mobile jeden plik moe zawiera wiele „stron” dla urzdze
mobilnych. Z technicznego punktu widzenia strona jQuery Mobile to tak naprawd znacznik
<div> wraz z przypisanym mu atrybutem data-role="page". W jednym pliku widoku moesz
umieci dowoln liczb takich znaczników, a jQuery zamieni je na wiele stron wywietlanych
jednoczenie.
Poniewa na podstawie jednego widoku dla urzdzenia biurkowego moe powsta wiele
mniejszych widoków dla urzdzenia mobilnego (gównie wskutek przeprojektowania strony,
aby jej nawigacja lepiej odpowiadaa ekranowi urzdzenia mobilnego), takie podejcie pomaga w zmniejszeniu liczby plików; w przeciwnym razie pliki te trzeba by utworzy.
Szablon aplikacji mobilnej w ASP.NET MVC 4
Aby utworzy now aplikacj mobiln, rozpoczynasz prac dokadnie tak samo jak w przypadku zwykej aplikacji sieciowej ASP.NET MVC — wybierz opcj menu Plik/Nowy/Projekt…,
a nastpnie wybierz typ Aplikacja sieci Web platformy ASP.NET MVC 4 (rysunek 10.11).
Rysunek 10.11. Tworzenie nowego projektu
232
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
W kolejnym oknie dialogowym wybierz szablon Aplikacja dla urzdze przenonych (rysunek 10.12).
Rysunek 10.12. Wybór szablonu aplikacji dla urzdze przenonych
W ten sposób utworzysz now aplikacj ASP.NET MVC wraz z przykadowymi kontrolerami
i widokami zawierajcymi oferowane przez platform ASP.NET MVC funkcje obsugi urzdze mobilnych. Szablon ten pozwoli Ci na szybkie rozpoczcie pracy.
Uruchom projekt, naciskajc klawisz F5 bd
wybierajc z menu Debug/Start. Visual Studio
rozpocznie kompilacj rozwizania, a nastpnie uruchomi przegldark internetow, w której
zostanie wywietlona strona gówna witryny internetowej w wersji przystosowanej dla urzdze mobilnych (rysunek 10.13).
Uywanie szablonu aplikacji mobilnej w ASP.NET MVC 4
Jak moesz si przekona, utworzony projekt aplikacji mobilnej standardowo zawiera du
ilo przygotowanego kodu. Struktura projektu jest podobna do projektu zwykej witryny
internetowej, ale z dwoma zmianami.
x Katalog Content zawiera arkusze stylów dla jQuery Mobile (rysunek 10.14):
x jquery.mobile-1.1.0.css (i jego zminimalizowana wersja),
x jquery.mobile.structure-1.1.0.css (i jego zminimalizowana wersja).
Tworzenie nowej aplikacji mobilnej zupenie od pocztku
Kup książkę
_
233
Poleć książkę
Rysunek 10.13. Domylna strona gówna aplikacji mobilnej
Rysunek 10.14. Nowa zawarto
katalogu Content projektu
x Katalog Scripts zawiera dwa nowe pliki (rysunek 10.15):
x jquery.mobile-1.1.0.js,
x jquery.mobile.structure-1.1.0.js.
Te nowe pliki stanowi cz platformy jQuery Mobile, czyli platformy JavaScript dostarczajcej urzdzeniom mobilnym cae dobrodziejstwo jQuery i jQueryUI.
Teraz spójrz na zmodyfikowan wersj pliku _Layout.cshtml, którego znacznik <head> zawiera
kilka nowych wierszy.
234 _
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Rysunek 10.15. Nowa zawarto
katalogu Scripts projektu
Znacznik <meta name="viewport"> okrela wielko viewportu. To jest bardzo wane, poniewa
wikszo przegldarek w wersji dla urzdze mobilnych wprawdzie pozwala uytkownikom na zmniejszanie i powikszanie strony wedle wasnego uznania, ale lepsze wraenie
wywoa w uytkowniku ustawienie szerokoci pocztkowej. Jak ju wczeniej powiedziano,
warto "width=device-width" powoduje, e treci jest automatycznie przypisywana szeroko
odpowiadajca szerokoci uywanego urzdzenia:
<meta name="viewport" content="width=device-width" />
Alternatywnym rozwizaniem jest zdefiniowanie konkretnej szerokoci dla viewportu poprzez podanie odpowiedniej wartoci wyraonej w pikselach. Na przykad w poniszym
poleceniu pocztkowa szeroko strony zostaa okrelona na 320 pikseli:
<meta name="viewport" content="width=320px" />
Przedstawiony poniej znacznik powoduje dodanie do strony stylów jQuery Mobile. Ponadto
pozwala na konfiguracj motywów za pomoc jQuery Theming (http://jquerymobile.com/demos/
1.0/docs/api/themes.html):
<link rel="stylesheet" a href="@Url.Content("~/Content/jquery.mobile-1.0b2.min.css")" />
Wreszcie poniszy znacznik skryptu dodaje do strony pliki platformy jQuery Mobile. W ten
sposób moliwe staje si wykonywanie operacji w technologii AJAX, animacji, sprawdzania
poprawnoci danych itd.:
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.mobile-1.0b2.min.js")">
´</script>
Teraz spójrz na zmodyfikowany kod HTML strony, zawierajcy kilka nowych atrybutów.
Platforma jQuery Mobile identyfikuje róne elementy, takie jak strony, przyciski, listview itd.,
dziki atrybutom data-role. Analizujc zawarto znacznika <body>, moesz dostrzec, e szablon
standardowo umieci atrybuty data-role w znacznikach <div>:
Tworzenie nowej aplikacji mobilnej zupenie od pocztku
Kup książkę
_
235
Poleć książkę
<body>
<div data-role="page" data-theme="b">
<div data-role="header">
@if (IsSectionDefined("Header")) {
@RenderSection("Header")
} else {
<h1>@ViewBag.Title</h1>
@Html.Partial("_LogOnPartial")
}
</div>
<div data-role="content">
@RenderBody()
</div>
</div>
</body>
`
Pierwszy znacznik <div> ma przypisany atrybut data-role="page", który identyfikuje ten znacznik <div> jako pojedyncz stron w aplikacji mobilnej. Podobnie nagówek strony zosta okrelony
atrybutem data-role="header", natomiast znacznik <body> atrybutem data-role="content".
Platforma jQuery Mobile definiuje róne atrybuty dla doskonale znanych elementów HTML,
takich jak <h1>, <h2>, <p>, <table>, a take dla list i elementów formularza, np. przycisków, pól
tekstowych, list wyboru itd. Wicej informacji na temat platformy jQuery Mobile, dokadn
dokumentacj, przykady itd. znajdziesz na witrynie internetowej http://jquerymobile.com/.
Podsumowanie
W rozdziale przedstawiono róne aspekty programowania sieciowego dla urzdze mobilnych. Dowiedziae si, czym tak naprawd jest aplikacja mobilna i jakie s rónice pomidzy
witrynami internetowymi przeznaczonymi dla urzdze mobilnych i dla urzdze biurkowych. Zaprezentowano róne platformy oraz dostpne techniki, dziki którym moesz wydajnie tworzy aplikacje mobilne. Dowiedziae si, jak dziki wykorzystaniu rónych moliwoci oferowanych przez przegldarki internetowe zapewni uytkownikowi jak najlepsze
wraenia podczas uywania aplikacji.
Przedstawiono take oferowane przez platform ASP.NET MVC 4 funkcje pomagajce w tworzeniu aplikacji mobilnych:
x usprawnienia w domylnym szablonie aplikacji mobilnej;
x moliwo dostosowania do wasnych potrzeb szablonu domylnego poprzez zmian jego
ukadu graficznego, widoków i widoków czciowych;
x obsug funkcji oferowanych przez konkretne przegldarki internetowe (np. widok dla
iPhone’a) oraz opcj nadpisania moliwoci przegldarek internetowych;
x usprawnienie widoków mobilnych poprzez uycie platformy jQuery Mobile.
236
_
Rozdzia 10. Programowanie na platformy mobilne
Kup książkę
Poleć książkę
Skorowidz
A
abstrakcja
HttpContextBase, 436
IRepository, 114
System.Web.Mvc.CustomModelBinderAttri
bute, 142
Adaptive Rendering, 225
administracja klastrem pamici, 267
adnotacje danych, 74
ADO.NET Entity Framework, 170
adresy URL, 60, 301
adresy URL dopasowane do wzorca, 30
AJAX, 89, 123, 138
akcja
AucionsController.Create, 73
AuctionsController.Create, 69
Create, 35, 139
Index, 36
JsonResult, 146
Login, 195
POST, 71
Profile, 53
Register, 197
akcje
HTTP, 152
kontrolera, 29, 32
anatomia
pakietu NuGet, 421
strony internetowej, 276
dania HttpRequest, 277
API ApplicationCache, 271
API Data Annotations, 74
API HttpContext.Items, 59
API jQuery, 82
API jQuery AJAX, 91
API Local Storage, 273
API REST, 144
API System.XML, 58
aplikacja
EBuy, 22
Web Forms, 411
aplikacje
.NET, 26
sieciowe, 206
AppCache, 271
architektura
aplikacji sieciowej, 102
fizyczna, 105
logiczna, 102, 103
MVC, 19, 100
arkusze stylów, 283
arkusze stylów dla jQuery Mobile, 233
ASP, Active Server Pages, 18
ASP.NET MVC, 18
ASP.NET MVC 4, 20
ASP.NET Routing, 29
ASP.NET Web API, 149
ASP.NET Web Forms, 18, 57–67, 316, 409
asynchroniczna komunikacja, 242
atak typu
CSRF, 207, 208
SQL Injection, 201–205
XSS, 206, 207
atrybut
AcceptVerbs, 445
AllowAnonymousAttribute, 195
Authorize, 444
AuthorizeAttribute, 53, 191
BindAttribute, 187
CustomModelBinderAttribute, 142
DataAnnotation, 92
HandleErrorAttribute, 335, 337
RangeAttribute, 76
RequiredAttribute, 75
Route, 444
ValidateAntiForgeryTokenAttribute, 208
automatyczne
testowanie, 385
wygenerowanie widoku, 214
automatyzacja
kompilacji, 378
wdraania, 387
autoryzacja, 187, 199
453
Kup książkę
Poleć książkę
B
baza danych, 71, 170, 395
Active Directory, 194
Microsoft SQL Server, 194
SQL Express, 194
bezpieczestwo, 185–187
biaa lista, 205
biblioteka
AntiXSS, 206
jQuery, 81, 85, 91
Modernizr, 294
ReusableComponents, 323
SignalR, 247, 251
System.Web.Optimization, 293
web-socket-js, 247
blok
kodu, 39
try-catch, 338
blokowanie wysyania nagówka, 208
bdy, 333
aplikacji, 340
weryfikacji danych, 77
dania sieciowego, 341
bufor
ASP.NET, 256
przegldarki, 269
buforowanie
danych wyjciowych, 258–260, 445
donut caching, 261
donut hole caching, 263
o zasigu aplikacji, 256
o zasigu uytkownika, 255
o zasigu dania, 254
po stronie klienta, 254, 269, 281
po stronie serwera, 253
rozproszone
redundancja, 265
skalowalno, 265
Velocity, 265
wydajno, 265
Windows AppFabric, 265
C
CDN, Content Delivery Network, 278
chmura Windows Azure, 403
ciga integracja, 383, 387, 434
cige wdraanie, 406
454 _
CMS, Content Management Systems, 206
Code First, 71, 171
COM, Component Object Model, 315
CORS, Cross-Origin Resource Sharing, 144, 147
CRUD, 152
CSRF, Cross-Site Request Forgery, 207
CSS, 228
CSS3, 228
CSV, Comma-Separated Values, 159
cykl yciowy
sesji, 255
dania, 28
czarna lista, 204
czas
trwania aukcji, 74
utraty wanoci, 257
czciowe generowanie strony, 123
D
definicja manifestu, 271
DI, Dependency Injection, 114, 116, 165
DIP, Dependency Inversion Principle, 113
dodawanie widoku, 50
doczanie modelu, model binding, 33–35
DOM, Document Object Model, 81
dopasowanie do wzorca, 30
dostawca czonkostwa, 194
dostp do
bazy danych, 153
bibliotek, 26
danych, 71, 163, 169, 171
elementu <span>, 84
platformy, 22
sownika Request, 35
ViewData, 44
DRY, Don’t Repeat Yourself, 121
DTO, Data Transfer Object, 143
dyrektywa AspCompat, 316
dziaanie
bufora przegldarki, 269
klasy Auction, 174
E
element
<httpCompression>, 283
<p>, 84
<script>, 93
Skorowidz
Kup książkę
Poleć książkę
<span>, 84
<ul>, 218
healthMonitoring, 340
rewrite, 288
Entity Framework, 71, 165, 168, 171
Entity Framework Code First, 171, 176
ETag, Entity Tag, 270, 289
F
faszywe alarmy, 348
filtr
ActionFilter, 121
HandleError, 336
ValidateAntiForgeryTokenAttribute, 209
filtrowanie, 178
danych, 155
listy, 219
filtry
akcji, 36, 137, 441
bdów, 339
wyjtków, 157
Firebug, 292
formatowanie danych, 159
formularz, 69
logowania, 194
rejestracji, 194
funkcja
$(), 83
removeItem(), 273
routingu, 61
success(), 131
wasnych bdów, 334, 339
wywoania zwrotnego, 90
funkcje mobilne, 211, 226
funkcjonalnoci Web Forms, 413
G
generowanie
kodu HTML, 62
pakietu NuGet, 420
strony internetowej, 275
widoków czciowych, 124
graficzny interfejs uytkownika, 26
grupowanie akcji, 441
grupy Windows, 192
GUI, Graphical User Interface, 26
H
hierarchia katalogów, 394
I
ignorowanie tras, 305
IIS, Internet Information Server, 59, 396
IIS, Internet Information Services, 20
instalacja
ASP.NET MVC, 23
pakietu z okna konsoli, 26
Razor Single File Generator, 321
Velocity, 265
wiersza polece NuGet, 417
integracja platform, 409
interfejs
IDependencyResolver, 120
IEntity, 173
IEquatable, 173
IRepository, 115
IRouteConstraint, 308
IRouteHandler, 315
ISearchProvider, 112
ISecurityProvider, 111
System.Web.Mvc.IController, 30
IoC, Inversion of Control, 113
ISP, Interface Segregation Principle, 112
J
JavaScript, 81
jzyk
C#, 38
HTML, 123
JavaScript, 81
SmallTalk, 99
Visual Basic.NET, 38
JIT, Just-In-Time, 392
jQuery JavaScript Library, 81
jQuery Mobile, 212, 215, 232, 235
jQuery Theming, 235
JSON, JavaScript Object Notation, 129, 143
JSONP, JSON with Padding, 144
Skorowidz
Kup książkę
_ 455
Poleć książkę
K
karta
Components, 293
Routes, 309
YSlow, 292
katalog
Content, 233, 234, 421
Controllers, 27, 47, 149
inetsrv, 251
libs, 422
Scripts, 234, 235
Shared, 37
tools, 423
Views, 28
klasa
AccountController, 194, 197
ActionFilterAttribute, 36
ActionResult, 36
ActiveDirectoryProvider, 111
AspCompatHandler, 316
AsyncController, 240, 447
Auction, 46, 174
AuctionsController, 116, 137
BufferedMediaTypeFormatter, 159
CustomHandleError, 341
DBContext, 72
DonutCachingPage, 262
Entity, 173
EntityObject, 171
ErrorLogger, 110, 117
ErrorLoggerManager, 109
FileLogSource, 110
HomeController, 31
HtmlHelper, 46, 319
HttpResponseException, 157
IRepository, 117
JsonModelBinder, 141
Logger, 338
MediaTypeFormatter, 159
MockAuctionRepository, 365, 367
MvcHandler, 317
Page, 317
Payment, 174
PersistentConnection, 248
RouteAttribute, 310
RouteData, 303
RouteGenerator, 311
SearchController, 113, 121, 178
456 _
SearchCriteria, 182
SearchViewModel, 179
System.Data.Entity.DbContexa, 72
System.Web.Mvc.Controller, 32
UrlHelper, 45
ViewSwitcherController, 222
ViewUserControl, 321
klasy POCO, 163
kod
EBuy, 22
formularza, 69
HTML, 52
JavaScript, 93, 250
kolejno tras, 305
kolekcja filtrów, 336
kompilacja, 375
ciga, 379
na okrgo, 379
szablonu klienta, 132
w Visual Studio, 377
wedug harmonogramu, 379
wejciowa, 379
z poziomu wiersza polece, 377
komponent listview, 218
komponenty
bezstanowe, 101
skompresowane, 282
komunikat o bdzie, 76, 78, 92
komunikat o bdzie serwera, 156
konfiguracja
ASP.NET MVC, 281
monitorowania, 340
nagówka ETag, 289
opcji bazy danych, 266
opcji uwierzytelniania, 192
pooenia bufora, 259
serwera IIS, 281
serwera WWW IIS 7, 190
serwera WWW IIS Express, 189
tras, 29
uwierzytelniania Windows, 188
witryny, 397
waciwoci projektu, 190
konsola, 26
konsorcjum W3C, 82
kontekst danych, 176
kontenery IoC, 118
konto usugi dla aplikacji, 188
kontrola wersji pakietu, 433
Skorowidz
Kup książkę
Poleć książkę
kontroler, 20, 31, 47
AccountController, 54
AdminProfile, 192
AjaxController, 441
Auction, 138
AuctionsController, 49, 364
HomeController, 36
SearchController, 112, 179, 182
UserController, 53
Web API, 149, 153, 154, 156
kontrolery asynchroniczne, 20, 239, 242
kontrolki uytkownika, 65
konwencja
PluralizingTableNameConvention, 172
przed konfiguracj, 27, 30, 151
konwersja witryny, 410
kopiowanie plików, 401
L
leniwe wczytywanie skryptów, 284
liczba
pocze, 251
zapyta DNS, 286
lista aukcji, 218
Local Storage, 273
logika biznesowa, 437
lokalizacja usugi, 114, 116
LSP, Liskov Substitution Principle, 111
luka w zabezpieczeniach, 144
cznik
DefaultModelBinder, 142
JsonModelBinder, 143
modelu, 141
M
magiczne cigi tekstowe, 436
mapowanie obiektowo-relacyjne, 164, 166
mechanizm
ETag, 270
Local Storage, 273
routingu, 314
meneder pakietów
bibliotek, 26
NuGet, 26, 435
metoda
$.post(), 139
.after(), 89
.before(), 89
.click(), 87
.contains(), 86
.done(), 91
.error(), 91
.fail(), 91
.html(), 89
.load(), 124
.prepend(), 89
.success(), 91
@Html.AntiForgeryToken(), 208
About(), 32
Assert.AreEqual(), 347
Auction.PostBid(), 354, 356
Bind<T>, 120
CallRemoteWebService(), 373
CheckUserRight(), 121
connection.start(), 248
Content(), 32
Controller.OnException(), 338
Controller.View(), 124
document.getElementById(), 84
ExecuteSqlCommand(), 169
File(), 32
FormsAuthentication.SetAuthCookie(), 196
GetApartmentState(), 315
GetHttpHandler(), 315
GetOverridenBrowser(), 222
GetService(), 153
Html.Partial(), 42, 128
Html.RenderAction(), 440
Html.UserAvatar(), 439
HttpNotFound(), 32
Index(), 178
JavaScript(), 33
Json(), 33, 130
MapRoute(), 303, 307
Membership.GetUser(), 197
Membership.ValidateUser(), 196
ModelBinderDictionary.GetBinder(), 141
OnActionExecuted(), 137
OnModelCreating(), 177
OnReceivedAsync(), 248
OnWriteToStream(), 159
PartialView(), 33, 127, 135
ProcessRequest(), 317
Skorowidz
Kup książkę
_
457
Poleć książkę
metoda
Redirect(), 33
RedirectToAction(), 33
RedirectToActionPermanent(), 33
RedirectToRoute(), 33
RedirectToRoutePermanent(), 33
RegisterGlobalFilters(), 335
Render(), 294
RenderAction(), 320, 330
Request.IsAjaxRequest(), 135, 136
Resolve(), 153
RouteTable.MapHttpRoute(), 151
SearchForBids(), 240, 241
setItem(), 273
SqlQuery(), 169
View(), 32, 42
metody rozszerzajce, 320
minimalizacja skryptów, 287
model, 20
aplikacji, 242
DOM, 81, 88
domeny, 175
HTTP long polling, 244
HTTP polling, 243
obsugujcy EBuy, 46
widoku, 44
moduy HTTP, 58
monitorowanie stanu ASP.NET, 340
MVC, Model-View-Controller, 18
N
nadpisywanie
konwencji, 172
widoków, 212
nagówek
Accept-Encoding, 282
Access-Control-Allow-Origin, 147
Cache-Control, 280
Content-Type, 140
ETag, 289
Expires, 280
Referrer, 208
narzdzie
aspnet_regiis.exe, 399
aspnet_regsel.exe, 341
Glimpse, 309
Install-Package, 430
NuGet, 417
NuGet Package Explorer, 419
458 _
Razor Single File Generator, 321, 327, 330
SQLCMD, 403
YSlow, 292, 295
nawiasy klamrowe, 30
nawigacja po witrynie, 369
nowy typ projektu, 23
numeracja wersji oprogramowania, 430
O
obiekt
ActionResult, 32
Auction, 34
Cache, 257, 268
COM interop, 370
DTO, 143
JSON, 250
ModelState, 73
NavigationMenu ViewData, 440
Request, 35
TempData, 43
ViewBag, 44
ViewData, 43
ViewResult, 446
window, 83
XmlHttpRequest, 89
obiekty imitujce, 365
obsuga
akcji POST, 71
aplikacji ASP.NET, 59
AppCache, 271
bdów, 333, 335
buforowania po stronie klienta, 281
cookies, 209
CORS, 147
formatu JSON, 129
jednego logowania, 102
jQuery, 90, 95
JSONP, 146
kompilacji, 375
konfliktów wspóbienoci, 169
logowania, 195
pliku manifestu, 272
pocze, 251
stronicowania, 155
wyjtków, 156
OCP, Open/Closed Principle, 109
odpowied
JSONP, 145
na zdarzenie, 86
Skorowidz
Kup książkę
Poleć książkę
na dania AJAX, 135
na dania JSON, 136
odwieanie
bufora, 296
komponentu, 281
strony, 89
ograniczenia trasy, 307
okno
Dodaj kontroler, 50
Dodawanie aplikacji, 398
Eksplorator testów, 353
Nowy projekt, 24
opcje wdroenia, 106
operacje CRUD, 152
opó
nianie wykonania skryptu, 284
opó
nienie, 108
oprogramowanie open source, 367
optymalizacja po stronie klienta, 275–297
ORM, Object Relational Mapping, 71, 164, 166
P
paczki, 294
pakiet
Entity Framework, 26
jQuery.Mobile.MVC, 215, 218
meta, 424
narzdzia, 424
NuGet, 26, 417, 420
NuGet MvcDonutCaching, 263
podzespou, 424
PrecompiledMvcEngine, 325
pakiety kodu, 39
parametry akcji, 33
pasek nawigacyjny, 225
ptla foreach, 39, 128
pieko DLL, 429
platforma
.NET, 17
ADO.NET Entity Framework, 169
ASP.NET MVC, 22, 409
ASP.NET Web Forms, 409
jQuery Mobile, 212, 216, 232
Moq, 367
Web API ASP.NET, 149
Web Forms, 18
plik
_Layout.cshtml, 41, 234
_Layout.Mobile.cshtml, 216
_ViewSwitcher.cshtml, 221
About.cshtml, 43, 45
ajax_content.html, 124
ApplicationHost.config, 282
aspnet.config, 251
ASPNETDB.MDF, 194
Auction.cshtml, 45
Auctions.cshtml, 126
Auctions.Mobile.cshtml, 214, 229
AuctionsController.cs, 135
BundleConfig.cs, 295
CompanyInfo.cs, 44
Create.cshtml, 69
EbuyDataContext.cs, 72
GenericError.cshtml, 323
Global.asax, 58, 443
Global.asax.cs, 337
HomeController.cs, 31, 43, 44
Index.cshtml, 37, 439
jquery.mobile.structure-1.1.0.css, 233
jquery.mobile.structure-1.1.0.js, 234
jquery.mobile-1.1.0.css, 233
jQuery.mobile-1.1.0.css, 216
jquery.mobile-1.1.0.js, 234
jQuery.mobile-1.1.0.js, 216
jquery.validate.js, 94
jquery.validate.unobtrusive.js, 94
Layout.cshtml, 294
Layout.Mobile.cshtml, 222
manifestu, 271
NuSpec, 418
RouteConfig.cs, 30
Trace.axd, 306
TwitterHelpers.cs, 327
web.config, 53, 58, 91, 194, 207, 411
WebResource.axd, 306
Wizard.cshtml, 442
WizardController.cs, 442
pliki
.cshtml, 319, 323
.vbhtml, 319
ukadu graficznego, 41
zewntrzne, 285
pobieranie danych aukcji, 135
pobranie wartoci id, 35
POCO, Plain Old CLR Object, 72, 163
polecenie
if-else, 38, 438
Install-Packages, 433
poczenie SignalR, 250
pomiar wydajnoci, 290
Skorowidz
Kup książkę
_ 459
Poleć książkę
portal Windows Azure, 405
powoka PowerShell, 26, 267
PRG, Post-Redirect-Get, 442
priorytet tras, 305
procedura Html.ValidationMessage(), 77
procedury
obsugi HTTP, 58
obsugi zdarze, 87
pomocnicze, 69
projekt, 23
aplikacji sieciowej, 26
EBuy, 24
testowy, 351
testów jednostkowych, 25
projektowanie repozytorium, 164
przechowywanie danych sesji, 256
przekazywanie obiektów JSON, 140
przekierowanie, 33, 287
przekierowanie domeny, 208
przeczanie widoków, 220, 223
przepustowo, 108
przestrze nazw, 105
System.Web.Mvc.*, 57
System.Web.UI.*, 57
przeszukiwanie listy, 219
przyrostek Controller, 30
publikowanie witryny, 399, 404
R
RAD, Rapid Application Development, 61
ramka Forever, 247
Razor Single File Generator, 38, 321
refaktoring testów jednostkowych, 363
reguy cigej integracji, 384
rejestracja
filtru wyjtku, 158
informacji o bdach, 337
nowego uytkownika, 196
tras Web API, 151
trybów wywietlania, 229
repozytorium, 164, 384, 385
NuGet.org, 424
systemu plików, 426
REST, 153
rodzaje buforowania, 253
routing, 28, 60
ASP.NET, 29
oparty na atrybutach, 310
zaawansowany, 299
rozszerzenie Firebug, 292
460 _
S
selektory, 83
SEO, Search Engine Optimization, 301
serializacja typu danych, 160
serwer
IIS, 20, 59, 251, 397
IIS Express, 190
NuGet, 427
WWW, 282
silnik
Razor, 325
routingu, 29
widoku, view engine, 25
skalowalno, 107
skadnia
Razor, 38
Web Forms, 66
skrypt, 283
modernizr.js, 294
MSBuild, 401
skrypty kompilacji, 376
sownik
IDictionary, 255
ModelState, 73
Request, 35
RouteData, 303
RouteTable, 318
RouteValue, 222
ViewData, 44, 437
sowo kluczowe
@model, 45
internal, 366
new, 435
SOLID, 109
sortowanie, 178
sprawdzanie poprawnoci danych, 204
SRP, Single Responsibility Principle, 109
stan widoku, View State, 58
strona
logowania, 54
rejestracji, 55
wyszukiwania, 178
stronicowanie, 155
stronicowanie danych, 178, 183
strony wzorcowe, 65
struktura
katalogów, 27
projektu, 106, 395
system zarzdzania treci, 206
Skorowidz
Kup książkę
Poleć książkę
szablon
Aplikacja dla urzdze przenonych, 25
Aplikacja internetowa, 25
Aplikacja intranetowa, 25, 188
Display, 320
Editor, 320
Interfejs Web API, 25
Podstawowe, 25
Pusta, 24
szablony
aplikacji mobilnej, 211, 232
kontrolerów, 47
po stronie klienta, 131, 133
projektów, 23, 30
S
cieka wirtualna, 31
rodowisko
produkcyjne, 386
uruchomieniowe, 59
T
tabela
Auctions, 201
Categories, 201
CategoryAuctions, 202
routingu, 29
TDD, Test-Driven Development, 357
technika Code First, 72
test
akceptacyjny, 349
integracyjny, 348
jednostkowy, 25
izolacja/niezaleno,
isolated/independent, 346
niepodzielno, atomic, 346
powtarzalno, repeatable, 346
szybko, fast, 347
pokrycia, Code Coverage, 370
testowanie, 343
aplikacji, 354
kontrolerów, 360
logiki aplikacji, 368
logiki dostpu do danych, 361
modelu, 354
rczne, 344
widoków, 368
zautomatyzowane, 345
testy
jednostkowe, 328
zautomatyzowane, 350, 358
TFS, Team Foundation Server, 404
token, 208, 420
token Antiforgery, 444
trasa, 29, 47, 302
trasa Web API, 151
trasy
opcjonalne, 303
typu Catch-All, 306
tre statyczna, 394
tryby wywietlania, 21, 212
tworzenie
aplikacji, 23
faza obsugi, 19
faza testowania, 19
faza tworzenia, 19
aplikacji mobilnej, 231
filtrów wyjtków, 157
formularza, 69
kompilacji cigej, 380
konta Windows Azure, 403
kontrolera asynchronicznego, 240
metod pomocniczych, 327
nowego projektu, 232
nowej witryny, 398
obiektów imitujcych, 365
paczek, 294
pakietów NuGet, 418
projektu testowego, 350
przekierowania, 288
repozytorium pakietów, 426
skryptów kompilacji, 376
testów zautomatyzowanych, 358
testu jednostkowego, 351
tras, 302
usugi danych, 149
widoków Razor, 323
widoku, 51, 66
widoku mobilnego, 214
witryny, 404
wasnego typu, 159
typ MIME, 158
typy pakietów NuGet, 423
U
ukad graficzny, 40, 65
uruchamianie aplikacji, 28
Skorowidz
Kup książkę
_
461
Poleć książkę
urzdzenia mobilne, 211
usuga zautomatyzowanej kompilacji, 378
usprawnianie komunikacji, 247
usuwanie silników widoku, 446
UTA, User Acceptance Testing, 349
uwierzytelnianie, 52, 187
formularzy, 193, 197
uytkowników, 195
uywanie
abstrakcji, 115
CDN, 280
paczek, 296
SSL, 193
szablonu, 133
W
warstwa
aplikacji, 105
danych, 105
dostpu do danych, 171
klienta, 105
wayfinding, 299
wdraanie, 59, 106, 387, 391
aplikacji, 188
na serwerze IIS, 396
typu bin, 392
Web API, 21
Web Forms, 57–67
WebSocket, 246
wersje beta pakietów, 431
weryfikacja danych, 73, 77, 93, 95
po stronie klienta, 79, 91
po stronie serwera, 79
weryfikacja dania, 206
widget ViewSwitcher, 221
widok, 20, 36, 49
AjaxTimedOut, 241
ChangePasswordView, 198
DatabaseError, 335
Search, 179
widoki
czciowe, 42, 65, 124, 221, 319
dla iPhone’a, 229
dla Windows Phone, 231
Razor, 321
wiersz polece NuGet, 418, 425
Windows Azure, 403
waciwoci atrybutu AuthorizeAttribute, 191
462 _
waciwo
encoderType, 207
Model, 44, 45
ModelState, 77
RouteCollections.RouteExistingFiles, 305
Title, 77
ViewBag, 44
ViewData, 44
wczanie CORS, 147
wspóbieno, 169
wstrzykiwanie
zalenoci, 114, 116, 165
repozytorium, 153
wtyczka weryfikacji, 94
WWW, World Wide Web, 123
wybór silnika widoku, 25
wydajno, 107
wyjtek, 34, 157
OptimisticConcurrencyException, 170
QuotaExceededError, 274
System.Data.DataException, 335
wykonywanie da
AJAX, 144
JSONP, 146
wykrywanie funkcji mobilnych, 226
wymagania
aplikacji, 396
PowerShell 2.0, 23
Visual Studio 2010 Service Pack 1, 23
Visual Web Developer Express 2010 Service
Pack 1, 23
wymiatanie, scavenging, 258
wysyanie danych, 138
wysyanie danych JSON, 143
wyszukiwanie widoków, 37
wywietlanie
danych, 43
widoku, 202
wywoanie
$.ajax(), 131
zwrotne, 90
wzorzec
Front Controller, 101
kontrolera, 101
MVC, 99
PRG, 442
repozytorium, 164
trasy URL, 30
Skorowidz
Kup książkę
Poleć książkę
X
XSS, Cross-Site Scripting, 206
Z
zabezpieczanie aplikacji, 187
zablokowanie wtku, thread starvation, 239
zaciemnianie, 287
zalenoci bufora, 258
zapytania
LINQ, 178, 205
mediów CSS, 228
SQL, 168, 205
zapytanie
DNS, 286
do tabeli, 202
zarzdzanie
buforem, 414
poczeniami SignalR, 250
stanem, 58, 61
uytkownikami, 413
widokami, 128
zalenociami, 26, 115, 120
zasada
odwracania zalenoci, 113
odwrócenia sterowania, 113
otwarty/zamknity, 109
podstawienia Liskov, 111
pojedynczej odpowiedzialnoci, 109
segregacji interfejsu, 112
separacji zada, 19, 74, 99, 100
zasady SOLID, 114
zasig zmiennej, 40
zdarzenia serwera, 245
zdarzenie
onClick, 86
onsubmit, 94
zmiana
hasa, 197
waciwoci CSS, 88
zmniejszanie
liczby zapyta DNS, 286
liczby da, 278, 279
pliku, 286
znacznik viewport, 225
znaczniki, 38
znak @, 39
danie
asynchroniczne, 90
JSON, 131, 140
GET, 139, 152
HttpRequest, 276
JSONP, 147
POST, 139
synchroniczne, 89
Skorowidz
Kup książkę
_ 463
Poleć książkę
Kup książkę
Poleć książkę