Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

ASP.NET Dynamic Data Jakub Binkowski Jakub Binkowski Visual C# MVP

Podobne prezentacje


Prezentacja na temat: "ASP.NET Dynamic Data Jakub Binkowski Jakub Binkowski Visual C# MVP"— Zapis prezentacji:

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ę


Pobierz ppt "ASP.NET Dynamic Data Jakub Binkowski Jakub Binkowski Visual C# MVP"

Podobne prezentacje


Reklamy Google