Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Datamining-Solutions Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5 - PROJEKT Prowadzący: Jarosław Kurek

Podobne prezentacje


Prezentacja na temat: "Datamining-Solutions Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5 - PROJEKT Prowadzący: Jarosław Kurek"— Zapis prezentacji:

1 Datamining-Solutions Zaawansowane aplikacje internetowe – ASP.NET 2.0 / PROJEKT Prowadzący: Jarosław Kurek

2 Datamining-Solutions Agenda I Transakcje II Gupowy insert (bulk copy) III ORM na przykładzie MyGeneration IV Nowości w C# 3.5 V LINQ VI Web Serwisy VII Technologią Ajax VIII ASP.NET AJAX

3 Datamining-Solutions Transakcje

4 Datamining-Solutions Dane i dostęp do danych c.d. Transakcje Transakcje - zbiór operacji na bazie danych, które stanowią w istocie pewną całość i jako takie powinny być wykonane wszystkie lub żadna z nich (chyba, że rollback) Przykładem transakcji może być transakcja bankowa jaką jest przelew. Muszą tu zostać dokonane 2 operacje - zabranie pieniędzy z jednego konta oraz dopisanie ich do drugiego. W przypadku niepowodzenia żadna z tych operacji nie powinna być zatwierdzona, gdyż zajście tylko jednej powodowałoby nieprawidłowości w bazie danych (pojawienie się lub zniknięcie pieniędzy).

5 Datamining-Solutions Dane i dostęp do danych c.d. Transakcje Transakcje powinny spełniać zasady ACID (Atomicity, Consistency, Isolation, Durability - Atomowość, Spójność, Izolacja, Trwałość). Atomowość- niepodzielność: każda transakcja zostanie wykonana w całości lub w ogóle Spójność – po wykonaniu transakcji baza będzie spójna, transakcje nie naruszają integralności Izolacja – w zależności od poziomu izolacji możemy się spodziewać różnych anomalii, w przypadku realizacji dwóch współbieżnie wykonujących się transakcji Trwałość – gwarancja trwałości wykonanych operacji

6 Datamining-Solutions Dane i dostęp do danych c.d. Transakcje Poziom izolacji wprowadzany do znalezienia kompromisu pomiędzy współbieżnością a poprawnością wykonania transakcji Poziomy izolacji: READ UNCOMMITTED Dopuszczenie odczytywania danych, które zostały zmienione przez niezatwierdzone transakcje – może czytać dodane wiersze które później będą wycofane (Czytanie na brudno) Najniższy poziom izolacji READ COMMITED Odczytuje tylko zatwierdzone dane Brak gwarancji, że dane odczytane nie zostaną zmienione przez inną transakcję Problem niepowtarzalnego odczytu – gdy ta sama dana jest czytana dwa razy a w międzyczasie inna transakcja ją modyfikuje

7 Datamining-Solutions Dane i dostęp do danych c.d. Transakcje Poziomy izolacji c.d.: SERIALIZABLE Odczytuje wyłącznie dane zatwierdzone Do momentu zakończenia transakcji żadna dana nie zostanie zmieniona przez inną transakcje Blokuje dostęp do tabeli Zapewnia szeregowalność REPEATABLE READ Tak samo jak SERIALIZABLE – tylko, że blokuje dostęp do danych a nie całej tabeli Pojawia się problem fantomów – gdy jedna transakcja czyta dane, druga w tym samym czasie dodaje lub uaktualnia FANTOM (złudne dane) Ilustruje to przykład: transakcja wyszukuje rachunki o saldzie powyzej zł. W ramach jednej transakcji wykonujemy dwa razy odczyt. Miedzy pierwszym a drugim inna transakcja dodaje nowy rachunek o saldzie zł. Spełnia on warunek zapytania rekord pojawi się w wyniku jako fantom.

8 Datamining-Solutions Dane i dostęp do danych c.d. Transakcje Porównanie poziomów izolacji: Czytanie na brudno Niepowtarzalny odczyt Fantom READ UNCOMMITED możliwe READ COMMITED Nie występujemożliwe REPEATABLE READ Nie występuje możliwe SERIALIZABLENie występuje

9 Datamining-Solutions Dane i dostęp do danych c.d. Transakcje Commit – zatwierdza transakcje Save – tworzy punkt kontrolny transakcji do którego można wrócić poprzez rollback Rollback- przywracanie transakcji do danego punktu kontrolnego. Transakcję podłączamy do otwartego połączenia oraz sqlCommand

10 Datamining-Solutions Grupowy insert (bulk copy)

11 Datamining-Solutions Dane i dostęp do danych c.d. bulk operations Bulk operations – są to operacje polegające na wykonanie wielu operacji na bazie danych jednocześnie. Bardzo wydajny sposób na wrzucenie tysięcy rekordów np. pomiarów bez wywołania tysięcy insertów. Bardzo prosty sposób obsługi: Wypełnić dane – datatable Połączyć się z bazą Opcjonalnie zmapować kolumny source->destination Wskazać tabele (destination) Zapis do bazy

12 Datamining-Solutions Dane i dostęp do danych c.d. bulk operations SqlBulkCopy– pozwala na wrzucenie wielu rekordów danych z DataTable do bazy danych za pomocą jednego wywołania ColumnMappings.Add(kol_źród", kol_docel") – pozwala na mapowanie kolumn w datatable i w tabeli bazy danych DestinationTableName – docelowa nazwa tabeli do której zapisujemy dane WriteToServer(DataTable) – wykonuje zapisz do bazy wymienionej jako argument datatable.

13 Datamining-Solutions Procedury składowane

