1 / 42

ASP.NET Dynamic Data

Jakub Binkowski. ASP.NET Dynamic Data. Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS. Cel prezentacji. Pokazać: co to jest Dynamic Data, jak zacząć pracę z DD, jak dostosować DD do własnych potrzeb, jak rozszerzać DD, architekturę DD,

lamya
Download Presentation

ASP.NET Dynamic Data

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. Jakub Binkowski ASP.NET Dynamic Data Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS

  2. Cel prezentacji Pokazać: • co to jest Dynamic Data, • jak zacząć pracę z DD, • jak dostosować DD do własnych potrzeb, • jak rozszerzać DD, • architekturę DD, • miejsce DD w poważnej inżynierii oprogramowania.

  3. Podstawowe zastosowania Czym jest ASP.NET Dynamic Data? Pierwsza dynamiczna aplikacja.

  4. Scaffolding ASP.NET Dynamic Data tworzy rusztowanie (ang. scaffolding) dla aplikacji.

  5. DEMOPierwsza aplikacja

  6. ASP.NET Dynamic Data • Generuje UI w ASP.NET na podstawie źródła danych • Wsparcie dla operacji CRUD • Pełne wsparcie dla technologii: • LINQ to SQL • Entity Framework • Interfejs generowany jest dynamicznie • Automatyczna walidacja na podstawie danych o polach

  7. Możliwości dostosowywania • Zmiana zachowania: • Ograniczanie widoczności do tabel i kolumn • Rozszerzanie metadanych kolumn • Zmiana UI (strony i kontrolki): • Modyfikacja szablonów • Specyficzne szablony dla różnych tabel • Specyficzne szablony w zależności od konfiguracji • Własne strony

  8. Dostosowywanie DD:Zmiana zachowania Rozszerzanie metadanych

  9. Jak dodawać metadane do modelu? • [Atrybuty] dopisywane do klas i pól encji Ale encje L2S i EF są generowane… • Encje L2S i EF są partial - rozszerzalność • Atrybut [MetadataType] – podpięcie zewnętrznej klasy z metadanymi

  10. Ograniczanie dostępności • [ScaffoldTable]Generowanie UI dla tabel: • widoczne wszystkie, oprócz wybranych • widoczne tylko wybrane • [ScaffoldColumn]Można wskazać, dla których pól będzie generowany UI • [Editable]Ograniczenie edytowalności niektórych pól • ang. scaffolding - rusztowanie

  11. DEMOOgraniczenie widoczności

  12. [Display] [Display(ShortName="Nazwa", Order=1, Name="Nazwa produktu", Description="Jak się produkt nazywa?", GroupName="Opis produktu", Prompt="Podaj nazwę...", AutoGenerateField=true, AutoGenerateFilter=false)] publicstring Name;

  13. DisplayFormat [DisplayFormat( DataFormatString="{0:C}", ApplyFormatInEditMode=false, ConvertEmptyStringToNull=true, HtmlEncode=true, NullDisplayText="wycofanozesprzedaży")] publicdecimalStandardCost;

  14. [DisplayColumn] Wyświetlana kolumna Kolumna, po której następuje sortowanie [DisplayColumn("Name", "ProductNumber")] partialclassProduct { }

  15. [DataType] [DataType(DataType.MultilineText)] publicstring Comments; • Custom • DateTime • Date • Time • Duration • PhoneNumber • Currency • Text • Html • MultilineText • EmailAddress • Password • Url • ImageUrl

  16. [EnumDataType] publicclassReview { [EnumDataType(typeof(Rating))] publicint Rating; } publicenumRating { Good = 5, Fine = 4, Average = 3, Bad = 2, Terrible = 1 }

  17. DEMOWizualizacja danych

  18. Walidacja • Atrybuty walidacyjne: • [CustomValidation] • [Range] • [RegularExpression] • [Required] • [StringLength] • [EnumDataType] • własny atrybut

  19. DEMOWalidacja

  20. Dostosowywanie DD:Zmiana wyglądu

  21. Struktura aplikacji • FieldTemplatesszablony prezentacji i edycji właściwości • EntityTemplatesszablony Show/Edit/Insert dla encji • PageTemplatesszablony stron • Filtersfiltry do przeszukiwania

  22. FieldTemplatesKontrolki prezentacji/edycji pola • UI dla poszczególnych kolumn • W folderze FieldTemplates: • Nazwa.ascx - prezenter • Nazwa_Edit.ascx - edytor • Użycie szablonu: [UIHint("Rating")] publicint Rating;

  23. DEMOFieldTemplates

  24. EntityTemplatesKontrolki dla encji • UI dla poszczególnych tabel • W folderze EntityTemplates: • Tabela.ascx - prezentacja • Tabela_Edit.ascx - edycja • Tabela_Insert.ascx - dodawanie • Tabela – nazwa EntitySet’u a nie klasy (!) np. „ProductReviews”

  25. PageTemplates i CustomPagesSzablony widoków • UI dla poszczególnych widoków • Domyślne szablony w PageTemplates: • Widok.aspx(List, Details, Insert, Edit, …) • Szczegółowe szablony dla tabel w:CustomPages/Tabela/*.aspxgdzie Tabela – nazwa EntitySet’u

  26. DEMOEntityTemplates i CustomPages

  27. FiltersWłasne filtry • UI dla przeszukiwania listy – filtrów • Folder Filters: • Nazwa.ascx • Użycie filtru: [Display(AutoGenerateFilter=true)] [FilterUIHint("Text")] publicstringName;

  28. DEMOFilters

  29. Architektura Dynamic Data Czyli jak to działa?

  30. Jak to możliwe? • http://server/Products/List.aspx

  31. 1) Baza, model, metamodel Baza danych Model danych Metamodel DataModelProvider

  32. 2) Routing routes.Add(newDynamicDataRoute("{table}/{action}.aspx") { Constraints = newRouteValueDictionary( new { action = "List|Details|Edit|Insert" }), Model = DefaultModel });

  33. Zadania Dynamic Data • Przechowywanie metadanych • Określenie tabeli i akcji(parametry z routingu) • Załadowanie odpowiedniej strony • Dynamic Data nie odpowiada za operacje na danych (pobieranie, modyfikacje, itp.)...A jeśli nie DD, to kto?

  34. DEMODziałanie Dynamic Data

  35. Podsumowanie

  36. Zalety • Gotowa aplikacja w mniej niż minutę • Automatyczna aktualizacji UI po zmianach • Szerokie możliwości dostosowywania • Ciekawa architektura

  37. Wady • Testowalność • Spłaszczenie architektury aplikacji • Pełne wsparcie tylko dla: • LINQ to SQL • Entity Framework

  38. Czy w idealnej architekturze jest miejsce na Dynamic Data? • Nie. • Ale czy ktoś widział kiedyś idealną architekturę?

  39. Zastosowania • Prototypowanie • Szybkie udostępnienie wersji 0.1 • Panel administracyjny

  40. Cel prezentacji Czy udało mi się pokazać: • co to jest Dynamic Data, • jak zacząć pracę z DD, • jak dostosować DD do własnych potrzeb, • jak rozszerzać DD, • architekturę DD, • miejsce DD w poważnej inżynierii oprogramowania?

  41. Czy mamy jeszcze czas?

  42. Dziękuję za uwagę

More Related