Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ASP.NET Atlas Wojciech Rygielski

Podobne prezentacje


Prezentacja na temat: "ASP.NET Atlas Wojciech Rygielski"— Zapis prezentacji:

1 ASP.NET Atlas Wojciech Rygielski

2 1. ASP.NET Atlas

3 1. ASP.NET

4 Zmiany w ASP.NET 2.0 Kod można umieszczać na stronie (tzn. w pliku.aspx, nie koniecznie w.aspx.cs) Kompilacja projektu jest zbędna (jest wtedy kompilowany automatycznie przy odwołaniu się do strony)

5 Zmiany w ASP.NET 2.0 cd. Master pages Umożliwienie tworzenia pseudo-obiektowej hierarchii wyglądu stron w aplikacji (strona może wywoływać metody publicznych obiektów w swojej master- stronie) Łatwe dodawanie wspólnych elementów dla wszystkich stron (np. menu w plików sitemap), elementy te mogę być konfigurowalne Wielopoziomowe zagnieżdżanie

6 MasterPage.master... xyz......

7 Page.aspx void Page_Load(object sender, System.EventArgs e) { Label headerLabel = (Label) Master.FindControl("Header"); headerLabel.Text = "abc"; }... ghi

8 Zmiany w ASP.NET 2.0 cd. WebParts (zbiór komponentów umożliwiających użytkownikom końcowym personalizację wyglądu strony) Lepsze cachowanie możliwość odświeżenia cache po zmianach w bazie danych (w MSSQL7 na poziomie tabeli, w kolejnej wersji na poziomie wiersza)

9 Odświeżanie cache przy zmianach bazie danych Na stronie: OutputCache duration="3600" varybyparam="none" sqldependency="Northwind:Employees" %> W konfiguracji (web.config): W bazie danych (SqlCacheDependencyAdmin.EnableTableForNotifications)

10 Zmiany w ASP.NET 2.0 cd. Personalizacja (role) ertyonwhidbey.html?page=1 ertyonwhidbey.html?page=1 użytkownik/role wbudowane w logikę ASP kontrolki w rodzaju,,, itp. Mechanizm logowania można stworzyć całkowiecie deklaratywnie

11 Sposoby przechowywania stanu aplikacji Application ViewState Session Profile (nowość)

12 -> Application // global.asax: void Application_Start(object sender, EventArgs e) { Application.Add("clickCount", 0); Application.Add("userCount", 0); } void Session_Start(object sender, EventArgs e) { Application["userCount"] = ((int)Application["userCount"]) + 1; } void Session_End(object sender, EventArgs e) { Application["userCount"] = ((int)Application["userCount"]) - 1; } // *.aspx.cs: protected void Button1_Click(object sender, EventArgs e) { Application["clickCount"] = ((int)Application["clickCount"]) + 1; this.Label1.Text = Application["clickCount"].ToString(); }

13 -> ViewState / Session ViewState Zapisywane w formularzu na stronie EnableViewState w wielu kontrolkach Nie przeterminowuje się Session Przechowywane w pamięci serwera Dane usuwane po wygaśnięciu sesji

14 Fragment wyprodukowanej strony z ViewState

15 ViewState / Session / Profile liczniki (na żywo)

16 Zmiany w ASP.NET 2.0 cd. Profile 09/28/2450.aspx 09/28/2450.aspx Sprawdzanie typów, obsługa IntelliSense Miała być możliwość zapisania danych w pamięci, bazie danych, pliku XML (domyślnie: AspNetSqlProfileProvider), można pisać własne Providery

17 -> Profile (web.config)

18 Profile (wykorzystanie w kodzie) void save_Click(object sender, EventArgs e) { Profile.lastName = this.lastName.Text; Profile.firstName = this.firstName.Text; Profile.phoneNumber = this.phone.Text; Profile.birthDate = Convert.ToDateTime(this.birthDate.Text); Response.Redirect("Default.aspx"); }

19 Zmiany w ASP.NET 2.0 cd. Themes Pliki *.skin – domyślne ustawienia kontrolek Można powiązać ze wszystkimi stronami, lub z wybranymi: Można zmieniać w trakcie wykonania (Page.Theme) Wartości nie tylko spośród adekwatnych im wartości CSS

