Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Tworzenie interfejsów do bazy danych z wykorzystaniem technologii ADO.Net 2 informatyka +

Podobne prezentacje


Prezentacja na temat: "Tworzenie interfejsów do bazy danych z wykorzystaniem technologii ADO.Net 2 informatyka +"— Zapis prezentacji:

1

2 Tworzenie interfejsów do bazy danych z wykorzystaniem technologii ADO.Net 2 informatyka +

3 Obiektowe spojrzenie na bazę danych Baza danych Model logiczny bazy danych Procedury składowane Obiekt BazaDanych Atrybuty obiektu Metody obiektu

4 SQLServer Interfejs Form Środowisko śieciowe Wykonaj przelew z konta A na konto B 1.Zapytanie o stan konta A 2.Odpowiedź – stan Konta A 3.Rozpoczęcie transakcji 4.Odpowiedź na polecenie 5.Zmiejszenie stanu konta A 6.Odpowiedź na polecenie 7.Zwiekszenie stanu konta B 8.Odpowiedź na polecenie 9. Zakończenie transakcji 10.Odpowiedź na polecenie Wykonane

5 A teraz inne podejście ????????????

6 SQL Server Iterfejs Form Środowisko śieciowe Wykonaj przelew z konta A na konto B Metoda WykonajPrzelew 1.Wykonaj metodę …Przelew 2.Odpowiedź z metody Wykonane

7 Dostęp do baz danych (.NET Framework 3.5) Aplikacja Dostęp do danych Baza danych 7informatyka +

8 Wymagania wstępne Podstawowa znajomość Visual Studio (.NET 2003, 2005 lub 2008) Podstawowa znajomość języka C# Podstawowa znajomość serwera baz danych MS SQL Server (2000, 2005, 2008) Szczere chęci do nauki ;-) 8informatyka +

9 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 9informatyka +

10 Architektura aplikacji Nie ma architektury doskonałej Nie ma doskonałego procesu wytwórczego Każde z podejść sprawdza się różnie w różnych projektach 10informatyka + We know why projects fail, we know how to prevent their failure -- so why do they still fail? Martin Cobb "Wiemy, dlaczego projekty upadają, wiemy jak zapobiec tym upadkom – więc dlaczego one ciągle upadają ?"

11 Architektura aplikacji Kilka oczywistych oczywistości : Dostęp do danych jest uzyskiwany praktycznie w każdej aplikacji. Zwykle, jako ze źródła danych, korzysta się z bazy danych W kodzie aplikacji, jego znaczna część dotyczy pobierania/modyfikowania danych Po wdrożeniu aplikacji pojawia się konieczność jej rozwijania i ulepszania 11informatyka +

12 Architektura aplikacji c.d. W ciągu kilkudziesięciu ostatnich lat wypracowano cały szereg dobrych praktyk dotyczących zarówno samego procesu wytwarzania oprogramowania jak i planowania jego architektury W ramach wykładu zajmiemy się małym fragmentem tej dziedziny W praktyce ważne jest znalezienie rozsądnego kompromisu pomiędzy planowaną architekturą aplikacji, a czasem potrzebnym na jej zastosowanie i celowością korzystania z niej w konkretnej sytuacji 12 WYMAGANIE: Ma zapewnić ochronę przed deszczem Który wariant wybrać ??? informatyka +

13 Architektura aplikacji c.d. Skupmy się na typowej, prostej architekturze warstwowej 13 Interfejs użytkownika Zwany warstwą prezentacji Zadanie: prezentować i pobierać dane Logika biznesowa Definiuje obowiązujące w systemie reguły Umożliwia realizację poleceń użytkownika Dostęp do danych Odcięcie wyższych warstw od szczegółów mechanizmu dostępu do danych Baza danych Składowanie danych informatyka +

14 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 14informatyka +

15 Architektura aplikacji c.d. Jedyną stałą rzeczą w projekcie są zmiany Aby uniknąć problemów przy rozbudowie i modyfikowaniu aplikacji: należy dobrze zdefiniować jakie operacje będą wykonywane na danych (interfejs warstwy dostępu do danych) należy wydzielić kod odpowiedzialny za przekazywanie poleceń do bazy danych i odbieranie od niej rezultatów w takim przypadku, aplikacja nie musi znać żadnych szczegółów (z jaką bazą się łączyć, jakie zapytanie wykonać, z jakiej procedury składowanej skorzystać itp..) łatwiej jest szacować nakład pracy potrzebny na implementację 15informatyka +