14 Datamining-Solutions Dane i dostęp do danych c.d. Procedury składowane Procedury składowane nie należą do standardu SQL, lecz do T-SQL(MSSQL) lub PL/SQL (Oracle), ZALETY: Większa wydajność: Procedury są przechowywane w bazie w postaci skompilowanej i zoptymalizowanej. Dlatego procedury takie wykonują się szybciej niż odpowiedni kod SQL w postaci tradycyjnej. Dodatkowo jeśli mamy do czynienia z sytuacją, w której aplikacja łączy się ze zdalnym serwerem baz danych to zastosowanie procedur składowanych może zmniejszyć ruch w sieci komputerowej, gdyż zamiast długich zapytań transportujemy w sieci tylko nazwy procedur i ewentualnie parametry wejściowe.

15 Datamining-Solutions Dane i dostęp do danych c.d. Procedury składowane ZALETY c.d.: Większe bezpieczeństwo: Parametry wejściowe w procedurach składowanych mają zadeklarowane typy. Powoduje to, że aplikacje wykorzystujące procedury składowane są bardziej odporne na wstrzykiwanie kodu (SQL injection) - jedną z technik włamań stosowanych głównie w aplikacjach internetowych. Modularyzacja kodu. Stosowanie procedur składowanych powoduje, że w kodzie aplikacji zamiast (czasem złożonych) zapytań SQL pojawiają się nazwy procedur, które o wiele łatwiej mogą opisywać jej funkcjonalność.

16 Datamining-Solutions Dane i dostęp do danych c.d. Procedury składowane ZALETY c.d.: Łatwiejsza migracja do innych środowisk. Jeśli chcemy przenieść aplikację do innego środowiska programistycznego pozostając przy tym samym serwerze baz danych, to jeśli nasza aplikacja ma część logiki biznesowej zaimplementowanej w postaci procedur składowanych to operacja ta będzie łatwiejsza, dlatego, że po prostu mniej kodu będzie do przeniesienia.

17 Datamining-Solutions Dane i dostęp do danych c.d. Procedury składowane - podstawy Szkielet procedury: CREATE typdanych(długośc),… As typdanych(długość) BEGIN Wyrażenie SQL END Nadawanie wartości zmiennym Wyświetlanie zmiennej

18 Datamining-Solutions Dane i dostęp do danych c.d. Procedury składowane - przykład create procedure varchar(101) as begin insert into tb_osoba(companyname,contactname) select end

19 Datamining-Solutions Dane i dostęp do danych c.d. Procedury składowane – użycie w ASP.NET Należy zmodyfikować typ wykonania SqlCommand:...commandType = CommandType.StoredProcedure; Zamiast polecenia SQL podać nazwę procedury:...CommandText = "InsertOsoba"; Zdefiniować parametry wejściowe "Jarosław");

20 Datamining-Solutions ORM na przykładzie MyGeneration

21 Datamining-Solutions ORM (Object Relational Mapping) ORM to pomost między logiką biznesową a relacyjną strukturą bazy danych Odwzorowuje tabele, procedury składowane, widoki na obiekty w logice biznesowej Zmniejsza rozmiar kodu przez operowanie obiektami, w których zaszyte są operacje CRUD Podczas wczytywania obiektu, automatycznie ładowane są obiekty powiązane- jeżeli są wymagane

22 Datamining-Solutions ORM (Object Relational Mapping) Możliwość tworzenia złożonych zapytań. ORM dostarcza Object Oriented Query Language, który później jest tłumaczony na polecenia SQL do konkretnego SZBD Concurrency support - ORM obsługuje konkurencyjność w przypadku pracy multiuser – przy edytowaniu rekordów. Cache managment – umożliwia buforowanie obiektów Transaction management and Isolation – obsługują transakcje oraz poziomy izolacji