20 Zmiany w ASP.NET 2.0 cd. Nowe źródła danych obiekt jako wiersz/tabela (więcej zaraz) używany np. przez komponent menu

21 ObjectDataSource atrybuty (właściwości? pary set+get) obiektów widoczne jako wartości kolumn (interpretacja: wiersz) obiekt może mieć metodę zwracającą kolekcję obiektów (interpretacja: tabela) public ICollection GetData() { ArrayList list = new ArrayList(); list.Add(new InnyObiekt(bla,bla,bla)); return list; }

22 ObjectDataSource

23

24 Wykorzystanie źródeł danych Wiele funkcjonalności możemy opisać bez pisania kodu (nie chodzi tylko o zapytania select, ale również update/insert/delete) Dużo kontrolek obsługujących źródła danych (,, ), radzących sobie z problemami konkurencyjności itp. Spójny model i API

25 Podsumowanie aplikacji webowych w ASP.NET Logika aplikacji webowej nie odbiega bardzo od logiki tworzenia zwykłej aplikacji okienkowej W czystym ASP.NET (bez ręcznie pisanych skryptów), praktycznie każde kliknięcie myszką oznacza przeładowanie całej strony

26 Przykładowa aplikacja ASP.NET (na żywo)

27 2. Atlas

28 Realizacje AJAX dla ASP.NET ComfortASP.NET MagicAJAX.NET ZumiPage ATLAS (CTP) OutPost FastPage ComponentArt Telerik Dart PowerWeb Anthem Syncfusion Studio

29 AJAX+ASP – dwie koncepcje Rozwiązanie 1 – dynamiczne odświeżanie całej strony zamiast przeładowywać całą stronę, wysyłany jest request w tle po stronie serwera sporządzana jest lista zmian na stronie (diff) i sama lista zmian jest przesyłana do klienta lista zmian jest aplikowana dynamicznie po stronie klienta

30 (1) Dynamiczne odświeżanie strony Założenia: Strona jest wyświetlana tak jak bez AJAX W kodzie aplikacji generalnie nic się nie zmienia Wpływ na wzorzec aplikacji Logika aplikacji zostaje po stronie ASP (ograniczenie używanych skryptów JS) Stan aplikacji zmienia się wciąż tylko podczas przeładowywania strony

31 (1) Dynamiczne odświeżanie strony Problemy (implementacji rozwiązania): Rozmiar przesyłanych danych; po każdym AJAXowym żądaniu, przesyłane są te rzeczy, które zmieniły się na stronie ASP (diff) Ewentualne skrypty JS powinny być po takim żądaniu odświeżane i resetowane (tak jak by to było po odświeżeniu strony)

32 AJAX+ASP – dwie koncepcje Rozwiązanie 2 – odświeżanie kontrolek decyzję o tym co ma być odświeżane podejmuje programista

33 (2) Odświeżanie kontrolek Założenia: Oznaczamy na stronie kontrolki, które mogą się zmienić (partial/selective update) Wpływ na wzorzec aplikacji Możliwy rozwój prawdziwej aplikacji AJAXowej (w sensie: takiej jak do tej pory, a nie symulowanej jak w (1)) W dalszym ciągu możliwy rozwój normalnej aplikacji ASP Przeniesienie części logiki AJAXowej do zapisu deklaratywnego (w Atlasie: UpdatePanel) (Różne inne zależności zależne od implementacji)

34 Sposoby oznaczania zmieniających się kontrolek Różne sposoby w różnych implementacjach: Najbardziej popularny: zamknięcie kontrolek w odświeżającym się panelu Oznaczenie poszczególnych kontrolek w kodzie aplikacji Ręczne zdecydowanie, które kontrolki mają być przesłane, podczas odpowiadania na żądanie Wykrywanie po stronie klienta, które kontrolki powinny być zmienione, przesyłanie ich ID w żądaniu (?)

35 ATLAS Microsoftowa implementacja biblioteki AJAX pod ASP.NET Na razie uboga, rozwija się Atlas to tylko tymczasowa nazwa Omawiana tutaj wersja - April (2006) Community Technology Preview (CTP) API wciąż się zmienia (używać na własne ryzyko)

36 Szok ;) Atlas działa pod Firefoxem (dla przypomnienia: Atlas jest Microsoftu)