16 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 16informatyka +

17 Jak skorzystać z bazy danych?.NET Framework 3.5 oferuje kilka interfejsów pomocnych przy komunikowaniu się z bazami danych. Klasy implementujące te interfejsy pełnią następujące role: IDbConnection odpowiedzialna za zdefiniowanie i zarządzanie połączeniem z bazą danych IDbCommand odpowiedzialna za zbudowanie polecenia, które będzie wysłane do bazy danych za pośrednictwem połączenia IDataReader umożliwia odbieranie rezultatu wykonania polecenia przez bazę danych IDbParameter pozwala na definiowanie parametrów polecenia przekazywanego do bazy danych, lub odbierania wartości parametrów wyjściowych IDataAdapter pozwala na zdefiniowanie operacji CRUD (Create, Read, Update, Delete) dla określonej tabeli w bazie danych 17informatyka +

18 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 18informatyka +

19 19 Na początek… Potrzebujemy pomysłu na przykładową aplikację bazodanową… …Są jakieś? …i tak nie mamy dość czasu, żeby je przedyskutować ;-) W takim razie proponuje skorzystać z wcześniej przygotowanego: informatyka +

20 20 Wymagania stawiane aplikacji Dzienniczek ucznia ma umożliwiać: 1.Wyświetlenie listy uczniów 2.Wystawienie oceny ucznia z wybranego przedmiotu 3.Wyświetlenie średniej arytmetycznej ze wszystkich ocen ucznia 4.Wyświetlenie listy wszystkich ocen ucznia 5.Wyświetlenie listy ocen uczniów z wybranego przedmiotu informatyka +

21 21 Struktura aplikacji Przygotowane zostało rozwiązanie (solution) zawierające projekty niezbędne do zademonstrowania funkcjonowania aplikacji i mechanizmów dostępu do danych. informatyka +

22 22 Warstwa prezentacji informatyka +

23 23 Warstwa biznesowa informatyka +

24 24 Klasy warstwy biznesowej informatyka +

25 25 Definicja interfejsu IStudentNotesDB definiuje operacje, które będą wykonywane na danych korzysta z interfejsu IDataReader Jest podstawą do budowania implementacji warstwy dostępu do danych informatyka +

26 26 Diagram bazy danych skrajnie proste rozwiązanie zawiera przykładowe procedury składowane informatyka +

27 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 27informatyka +

28 28 Metoda na piechotę Komunikacja z baza danych (typowy scenariusz): 1.Utworzenie połączenia z bazą (SqlConnection) 2.Utworzenie polecenia do wykonania (SqlCommand) 3.Otwarcie połączenia 4.Wykonanie polecenia (ExecuteReader(), 5.ExecuteScalar(), ExecutenonQuery()) 6.Przetworzenie wyników (iteracja po SqlDataReader) 7.Zamknięcie połączenie informatyka +

29 29 Metoda na piechotę – ogólna koncepcja informatyka +

30 30 Metoda na piechotę – praktyczne rozwiązanie informatyka +

31 31 Metoda na piechotę – zwrócenie SqlDataReadera Parametr CommandBehavior.CloseConnection pozwala na zwrócenie obiektu SqlDataReader, który automatycznie zamknie połączenie z bazą gdy zostanie wykonana jego metoda Close(). informatyka +

32 32 Metoda na piechotę – korzystanie z parametrów zamiast parametrów można po prostu skleić fragmenty polecenia wplatając w odpowiednie miejsca wartości parametrów. Jest to jednak NIEBEZPIECZNE i może być wykorzystane do przeprowadzenia ataku typu SQL Injection korzystanie z parametrów eliminuje większość takich zagrożeń informatyka +

33 33 Metoda na piechotę – korzystanie z parametrów najwygodniej jest skorzystać z procedury składowanej można używać parametrów wejściowych, wyjściowych oraz korzystać z wartości zwracanej (return value) informatyka +

34 34 Metoda na piechotę – SchoolController informatyka +

35 35 Metoda na piechotę – aplikacja desktopowa Ilość kodu niezwiązanego z logiką aplikacji (obsługa zdarzeń, sterowanie zachowaniem kontrolek itp.) jest minimalna i sprowadza się do wywołania metody obiektu controller. Aplikacja nie ma i nie musi mieć żadnych informacji na temat sposobu uzyskania dostępu do bazy danych. informatyka +