23 Datamining-Solutions MyGeneration (ORM) Darmowy ORM dla.NET (http://www.mygenerationsoftware.com)http://www.mygenerationsoftware.com Wykorzystuje architekturę dOOdads dla.NET (C# oraz VB.NET) dOOdads wspiera :Microsoft SQL, Oracle, Firebird, Access, PostgreSQL, VistaDB, SQLite, MySQL Generator kodu dla czterech języków JScript, VBScript, C#, VB.NET w oparciu o szablony baz danych. Obecna wersja MyGeneration dostępny pod

24 Datamining-Solutions MyGeneration (ORM) instalacja / konfiguracja Instalacja MyGeneration z Utworzenie biblioteki MyGeneration.dOOdads.dll w VS.NET MyGeneration\Architectures\dOOdads\CSharp\M yGeneration.dOOdads W folderze DbAdapters dla określonej bazy danych ustawić Build Action" in "Properties" "Compile W przypadku MSSQL: - SqlClientDynamicQuery.cs - SqlClientEntity.cs Skompilować jako release.

25 Datamining-Solutions MyGeneration (ORM) - konfiguracja Przed generacją należy zdefiniować ustawienia domyślne

26 Datamining-Solutions MyGeneration (ORM) BLL i DAL W projekcie wykorzystującym ORM, dodać referencję MyGeneration.dOOdads.dll Utworzyć w web.config connectionstring do bazy danych Utworzyć folder na klasy DAL (Data Access Layer) Utworzyć folder na klasy BLL (Business Logic Layer) Wygenerować procedury składowane na operacje CRUD w template browser->MS SQL Server->Script Insert, Update,Delete procedures for SQL Server.

27 Datamining-Solutions MyGeneration (ORM) BLL i DAL Po wygenerowaniu skryptu procedur CRUD, należy je wykonać. Należy wygenerować klasy dostępowe do bazy DAL (Business Entity) – dodać je do folderu DAL Należy wygenerować klasy BLL concrete class – dodać je do folderu BLL Przy generacji należy podać namespace

28 Datamining-Solutions Inne ORMy ObjectBroker ObjectSpaces ObjectSpark Objectz.NET OJB.NET OPF.Net (Object Persistent Framework) ORM.NET Pragmatier Data Tier Builder RapTier Sisyphus Persistence Framework TierDeveloper Bob.NET ObjectPersistor.NET Genome.NET Persistence BBADataObjects DataObjects.NET Data Tier Modeler for.NET DotNorm Eldorado.NET Enterprise Core Objects (ECO) Entity Broker eXpress Persistent Objects for.NET FastObjects.NET JC Persistent Framework LLBLGen Pro ModelWorks Nhibernate Nolics.NET Norm Norpheme

29 Datamining-Solutions Nowości w C# 3.5

30 Datamining-Solutions Nowości w C# 3.5 Niejawne typowanie zmiennych lokalnych Automatyczne properties Metody rozszerzające Metody częściowe (partial methods) Automatyczne inicjalizowanie obiektów Anonimowe typy Wyrażenie Lambda

31 Datamining-Solutions Niejawne typowanie zmiennych lokalnych zmienna musi być zainicjalizowana przy deklaracji może być zadeklarowane wyłącznie w ciele metody (lokalnie) jeśli wskazuje na typ właściwy, to zostaje zamieniony na typ na etapie kompilacji zalety: dla osób lubiących zwinność języków typowanych dynamicznie oszczędza czas

32 Datamining-Solutions Niejawne typowanie zmiennych lokalnych Zmienna lokalna Nie może być argumentem metody, zwracana Nie może być polem klasy Musi być inicjalizowana podczas deklaracji Nie może przyjąć wartości null Może być typem referencyjnym Jest silnie typowana, nie może zmieniać typu podczas wykonywania programu tak jak w VBscript, Perl

33 Datamining-Solutions Automatyczne properties W C# 3.0 jest możliwość zastosowania automatycznego set i get muszą być deklarowane w parze kod jest generowany na etapie kompilacji zaleta: zwięzłość kodu Np. public double TotalPurchases { get; set; } lub public string Name { get; private set; } // tylko do odczytu

34 Datamining-Solutions Metody rozszerzające pozwalają rozszerzać funkcjonalność istniejących klas bez potrzeby rekompilacji muszą znajdować się w statycznej klasie i być statycznymi metodami słówko this dostęp wyłącznie do publicznych pól klasy rozszerzanej nie można nadpisywać istniejących metod public static class myMetodaRozrz { public static int Convert2Str(this int a) { return a.ToString(); }

35 Datamining-Solutions Metody częściowe (partial methods) Od C# 2.0 możliwe jest używanie partial class Od C# 3.5 możliwe jest używanie partial method Ograniczenia: Muszą być zdefiniowane w tej samej partial class Metody nie mogą zwracać zmiennych (void) Metody są niejawnie ustawione jako private Mogą zawierać argumenty Mogą być statyczne

36 Datamining-Solutions Metody częściowe (partial methods) partial class A { string _name; partial void OnNameChanged(); public string Name { set { _name = value; OnNameChanged(); } partial class A { partial void OnNameChanged() { // implementacja }

37 Datamining-Solutions Szybkie Inicjalizowanie obiektów Automatycznie można przekazać wartości properties i polom publicznym Standardowo: Point p = new Point(); p.X = 2; p.Y = 3; Np.: var objPoint = new Point { X = 30, Y = 30 }; Point objPoint = new Point { X = 30, Y = 30 };

38 Datamining-Solutions Szybkie Inicjalizowanie obiektów Automatycznie można przekazać wartości properties i polom publicznym Standardowo: Point p = new Point(); p.X = 2; p.Y = 3; Np.: var objPoint = new Point { X = 30, Y = 30 }; Point objPoint = new Point { X = 30, Y = 30 };

39 Datamining-Solutions Anonimowe typy W przypadku szybkiego stworzenia struktury, klasy z paroma polami bez metod, zdarzeń,… Przykład: var mojCar = new { Kolor = zielony", Marka = "Saab", maxV = 220 }; Typy anonimowe dziedziczą po System.Object Pola anonimowych typów są zawsze read-only Anonimowe typy są niejawnie sealed Wykorzystują domyślny konstruktor

40 Datamining-Solutions Wyrażenie Lambda Wyrażenie lambda korzysta z nowego operatora => Spełniają podobna rolę jak metody anonimowe (C# 2.0) delegate double Function(double c); static double Apply(double a, Function f) { } utworzenie metody anonimowej: Apply(5.5, delegate(double x){ return x*x; } Ogólna składania wyrażenia lambda: (parametry)=>wartość; (parametry)=>{instrukcja;} Przykłady: (int n)=>n+2 (x,y)=>x==y N=>{Response.Write(N.ToString());} Mogą one być przypisane do delegacji

41 Datamining-Solutions Wyrażenie Lambda delegacje Obiektowa wersja wskaźników funkcji Delegacje tworzą szkielet metod na które mogą wskazywać- deklaracja musi być identyczna Delegat: Np. delegate double mojdeleg(int a, int b); Oraz jakaś metoda: private double multiply(int AA, int BB) { return AA * BB; } Wykorzystanie: mojdeleg objdel = new mojdeleg(multiply); double res = objdel(3, 4);

42 Datamining-Solutions Wyrażenie Lambda delegacje Deklaracja delegata: delegate bool porownaj(double x double y); Wykorzystanie wyrażenia lambda: porownaj objPor=(x,y)=>x==y; Można by było zapisać to standardowo: private bool sprawdz(double x,double y) { return x==y; } porownaj objPor=porownaj(sprawdz);

43 Datamining-Solutions LINQ (Language Integrated Query)

44 Datamining-Solutions (Language Integrated Query) LINQ LINQ – zintegrowany język zapytań IDEA: Wykorzystać pochodzącą z języka SQL intuicję budowania zapytań i pobierać w ten sposób dane z dowolnego źródła Przenosi programistę na wyższy poziom abstrakcji w postrzeganiu danych Zapytania są formułowane w jednej linii z zachowaniem prostoty i intuicyjności zapytań SQL Technologie: LINQ to objects LINQ to SQL LINQ to DataSet LINQ to XML

45 Datamining-Solutions (Language Integrated Query) LINQ LINQ korzysta z metod rozszerzających W przestrzeni System.Query zdefiniowany został zbiór taki metod jak: select, where, orderby i zostały dodane do intefejsu IEnumerable implementowanego przez wszystkie kolekcje Wyrażenia lambda służą do definicji kryteriów Zwracane przez LINQ wartości mogą być niewiadomowego typu i dlatego przypisujemy je do słowa kluczowego var, uzyskuje on konkretny typ dopiero przy inicjacji Podczas kompilacji metody rozszerzone są zamieniane na wywołania metod statycznych na rzecz klasy System.Linq.Enumerable, a wyrażenia lambda na odpowiednie delegacje

46 Datamining-Solutions LINQ to objects Kolekcje platformy.NET. Które implementują interfejs IEnumerable mogą być źródłem danych w technologii LINQ to Objects Do tego interfejsu zostały dodane metody rozszerzające LINQ Pobieranie danych: Select,SelectMany Sortowanie: Orderby,ThenBy,OrderByDescending, ThenbyDescending, Reverse Filtrowanie: Where Operacje arytmetyczne: Aggregate,Average,Count,Max,Min,Sum Konwersja: Cast,OfType,ToArray,ToDictionary,ToList,ToLookup Pobieranie elementu:Element,ElementAt,First,Last,… Porównanie: EqualAll Grupowanie:Groupby Łączenie: Join Kwantyfikatory: All, Any, Contains Operacje na zbiorach: Concat,Distinct,Except,Union Można zatem filtrować, sortować, analizować, łączyć z inną kolekcją

47 Datamining-Solutions LINQ to objects -przykład var listaosob=from osoba in ListaOsob where osoba.Wiek>20 orderby osoba.Wiek select new{osoba.Imie,osoba.Nazwisko}; typ var Typ anonimowy Nowy sposób inicjacji obiektów Operatory LINQ

48 Datamining-Solutions LINQ to objects Prezentacje danych: foreach(var osoba in listaosob) { Response.Write(osoba.Wiek+ +osoba.Imie); } Kalkulacje: Response.Write(listaosob.Max(osoba=>osoba.Wiek); Wybór elementu var najstarszaOsoba = listaosob.Single(osoba=>(osoba.Wiek==listaosob.max(osoba1=>osoba1.wiek))) Testowanie danych: bool test =listaosob.All(osoba=>osoba.Wiek>20);

49 Datamining-Solutions LINQ to objects Łączenie zbiorów danych: var listaosobpelno=from osoba in listaosob where osoba.Wiek>18 orderby osoba.Wiek select new{osoba.Imie,osoba.Wiek}; var listakobiet=from osoba in listaosob where osoba.Imie.EndsWith(a) select new{osoba.Imie,osoba.Wiek}; var listapelnmezczyzn=listaosobpelno.Concat(listakobiet); var listapelnmezczyzn=listaosobpelno.Concat(listakobiet).Distinct(); iloczyn dwóch zbiorów: var listapelnmezczyzn=listaosobpelno.Intersect(listakobiet); nie będącymi kobietami: var listapelnmezczyzn=listaosobpelno.Except(listakobiet);

50 Datamining-Solutions LINQ to SQL Do łączenia używamy obiekt DataContex (współpraca z MS SQL) Klasa DataContext jest główną bramą do technologii LINQ to SQL Brama ta wymaga strażnika – klasa encji Klasa encji odzwierciedla całą strukturę tabeli za pomocą atrybutów. Pola klasy połączone są z polami tabeli (kolumnami) Klasa encji pozwala na kontrolowanie typów w tabeli

51 Datamining-Solutions LINQ to SQL Należy użyć przestrzeni nazw System.Data.Linq i jej podprzestrzeni System.Data.Linq.Mapping, jednak należy ręcznie dodać bibliotekę System.Data.Linq.dll do referencji Atrybuty w klasie encji mogą być następujące: (mapowanie opartym na atrybutach) Table Name, IsPrimaryKey Column Name, CanBeNull Należy zwrócić uwagę na typy wartościowe, które nie mogą przyjąć wartości null np. int, wówczas należy użyć typu parametrycznego nullable

52 Datamining-Solutions LINQ to SQL Mapowanie oparte na atrybutach: [Table(Name="Customers")] class klient { [Column(Name="CustomerID",IsPrimaryKey=true)] public string IDKlienta; [Column(Name = "CompanyName", CanBeNull=false)] public string Nazwafirmy; [Column(Name = "ContactName", CanBeNull = true)] public string Kontakt; public Nullable Wiek; //public int Wiek; }

53 Datamining-Solutions LINQ to SQL Pobranie danych i modyfikacja string objCon = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["SQLServerAccess"].ConnectionString; DataContext objC = new DataContext(objCon); Table objklient = objC.GetTable (); var Klienci = from Kl in objklient select Kl; foreach (var a in Klienci) { Response.Write(" " + a.Kontakt + " " + a.IDKlienta + " " + a.Nazwafirmy + " " + a.Nazwafirmy+" "+a.Wiek); } var b = from tt in objklient where tt.IDKlienta=="ALFKI" select tt; klient objK = b.First (); objK.Kontakt = "Con1"; objK.Nazwafirmy = "Naz1"; objK.Wiek=null; objC.SubmitChanges();

54 Datamining-Solutions LINQ to SQL Dodawanie rekordów i usuwanie Definiujemy nowy obiekt który ma być dodany i wywołujemy metodę: InsertonSubmit(obiektnowy) SubmitChanges(); Można pobrać aktualne ID np.: int newID=objKlient.Max(klient=>klient.ID)+1; Usuwanie rekordów odbywa się przez dwie metody: W przypadku gdy usuwamy 1: DeleteOnSubmit(…) Dla wielu:DeleteAllOnsubmit(…)

55 Datamining-Solutions LINQ to SQL - DataContext Można tworzyć bazy danych programowo: CreateDatabase DeleteDatabase Można wykonać podane w argumencie polecenie SQL metoda: ExecuteCommand Uruchomić zapytanie SQL i odczytać pobrane dane metoda: ExecuteQuery

56 Datamining-Solutions LINQ to SQL (Wizualne projektowanie klasy encji) Visual Studio posiada narzędzie (O/R Designer) do automatycznego mapowania struktury tabeli w klasach C# Add new item->LINQ to SQL classes (tworzy się plik DBML) Klasy encji automatyczne wygenerowane znajdują się w pliku *.Designer.cs Jeżeli tabele są powiązane odnotowane jest to jako np.private EntityRef _Employee; Automatycznie tworzy się obiekt: [NazwaplikuDBML]DataContext

57 Datamining-Solutions LINQ to SQL Współpraca z kontrolkami Po utworzeniu pliku DBML tworzy się automatycznie klasa [nazwaplikiDBML]DataContext Tworzymy obiekt tej klasy i możemy ewentualnie podpiąć tabelę do GridView: DataClassesmojDataContext objData = new DataClassesmojDataContext(); GridView1.DataSource = objData.Customers; GridView1.DataBind(); Lub var zlaczenie = from o in objData.Orders join c in objData.Customers on o.CustomerID equals c.CustomerID join e in objData.Employees on o.EmployeeID equals e.EmployeeID orderby o.OrderID select new { o.OrderID, c.CustomerID, e.EmployeeID }; GridView1.DataSource = zlaczenie; GridView1.DataBind();

58 Datamining-Solutions Web Serwisy

59 Datamining-Solutions Web serwisy jednostka kodu, którą można aktywować za pomocą zleceń HTTP (Hypertext Transfer Protocol), dzięki XML (Extensible Markup Language), niezależność od platformy, aplikacja usługodawcy (web serwis) oraz usługobiorcy (konsument) mogą być pisane w różnych językach, konsument web serwisy nie musi być to aplikacja www.

60 Datamining-Solutions Anatomia usługi WWW (Web serwisy) W przypadku.NET udostępniane w IIS (Internet Information Services), Potrzebna infrastruktura: Protokół komunikacyjny (HTTP GET lub HTTP POST lub SOAP (Simple Object Access Protocol) Usługa opisu (aby klient wiedział, czego może się spodziewać po usłudze), Usługa wykrywania (aby klient wiedział, że usługa WWW istnieje).

61 Datamining-Solutions Anatomia usługi WWW (Web serwisy) c.d. informacja między użytkownikiem, a serwisem przesyłana w formacie XML (plik tekstowy) – niezależność od platformy, najczęściej do transmisji wybierany SOAP – komunikaty w tym protokole mogą zawierać opis XML bardzo złożonych typów (DataSet, tablic, obiektów), WSDL - Schemat XML do opisu serwisu WWW (Web Service Description Language), Pliki *.disco (DISCOvery of Web Service) – pliki XML dynamicznie wykrywają usługi pod danym adresem URL).

62 Datamining-Solutions Usługi –przestrzenie nazw System.Web.Service –zawiera zestaw typów koniecznych do stworzenia serwisu WWW, System.Web.Services.Description – typy te umożliwiają interackję z WSDL z poziomu programu, System.Web.Services.Discovery – (używane w połączeniu z plikiem *.disco) – umożliwiają użytkownikowi wykrywanie z poziomu programu usług WWW, System.Web.Services.Protocols – Dane XML wymieniane między użytkownikiem a serwisem WW przekazywane za pomocą HTTP GET, HTTP POST, SOAP. W przestrzeni nazw zdefiniowane są typy potrzebne do transmisji.

63 Datamining-Solutions Usługi –System.Web.Services Składowe przestrzeni nazw System.Web.Services: WebMethodAttribute –Dodanie atrybutu [WebMethod], do metody w serwisie WWW umożliwia wywołane jej za pomocą HTTP, WebService –definiuje opcjonalną klasę bazową dla usługi WWW, WebServiceAttribute –atrybut WebService może być użyty w celu dodania informacji do usługi WWW, np. łańcucha opisującego zakres oferowanych funkcji. Nie jest on wymagany do publikacji i uruchomienia usługi, WebServiceBindingAttribute – Deklaruje protokół wiązania implementowany przez daną metodę usługi WWW.

64 Datamining-Solutions Budowa prostego serwisu Składowe przestrzeni nazw System.Web.Services:

65 Datamining-Solutions Budowa prostego serwisu Metody kalkulatora:

66 Datamining-Solutions Budowa prostego serwisu Próba uruchomienia:

67 Datamining-Solutions Budowa prostego serwisu Próba uruchomienia HTTP POST c.d.:

68 Datamining-Solutions Budowa prostego serwisu Plik WSDL, udostępnijący opis usługi (XML):

69 Datamining-Solutions Budowa prostego serwisu Dodatkowe atrybuty: Description – do umieszczenia opisu danej metody, MessageName – sposób reprezentacji metody WWW w WSDL celem uniknięcia kolizji nazwa

70 Datamining-Solutions Budowa prostego serwisu Rozwiązanie kolizji nazw: Wynik:

71 Datamining-Solutions Budowa prostego serwisu Użycie usługi w innej aplikacji webowej:

72 Datamining-Solutions Budowa prostego serwisu Konwersja z WSDL do C# (użycie usługi w innej aplikacji-np.konsoli)

73 Datamining-Solutions Budowa prostego serwisu Konwersja z WSDL do C# (użycie usługi w innej aplikacji-np.konsoli)

74 Datamining-Solutions Budowa prostego serwisu Konwersja z WSDL do C# (użycie usługi w innej aplikacji-np.konsoli) Dodajemy plik proxy: Dodajemy do referencjiprzestrzeń nazw: System.Web.Services.dll:

75 Datamining-Solutions Budowa prostego serwisu Konwersja z WSDL do C# (użycie usługi w innej aplikacji-np.konsoli)

76 Datamining-Solutions Technologia Ajax

77 Datamining-Solutions Technologia AJAX 1. AJAX –Asynchronous JavaScript and XML 2. Javascript i XML jest znany od lata, zmienia się podejście do programowania WWW. 3. Ajax nie jest językiem programowania 4. Ajax jest metodologią. 5. Ajax korzysta z obiektu XMLHttpRequest (JavaScript) 6. ActiveX od IE5 do IE6 7.Native Object wbudowany dla IE7

78 Datamining-Solutions Technologia AJAX 1. AJAX jest typem programowania spopularyzowanego przez Google w 2005 (Google Suggest). 2. AJAX nie jest nowym językiem programowania, ale nowym podejściem do programowania klient- server używają istniejących standardów. 3. Z AJAX tworzy się lepsze aplikacje, szybsze, i bardziej user-friendly 4. AJAX jest oparty na JavaScriptie i żądaniach HTTP (HTTP requests).

79 Datamining-Solutions Technologia AJAX Google Suggest

80 Datamining-Solutions Technologia AJAX Koncepcja działania

81 Datamining-Solutions Technologia AJAX metody obiektu XMLHTTPRequest MetodyOpis abort()Zatrzymanie bieżącego przetwarzania getAllResponseHeaders()Zwraca wszystkie nagłówki getResponseHeader("headerLabel")Zwraca szczegółowy nagłówek open("method", "URL"[, asyncFlag[, "userName"[, "password"]]]) Ustawia stronę docelową, metodę, i inne send(content)Przesyła zawartość setRequestHeader("label", "value")Ustawia wartości nagłówków wysyłane z żądaniem

82 Datamining-Solutions Technologia AJAX właściwości obiektu XMLHTTPRequest WłaściwośćOpis onreadystatechangeUchyt dla zdarzenia zmiany stanu readyStateStatus w typie int responseTextŁańcuch znaków zwrócony przez serwer responseXMLStruktura DOM (XML) zwrócona przez serwer statusNumetyczny kode zwrócony przez serwer, taki jak 404 dla "Not Found" lub 200 dla "OK" statusTextŁańcuch informujący od statusie przetworzenia.

83 Datamining-Solutions Technologia AJAX właściwości obiektu XMLHTTPRequest 0 – nieinicjalizowany 1 – przetwarzanie 2 – przetworzony 3 – interakcyjny 4 – zakończony (dane zwrócone) Wartości readyState

84 Datamining-Solutions Technologia AJAX / przykład Tworzenie obiektu XMLHTTPRequest

85 Datamining-Solutions Technologia AJAX / przykład Wywołanie strony z użyciem AJAX: Plik index.htm:

86 Datamining-Solutions Technologia AJAX / przykład Wywołanie strony z użyciem AJAX: Kod strony Default.aspx

87 Datamining-Solutions ASP.NET AJAX

88 Datamining-Solutions ASP.NET AJAX Najważniejsze elementy platformy serwerowej ASP.NET AJAX: Kontrolki serwerowe ASP.NET AJAX ScriptManager UpdatePanel Usługi ASP.NET w ASP.NET AJAX Moduł platformy udostępnia wybrane usługi aplikacji ASP.NET, które są bezpośrednio dostępne dla skryptów klienckich ASP.NET AJAX. Dochodzą mechanizmy profilii, personalizacja, uwierzytelnienie i członkowstwo Biblioteka Microsoft Ajax Biblioteka ta zawiera elementy języka JavaScript, które nie zależą od platformy ASP.NET.

89 Datamining-Solutions ASP.NET AJAX -pakiety Pakiety ASP.NET AJAX: Rozszerzenia ASP.NET AJAX (ASP.NET AJAX Extensions) Elementy bazowe ASP.NET AJAX Core i stanowią podstawowy pakiet ASP.NET AJAX Zestaw kontrolek ASP.NET (ASP.NET AJAX Control Toolkit) Są to komponenty serwerowe, które zapewniają zgodność z technologią ajax. Projekt open source, ale nadzorowany przez Microsoft. Pakiet elementów ASP.NET AJAX Futures Release najnowsze komponenty, które mogą stać się elementami składowymi przyszłych wersji środowisk ASP.NET AJAX Biblioteka Microsoft Ajax (Microsoft Ajax Library)

90 Datamining-Solutions ASP.NET AJAX - przykład Każda aplikacja ASP.NET AJAX musi uwzględniać kontrolkę serwerową ScriptManager Biblioteki skryptów klienckich (które są dynamicznie ładowane przez kontrolkę ScriptManager) umożliwiają komunikację między przeglądarkę a serwerem WWW. Dodajemy stronę na AJAX WebForm Dodajemy plik Web Service Aby usługa sieciowa współpracowała z ASP.NET AJAX, należy dodać: [System.Web.Script.Services.ScriptService] W ScriptManager dodajemy referencję do usługi: Pod przycisk dodajemy własną funkcję z uruchomieniem usługi:

91 Datamining-Solutions ASP.NET AJAX JSON JSON (Javascript object Notation)- obiektowa notacja javascrirpt Technologia wykorzystywana wewnętrznie przez mechanizmy ASP.NET AJAX Zapewnia wymianę złożonych struktur danych miedzy klientem a serwerem w sposób zrozumiały dla javascript Nie trzeba analizować analizy dokumentu XML Przesyłane dane w XML są zamieniane na JSON a następnie dzięki wykorzystaniu funkcji eval javascript ma dostęp do obiektu

92 Datamining-Solutions ASP.NET AJAX JSON JSON: {ksiazka:{ tytul: ASP.NET AJAX, autor: Koledzy i spółka rozdzialy:{ rozdzial:[ {numer:1,tytul:wprowadzenie}, {numer:2,tytul:Javascript}, {numer:3,tytul:ASP.NET} ] } }} XML: var json={ksiazka:{ tytul:ASP.NET AJAX,… Var obj=eval(( +json+ )); var a=obj.book.rozdzialy.rozdzial[1].numer; var b=obj.book.rozdzialy.rozdzial[1].tytul; document.write(a+ +b);

93 Datamining-Solutions ASP.NET AJAX JSON JSON: {ksiazka:{ tytul: ASP.NET AJAX, autor: Koledzy i spółka rozdzialy:{ rozdzial:[ {numer:1,tytul:wprowadzenie}, {numer:2,tytul:Javascript}, {numer:3,tytul:ASP.NET} ] } }} XML: var json={ksiazka:{ tytul:ASP.NET AJAX,… Var obj=eval(( +json+ )); var a=obj.book.rozdzialy.rozdzial[1].numer; var b=obj.book.rozdzialy.rozdzial[1].tytul; document.write(a+ +b);

94 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe

95 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe ScriptManager - Kontrolka ScriptManager zarządza zasobami skryptowymi dla komponentów klienta, częściową aktualizacją strony, lokalizacją, globalizacją i skryptami własnymi użytkownika. Kontrolka ta musi zostad umieszczona przed innymi kontrolkami ASP.NET AJAX na stronie. Koordynuje ona i rejestruje skrypty odpowiedzialne za częściowe odświeżanie strony, odpowiada za konfigurowanie, czy też zwolnienie bądź debugowanie skryptów wysyłanych do przeglądarki oraz interakcję skryptów z metodami usług sieciowych. UpdatePanel -Kontrolka UpdatePanel umożliwia aktualizację wybranej części strony przy użyciu asynchronicznych żądań. Jest kluczowym elementem AJAX w ASP.NET. Umożliwia wykorzystanie mechanizmu częściowego odświeżania strony, dzięki czemu możliwe jest ograniczenie czasu potrzebnego na ponowne ładowanie strony.

96 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe UpdatePanel : Kontrolka UpdatePanel jest kontenerem elementów podlegających pod system dynamicznego odświeżania strony. Najważniejsze właściwości kontrolki to: ContentTemplate – jest kontenerem dla kontrolek, które mają być dynamicznie aktualizowane. Dodawanie kontrolek jest możliwe tylko do tej części. Triggers – zawiera listę wyzwalaczy – zdarzeń, które mogą wywołać aktualizację kontrolek znajdujących się w ContentTemplate. Dzielą się na dwie grupy: AsyncPostBackTrigger – możemy zdefiniować zewnętrzną względem UpdatePanel kontrolkę i jej zdarzenie, które spowodują jej aktualizację PostBackTrigger – możemy zdefiniować wewnętrzną względem UpdatePanel kontrolkę i jej zdarzenie, które spowoduje aktualizację nie tylko panelu, ale i całej strony Kontrolka UpdatePanel automatycznie generuje wszystkie wymagane skrypty i wysyła je do przeglądarki. Na stronie możemy umieścić wiele kontrolek UpdatePanel i każda z nich będzie niezależnie aktualizowana.

97 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe UpdatePanel : Bardzo ważnym rzeczą, jest rodzaj reakcji tejże kontrolki na odświeżanie strony, której częścią jest dany egzemplarz klasy UpdatePanel. Zachowanie to zależy od wartości właściwości UpdateMode kontrolki i przedstawia się następująco: jeśli wartość właściwości UpdateMode jest ustawiona na Always, zawartość kontrolki (kontrolek) UpdatePanel odświeżana jest każdorazowo w sytuacji gdy następuje ponowne ładowanie całej zawartości strony zawierającej kontrolkę UpdatePanel. jeśli wartość właściwości UpdateMode kontrolki UpdatePanel jest ustawiona na Conditional, zawartość panelu odświeżana jest w następujących okolicznościach: a) wywoływana jest metoda Update() panelu; b) wywoływana jest metoda Update() panelu nadrzędnego w sytuacji gdy panel zawiera panele podrzędne, będące częścią panelu – rodzica; c) w sytuacji gdy, wywołanie zwrotne powodowane jest przez kontrolkę definiowaną jako trigger (wyzwalacz); d) w sytuacji, gdy wartość właściwości ChildrenAsTriggers kontrolki UpdatePanel ustawiona jest na true, panele podrzędne traktowane są jako wyzwalacze panelu- rodzica i generują dla niego zdarzenie Update(). W przeciwnym razie zmiany w panelach podrzędnych nie powodują wywołania zwrotnego dla panelu-rodzica. Należy również napomnieć, iż jeśli wartość właściwości ChildrenAsTriggers ustawimy na false, oraz UpdateMode na Always to sytuacja taka spowoduje wywołanie błędu.

98 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe UpdateProgress: Kontrolka ta, jest mocno związana z elementem UpdatePanel i umożliwia wykonywanie określonych działań (wcześniej zdefiniowanych przez programistę) podczas odświeżania zawartości panelu. Elementy, stanowiące zawartość tej kontrolki (jak również sama kontrolka) nie są widoczne w przeglądarce do czasu rozpoczęcia odświeżania panelu i są widoczne tak długo jak trwa ten proces. Tworząc aplikację internetową wykorzystującą technikę AJAX w ASP.NET mamy możliwość dodania dowolnej liczby kontrolek tego typu, powiązując je bądź też nie z kontrolką (kontrolkami) UpdatePanel. Niepowiązane w żaden sposób z elementami UpdatePanel kontrolki UpdateProgess, posiadające jednak zdefiniowane przez programistę określone zbiory działań (np. wyświetlenie danego tekstu) wykonują swoje operacje podczas odświeżenia dowolnego, a jednocześnie każdego znajdującego się na stronie panelu UpdatePanel, niezależnie od powiązanych z panelem kontrolek UpdateProgress.

99 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe UpdateProgress: W sytuacji połączenia pewnej kontrolki UpdateProgress z elementem UpdatePanel (jednym bądź więcej) odświeżanie panelu wywołuje operacje wskazywane przez powiązany z panelem UpdateProgress, oraz przez niepowiązane kontrolki klasy UpdateProgress. Oczywiście należy wspomnieć, iż wszelkie operacje zdefiniowane wewnątrz kontrolki UpdateProgress wykonywane są tylko i wyłącznie w sytuacji gdy zdarzenie odświeżenia strony powstaje wewnątrz panelu, lub przez wyzwalacz AsyncPostBackTrigger. Aby dokonać powiązania kontrolki UpdateProgress z elementem UpdatePanel należy zmienić/ustawić wartość właściwości AssociatedUpdatePanelID kontrolki UpdateProgress, wpisując odpowiednią wartość właściwości ID panelu UpdatePanel. W celu określenia zadań, jakie dany element klasy UpdateProgress powinien wykonywać, należy odpowiednio zbudować właściwość (element) ProgressTemplate obiektu UpdateProgress. To właśnie w nim dodajemy, definiujemy wiadomości, komunikaty, animowane obrazki, przyciski itp. wyświetlane podczas odświeżania panelu.

100 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe Timer umożliwia wykonywanie pewnych działań w określonych odstępach czasu. W standardowym zastosowaniu (gdy Timer nie jest częścią elementu klasy UpdatePanel, nie będąc jednocześnie wyzwalaczem panelu) kontrolka ta, zachowuje się podobnie jak typowy zegar znany z aplikacji okienkowych Windows, pozwalając tym samym na czasowe odświeżanie elementów całej strony. Jednak moc tej kontrolki, ujawnia się przede wszystkim w sytuacji, gdy umieścimy ją wewnątrz panelu UpdatePanel, lub też użyjemy jej jako wyzwalacza AsyncPostBackTrigger (gdy Timer jest poza panelem). Tworząc aplikację internetową wykorzystującą technikę AJAX, w szczególności kontrolkę Timer musimy pamiętać, iż wartość właściwości Interval danej kontrolki Timer nie może być większa niż wielkość Timeout dla przeglądarki, w której aplikacja ta będzie wyświetlana. Ponadto, musimy zdawać sobie sprawę, że określenie zbyt małych wartości czasu odświeżania panelu spowoduje znaczne blokady na serwerze powodowane częstymi zapytaniami do serwera. Bardzo istotną sprawą jest też fakt, iż dwa lub więcej działające równocześnie Timery będą się wzajemnie przecinać, blokować i wykluczać. Wynika z tego wniosek, że w danej chwili powinien być uruchomiony tylko i wyłącznie jeden egzemplarz klasy Timer. Timer:

101 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe ScriptManagerProxy. stosujemy go gdy dana strona korzysta z MasterPage korzystającej z ScriptManagera ScriptManagerProxy:

102 Datamining-Solutions ASP.NET AJAX kontrolki serwerowe Zadanie na ScriptManagerProxy: Twojemu klientowi zawsze marzyła się reklama, której zawartość jest cyklicznie odświeżana w przeglądarce. Należy dodać wyświetlanie reklamy na stronie. Reklama ma być odświeżana cyklicznie co 5 sekund.


Pobierz ppt "Datamining-Solutions Zaawansowane aplikacje internetowe – ASP.NET 2.0 / 3.5 - PROJEKT Prowadzący: Jarosław Kurek"

Podobne prezentacje


Reklamy Google