Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałWiktoria Gołek Został zmieniony 10 lat temu
1
ASP.NET Dynamic Data Jakub Binkowski 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
DEMO Pierwsza 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
DEMO Ograniczenie 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)] public string Name;
13
DisplayFormat [DisplayFormat( DataFormatString="{0:C}", ApplyFormatInEditMode=false, ConvertEmptyStringToNull=true, HtmlEncode=true, NullDisplayText="wycofano ze sprzedaży")] public decimal StandardCost;
14
[DisplayColumn] Wyświetlana kolumna Kolumna, po której następuje sortowanie [DisplayColumn("Name", "ProductNumber")] partial class Product { }
15
[DataType] Custom DateTime Date Time Duration PhoneNumber Currency
[DataType(DataType.MultilineText)] public string Comments; Custom DateTime Date Time Duration PhoneNumber Currency Text Html MultilineText Address Password Url ImageUrl
16
[EnumDataType] public class Review { [EnumDataType(typeof(Rating))] public int Rating; } public enum Rating Good = 5, Fine = 4, Average = 3, Bad = 2, Terrible = 1
17
DEMO Wizualizacja danych
18
Walidacja Atrybuty walidacyjne: [CustomValidation] [Range]
[RegularExpression] [Required] [StringLength] [EnumDataType] własny atrybut
19
DEMO Walidacja
20
Walidacja spoza DD Walidację można odpalić niezależnie od DD
Klasa Validator: (System.ComponentModel.DataAnnotations) ValidateObject / TryValidateObject ValidateProperty / TryValidateProperty ValidateValue / TryValidateValue
21
Dostosowywanie DD: Zmiana wyglądu
22
Struktura aplikacji FieldTemplates szablony prezentacji i edycji właściwości EntityTemplates szablony Show/Edit/Insert dla encji PageTemplates szablony stron Filters filtry do przeszukiwania
23
FieldTemplates Kontrolki prezentacji/edycji pola
UI dla poszczególnych kolumn W folderze FieldTemplates: Nazwa.ascx - prezenter Nazwa_Edit.ascx - edytor Użycie szablonu: [UIHint("Rating")] public int Rating;
24
DEMO FieldTemplates
25
EntityTemplates Kontrolki 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”
26
PageTemplates i CustomPages Szablony 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/*.aspx gdzie Tabela – nazwa EntitySet’u
27
DEMO EntityTemplates i CustomPages
28
Filters Własne filtry UI dla przeszukiwania listy – filtrów
Folder Filters: Nazwa.ascx Użycie filtru: [Display(AutoGenerateFilter=true)] [FilterUIHint("Text")] public string Name;
29
DEMO Filters
30
Architektura Dynamic Data
Czyli jak to działa?
31
Jak to możliwe?
32
1) Baza, model, metamodel Baza danych Model danych Metamodel
DataModelProvider
33
2) Routing routes.Add(new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary( new { action = "List|Details|Edit|Insert" }), Model = DefaultModel });
34
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?
35
DEMO Działanie Dynamic Data
36
Podsumowanie
37
Zalety Gotowa aplikacja w mniej niż minutę
Automatyczna aktualizacji UI po zmianach Szerokie możliwości dostosowywania Ciekawa architektura
38
Wady Testowalność Spłaszczenie architektury aplikacji
Pełne wsparcie tylko dla: LINQ to SQL Entity Framework
39
Czy w idealnej architekturze jest miejsce na Dynamic Data?
Nie. Ale czy ktoś widział kiedyś idealną architekturę?
40
Zastosowania Prototypowanie Szybkie udostępnienie wersji 0.1
Panel administracyjny
41
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?
42
Czy mamy jeszcze czas?
43
Dziękuję za uwagę
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.