36 36 Metoda na piechotę - podsumowanie Kod budowany w oparciu o stałe szablony Łatwo popełniać błędy Bez korzystania z procedur składowanych – silna zależność od struktury bazy i zapytań Wielokrotne powtarzanie tego samego kodu różniącego się niewielkimi fragmentami Korzystanie z tego sposobu niechybnie prowadzi do wniosku, że można by to nieco uprościć (poprzez tworzenie uogólnionych metod) informatyka +

37 37 Metoda na piechotę – podsumowanie cd. NIE TRZEBA JEDNAK TEGO ROBIĆ! Wielu ludzi wpadło na ten pomysł wcześniej i często udostępniają swoje wynalazki innym. Najlepiej jednak korzystać ze sprawdzonych, przemyślanych i dobrze udokumentowanych rozwiązań – jeżeli trafimy na problem, to istnieje spora szansa, że już ktoś się z nim spotkał i znalazł rozwiązanie. i nformatyka +

38 38 Metoda na piechotę – podsumowanie cd. Nie korzystaliśmy z klas DataSet, SqlDataAdapter, TableAdapter – są to rozwiązania opisane w każdej książce i najprostszym tutorialu dotyczącym dostępu do danych w.NET. Pozornie są one wygodne i szybko da się wyklikać w ten sposób gotowy mechanizm, ale szybko okazuje się, że jest on niezbyt wydajny, nadaje się tylko do typowych rozwiązań i trudno go modyfikować. informatyka +

39 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 39informatyka +

40 40 DAAB – koncepcja Źródło:Dokumentacja DAAB informatyka +

41 41 DAAB – tworzenie kodu dostępu do danych Typowy scenariusz komunikacji z bazą: 1.Utworzenie instancji klasy Database 2.Wywołanie metody utworzonej instancji Cechy rozwiązania: Nie trzeba martwic się o otwieranie i zamykanie połączeń Nie trzeba martwić się o definiowanie parametrów (czasem trzeba…) Zwięzły i czytelny kod Odporność na błędy – wbudowana obsługa Szczególnie wygodne rozwiązanie przy korzystaniu z procedur składowanych informatyka +

42 42 DAAB – tworzenie kodu dostępu do danych cd. informatyka + Przykładowy kod programu:

43 43 DAAB – konfigurowanie aplikacji DAAB można konfigurować za pomocą wygodnego narzędzia Otwiera się w nim plik konfiguracyjny aplikacji Po wyklikaniu konfiguracji narzędzie tworzy odpowiednie wpisy w pliku konfiguracyjnym aplikacji na podstawie tych wpisów klasa DatabaseFactory tworzy odpowiednie obiekty i konfiguruje je do komunikacji z właściwą bazą informatyka +

44 44 DAAB – konfigurowanie aplikacji cd. informatyka + Elementy konfigurowania

45 45 DAAB – konfigurowanie aplikacji cd. informatyka + Wygenerowany dokument XML

46 46 DAAB – zmiany w aplikacji Żeby skorzystać z nowej implementacji warstwy dostępu do danych wystarczy: dodać do aplikacji referencję do projektu zawierającego kod dostępu do danych zmodyfikować plik konfiguracyjny aplikacji za pomocą narzędzia Enterprise Library Configuration W klasie SchoolController zmodyfikować konstruktor informatyka +

47 47 DAAB – podsumowanie Znaczne uproszczenie kodu Poprawa wydajności Spójna obsługa błędów Wygodna konfiguracja Bogata dokumentacja i wsparcie informatyka +

48 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 48informatyka +

49 49 LINQ to SQL – wprowadzenie LINQ – Language Integrated Query Język zapytań zostaje wbudowany w języki programowania Programista nie martwi się szczegółami i niezależnie od źródła danych używa tej samej składni LINQ w celu budowania zapytań i manipulowania danymi Istnieje kilka wariantów LINQ przeznaczonych do współpracy z różnymi źródłami danych LINQ to SQL współpracuje TYLKO z SQL Server 2005 lub 2008 informatyka +

50 50 LINQ to SQL – architektura informatyka +

51 51 LINQ to SQL – korzystanie Podstawą przy pracy z LINQ to SQL jest stworzenie modelu: informatyka +