37 Czym jest Atlas 1. zbiorem plików.js dołączanych do emitowanych stron, rozszerzających możliwości JavaScriptu 2. sposobem deklaratywnego opisania interakcji komponentów na stronie (XML-script) 3. zbiorem komponentów do wykorzystania po stronie serwera, emitujących odpowiedni XML-script interpretowany przez (1) Możemy zaprzestać na każdej z tych trzech warstw abstrakcji (stąd np. pomysły wykorzystania niższych warstw Atlasa w PHP)

38 (1) Rozszerzenia do JavaScriptu AtlasRuntime.js Atlas.js AtlasCompat.js AtlasCompat2.js AtlasFX.js AtlasUIDragDrop.js AtlasUIGlitz.js AtlasUIMap.js AtlasWebParts.js GadgetRuntime.js

39 Atlasowy JavaScript Dodatkowe obiekty, funkcje i typy danych (klasy, przestrzenie nazw, enumeracje, interfejsy, dziedziczenie). Klasy do debuggowania, obsługi zdarzeń (events) i stringów, wywołań XML (webservices), timery i inne Obsługa UI – kontrolki, zachowania (behaviors), walidacja, wiązanie danych, drag&drop... Atlasowe implementacje wielu standardowych kontrolek HTML (hyperlink, listview, select, dataview, button, checkbox, textbox, label, datasource, counter)

40 Przykład: dodawanie klasy do przestrzeni nazw Type.registerNamespace("Demo"); Demo.Person = function(firstName, lastName, Address) { var _firstName = firstName; var _lastName = lastName; var _ Address = Address; this.getFirstName = function() { return _firstName; } //...pozostałe akcesory... this.dispose = function() { alert('bye ' + this.getName()); } Demo.Person.registerClass('Demo.Person', null, Web.IDisposable);

41 Przykład: dziedziczenie Demo.Employee = function(firstName, lastName, Address, team, title) { Demo.Employee.initializeBase(this, [firstName, lastName, Address]); var _team = team; var _title = title; this.getTeam = function() { return _team; } this.setTeam = function(team) { _team = team; }... } Demo.Employee.registerClass('Demo.Employee', Demo.Person);

42 Przykład: override Demo.Person.prototype.toString = function() { return this.getName() + ' (' + this.get Address() + ')'; } Demo.Employee.prototype.toString = function() { return Demo.Employee.callBaseMethod(this, 'toString') + '\r\n' + this.getTitle() + '\r\n' + this.getTeam(); }

43 Przykład: obsługa atlasowych obiektów g_panel = new Sys.UI.Control($('panel')); g_panel.initialize(); g_panel.set_cssClass('normal'); g_selColor = new Sys.UI.Select($('colorSelect')); g_selColor.initialize(); g_selColor.selectionChanged.add(onSelectColor); g_tbx = new Sys.UI.TextBox($('textBox')); g_tbx.initialize(); g_tbx.set_text("Simple text box control"); g_tbx.set_cssClass("textBox"); var btnVisibility = new Sys.UI.Button($('visibilityButton')); btnVisibility.initialize(); btnVisibility.click.add(onSetVisibilityClick);

44 (2) XML-script Możliwość deklaratywnego zapisu wielu (AJAX-owych) aspektów aplikacji w postaci XML (zamiast kodu JS)

45

47 Przykład: sprawdzanie poprawności formularza

48 Przykład: sprawdzanie poprawności formularza cd.

49 Przykład: inne wymysły

50 Przykład: łączenie XML-scriptu z javascriptem function sayHello() { alert("hello"); }

51 (3) Kontrolki serwera emitujące XML-script Wszystko co opisane wcześniej można zamknąć w logice kontrolki ASP Predefiniowanych kontrolek jest na razie mało, ich lista wciąż się zmienia, obsługa w Visual Studio jest ograniczona (szczególnie w Designerze). Jest gotowy interfejs do tworzenia własnych kontrolek (który być może już się bardzo nie zmieni)

52 Dodanie funkcjonalności Atlasowych do aplikacji ASP (na żywo)

53

54 Źródła zeiss.de/AJAXComparison/Results.htm zeiss.de/AJAXComparison/Results.htm _ _1 _ _1 5/libertyonwhidbey.html?page=1 5/libertyonwhidbey.html?page=

55 THE END


Pobierz ppt "ASP.NET Atlas Wojciech Rygielski"

Podobne prezentacje


Reklamy Google