Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS.

Podobne prezentacje


Prezentacja na temat: "Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS."— Zapis prezentacji:

1 Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS

2 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 Czym jest ASP.NET Dynamic Data? Pierwsza dynamiczna aplikacja.

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

5

6 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 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 Rozszerzanie metadanych

9 [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 [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

12 [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( DataFormatString="{0:C}", ApplyFormatInEditMode=false, ConvertEmptyStringToNull=true, HtmlEncode=true, NullDisplayText="wycofano ze sprzedaży")] public decimal StandardCost;

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

15 [DataType(DataType.MultilineText)] public string Comments; Custom DateTime Date Time Duration PhoneNumber Currency Text Html MultilineText Address Password Url ImageUrl

16 public class Review { [EnumDataType(typeof(Rating))] public int Rating; } public enum Rating { Good = 5, Fine = 4, Average = 3, Bad = 2, Terrible = 1 }

17

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

19

20 Walidację można odpalić niezależnie od DD Klasa Validator : ( System.ComponentModel.DataAnnotations ) ValidateObject / TryValidateObject ValidateProperty / TryValidateProperty ValidateValue / TryValidateValue

21

22 FieldTemplates szablony prezentacji i edycji właściwości EntityTemplates szablony Show/Edit/Insert dla encji PageTemplates szablony stron Filters filtry do przeszukiwania

23 UI dla poszczególnych kolumn W folderze FieldTemplates: Nazwa.ascx - prezenter Nazwa_Edit.ascx - edytor Użycie szablonu: [UIHint("Rating")] public int Rating;

24

25 UI dla poszczególnych tabel W folderze EntityTemplates: Tabela.ascx - prezentacja Tabela_Edit.ascx - edycja Tabela_Insert.ascx - dodawanie Tabela – nazwa EntitySetu a nie klasy (!) np. ProductReviews

26 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 EntitySetu

27

28 UI dla przeszukiwania listy – filtrów Folder Filters: Nazwa.ascx Użycie filtru: [Display(AutoGenerateFilter=true)] [FilterUIHint("Text")] public string Name;

29

30 Czyli jak to działa?

31

32 Baza danych MetamodelModel danych DataModelProvider

33 routes.Add(new DynamicDataRoute("{table}/{action}.aspx") { Constraints = new RouteValueDictionary( new { action = "List|Details|Edit|Insert" }), Model = DefaultModel });

34 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

36

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

38 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 Prototypowanie Szybkie udostępnienie wersji 0.1 Panel administracyjny

41 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

43


Pobierz ppt "Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS."

Podobne prezentacje


Reklamy Google