52 52 LINQ to SQL – korzystanie cd Tworzenie może odbywać się ręcznie lub za pomocą wygodnego narzędzia (designera) Praca z designerem sprowadza się do przeciągania i upuszczania obiektów z bazy (tabel, widoków, procedur składowanych i funkcji). Na tej podstawie zostaje wygenerowany kod klas odpowiadających tym obiektom Łatwo można modyfikować i rozszerzać zachowanie wygenerowanych klas Nie trzeba w kodzie aplikacji umieszczać żadnego kodu SQL! Nie trzeba tworzyć samodzielnie encji biznesowych (Student, Note, Subject…) informatyka +

53 53 LINQ to SQL – praca z modelem informatyka +

54 54 LINQ to SQL – praca z modelem Model utworzony z trzech tabel i jednej procedury składowanej informatyka +

55 55 LINQ to SQL – Model Relacje na modelu odpowiadają kluczom obcym i powodują tworzenie dodatkowych właściwości w wygenerowanych klasach. Np. klasa Student będzie miała właściwość StudentNotes informatyka +

56 56 LINQ to SQL – DataContext Efekt pracy z modelem – klasa DataContext Zawiera właściwości odpowiadające tabelom i widokom oraz metody odpowiadające procedurom i funkcjom informatyka +

57 57 LINQ to SQL – Encje (tabele i widoki) informatyka +

58 58 LINQ to SQL – klasa (odpowiednik IStudentNotesDB) informatyka +

59 59 LINQ to SQL – korzystanie w aplikacji informatyka +

60 60 LINQ to SQL – podsumowanie Korzystanie z LINQ to SQL pozwala uniknąć pisania sporej ilości kodu ( jest generowany automatycznie) Dotyczy to również pisania poleceń SQL Poprzez korzystanie z widoków, wyzwalaczy oraz funkcji i procedur składowanych można mieć w szczególnych przypadkach wpływ na postać poleceń wykonywanych przez bazę danych informatyka +

61 61 LINQ to SQL – podsumowanie cd. Można na tę postać wpływać także przez konfigurowanie właściwości klas modelu LINQ to SQL zapewnia wydajność na akceptowalnym poziomie i pozwala uniknąć wielu typowych błędów przy tworzeniu zapytań SQL. Zapewnia przyspieszenie procesu tworzenia kodu Działa tylko z SQL Server 2005 i 2008 :( informatyka +

62 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 62informatyka +

63 63 Inne rozwiązania Subsonic (http://subsonicproject.com )http://subsonicproject.com nHibernate (https://www.hibernate.org/343.html )https://www.hibernate.org/343.html ADO.NET Entity Framework (http://msdn.microsoft.com/en-us/library/bb aspx )http://msdn.microsoft.com/en-us/library/bb aspx informatyka +

64 Agenda Architektura aplikacji korzystających z baz danych Jaką architekturę wybrać i kiedy? Na co zwrócić uwagę, żeby później nie pluć sobie w brodę? Co oferuje.NET Framework w zakresie dostępu do danych? Planowanie i implementacja warstwy dostępu do danych Metoda na piechotę Data Access Application Block (Enterprise Library) LINQ to SQL mało?... krótki przegląd innych możliwości Podsumowanie i wnioski 64informatyka +

65 65 Podsumowanie Dokonaliśmy bardzo krótkiego i pobieżnego przeglądu technik organizowania dostępu do danych. Zaznaczyliśmy ich charakterystyczne cechy i różnice w koncepcjach Sprawdziliśmy w praktyce ich działanie Wymyślanie/korzystanie z rozwiązań dostępu do danych nie jest celem w samym sobie! informatyka +

66 66 Podsumowanie cd. Warstwa dostępu do danych jest tylko jednym z klocków wchodzących w skład aplikacji Ważne jest, żeby zdawać sobie sprawę z konsekwencji nieprzyłożenia właściwej wagi do sensownego zaplanowania architektury aplikacji Problemy pojawiają się nie przy tworzeniu, ale przy rozwijaniu i modyfikowaniu aplikacji. Właściwe podejście pozwala uniknąć tych problemów Warto sporo czytać na temat dobrych praktyk dotyczących planowania i tworzenia aplikacji informatyka +

67 67 Koniec Dziękuję za uwagę. …jakieś pytania? informatyka +

68


Pobierz ppt "Tworzenie interfejsów do bazy danych z wykorzystaniem technologii ADO.Net 2 informatyka +"

Podobne prezentacje


Reklamy Google