1 / 68

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

Tworzenie interfejsów do bazy danych z wykorzystaniem technologii ADO.Net. Obiektowe spojrzenie na bazę danych. Baza danych. Obiekt „BazaDanych”. Model logiczny bazy danych. Atrybuty obiektu. Procedury składowane. Metody obiektu. Wykonane. Interfejs „Form”.

tamra
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Obiektowe spojrzenie na bazę danych Baza danych Obiekt „BazaDanych” Model logiczny bazy danych Atrybuty obiektu Procedury składowane Metody obiektu

  3. Wykonane Interfejs „Form” Wykonaj przelew z konta A na konto B SQLServer Środowisko śieciowe 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

  4. A teraz inne podejście ????????????

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

  6. Dostęp do baz danych(.NET Framework 3.5) informatyka +

  7. 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 ;-) informatyka +

  8. 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 informatyka +

  9. 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 “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ą ?" informatyka +

  10. 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 informatyka +

  11. 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 WYMAGANIE: „Ma zapewnić ochronę przed deszczem” Który wariant wybrać ??? informatyka +

  12. Architektura aplikacji c.d. • Skupmy się na typowej, prostej architekturze warstwowej informatyka +

  13. 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 informatyka +

  14. 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ę informatyka +

  15. 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 informatyka +

  16. 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 informatyka +

  17. 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 informatyka +

  18. 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: Dzienniczek Ucznia informatyka +

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

  20. 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 +

  21. Warstwa prezentacji informatyka +

  22. Warstwa biznesowa informatyka +

  23. Klasy warstwy biznesowej informatyka +

  24. 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 +

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

  26. 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 informatyka +

  27. Metoda „na piechotę” Komunikacja z baza danych (typowy scenariusz): Utworzenie połączenia z bazą (SqlConnection) Utworzenie polecenia do wykonania (SqlCommand) Otwarcie połączenia Wykonanie polecenia (ExecuteReader(), ExecuteScalar(), ExecutenonQuery()) Przetworzenie wyników (iteracja po SqlDataReader) Zamknięcie połączenie informatyka +

  28. Metoda „na piechotę” – ogólna koncepcja informatyka +

  29. Metoda „na piechotę” – praktyczne rozwiązanie informatyka +

  30. 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 +

  31. 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 +

  32. 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 +

  33. Metoda „na piechotę” – SchoolController informatyka +

  34. 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 +

  35. 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 +

  36. 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. informatyka +

  37. 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 +

  38. 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 informatyka +

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

  40. DAAB – tworzenie kodu dostępu do danych • Typowy scenariusz komunikacji z bazą: • Utworzenie instancji klasy Database • 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 +

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

  42. 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 +

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

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

  45. 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 +

  46. DAAB – podsumowanie • Znaczne uproszczenie kodu • Poprawa wydajności • Spójna obsługa błędów • Wygodna konfiguracja • Bogata dokumentacja i wsparcie • http://msdn.microsoft.com/en-us/library/cc467894.aspx informatyka +

  47. 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 informatyka +

  48. 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 +

  49. LINQ to SQL – architektura informatyka +

More Related