ASP.NET Dynamic Data

42
ASP.NET Dynamic Data Jakub Binkowski Jakub Binkowski Visual C# MVP Webstruments.pl / webEFS

description

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, - PowerPoint PPT Presentation

Transcript of ASP.NET Dynamic Data

Page 1: ASP.NET  Dynamic  Data

ASP.NET Dynamic DataJakub Binkowski

Jakub BinkowskiVisual C# MVPWebstruments.pl / webEFS

Page 2: ASP.NET  Dynamic  Data

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.

Page 3: ASP.NET  Dynamic  Data

Podstawowe zastosowaniaCzym jest ASP.NET Dynamic Data? Pierwsza dynamiczna aplikacja.

Page 4: ASP.NET  Dynamic  Data

Scaffolding

ASP.NET Dynamic Data tworzy rusztowanie (ang.

scaffolding) dla aplikacji.

Page 5: ASP.NET  Dynamic  Data

DEMOPierwsza aplikacja

Page 6: ASP.NET  Dynamic  Data

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

Page 7: ASP.NET  Dynamic  Data

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

Page 8: ASP.NET  Dynamic  Data

Dostosowywanie DD:Zmiana zachowaniaRozszerzanie metadanych

Page 9: ASP.NET  Dynamic  Data

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

Page 10: ASP.NET  Dynamic  Data

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

Page 11: ASP.NET  Dynamic  Data

DEMOOgraniczenie widoczności

Page 12: ASP.NET  Dynamic  Data

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

Page 13: ASP.NET  Dynamic  Data

DisplayFormat

[DisplayFormat( DataFormatString="{0:C}", ApplyFormatInEditMode=false, ConvertEmptyStringToNull=true, HtmlEncode=true, NullDisplayText="wycofano ze sprzedaży")]public decimal StandardCost;

Page 14: ASP.NET  Dynamic  Data

[DisplayColumn]

[DisplayColumn("Name", "ProductNumber")]partial class Product{}

Wyświetlana kolumna

Kolumna, po której następuje sortowanie

Page 15: ASP.NET  Dynamic  Data

[DataType]

[DataType(DataType.MultilineText)]public string Comments;

Custom DateTime Date Time Duration PhoneNumber Currency Text Html MultilineText EmailAddress Password Url ImageUrl

Page 16: ASP.NET  Dynamic  Data

[EnumDataType]

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

Page 17: ASP.NET  Dynamic  Data

DEMOWizualizacja danych

Page 18: ASP.NET  Dynamic  Data

Walidacja

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

Page 19: ASP.NET  Dynamic  Data

DEMOWalidacja

Page 20: ASP.NET  Dynamic  Data

Dostosowywanie DD:Zmiana wyglądu

Page 21: ASP.NET  Dynamic  Data

Struktura aplikacji

FieldTemplatesszablony prezentacji i edycji właściwości

EntityTemplatesszablony Show/Edit/Insert dla encji

PageTemplatesszablony stron

Filtersfiltry do przeszukiwania

Page 22: ASP.NET  Dynamic  Data

FieldTemplatesKontrolki 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;

Page 23: ASP.NET  Dynamic  Data

DEMOFieldTemplates

Page 24: ASP.NET  Dynamic  Data

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”

Page 25: ASP.NET  Dynamic  Data

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

Page 26: ASP.NET  Dynamic  Data

DEMOEntityTemplates i CustomPages

Page 27: ASP.NET  Dynamic  Data

FiltersWłasne filtry

UI dla przeszukiwania listy – filtrów

Folder Filters: Nazwa.ascx

Użycie filtru:[Display(AutoGenerateFilter=true)]

[FilterUIHint("Text")]

public string Name;

Page 28: ASP.NET  Dynamic  Data

DEMOFilters

Page 29: ASP.NET  Dynamic  Data

Architektura Dynamic DataCzyli jak to działa?

Page 30: ASP.NET  Dynamic  Data

Jak to możliwe?

http://server/Products/List.aspx

Page 31: ASP.NET  Dynamic  Data

1) Baza, model, metamodel

Baza danych

Metamodel

Product (Production)ProductID

Name

ProductNumber

MakeFlag

FinishedGoodsFlag

Color

SafetyStockLevel

ReorderPoint

StandardCost

ListPrice

Size

ProductCategory (Production)ProductCategoryID

Name

rowguid

ModifiedDate

ProductSubcategory (Production)ProductSubcategoryID

ProductCategoryID

Name

rowguid

ModifiedDate

Model danych

DataModelProvider

Page 32: ASP.NET  Dynamic  Data

2) Routing

routes.Add(new DynamicDataRoute("{table}/{action}.aspx")

{ Constraints = new RouteValueDictionary( new { action = "List|Details|Edit|

Insert" }), Model = DefaultModel});

Page 33: ASP.NET  Dynamic  Data

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?

Page 34: ASP.NET  Dynamic  Data

DEMODziałanie Dynamic Data

Page 35: ASP.NET  Dynamic  Data

Podsumowanie

Page 36: ASP.NET  Dynamic  Data

Zalety

Gotowa aplikacja w mniej niż minutę Automatyczna aktualizacji UI po

zmianach Szerokie możliwości dostosowywania Ciekawa architektura

Page 37: ASP.NET  Dynamic  Data

Wady

Testowalność Spłaszczenie architektury aplikacji Pełne wsparcie tylko dla:

LINQ to SQL Entity Framework

Page 38: ASP.NET  Dynamic  Data

Czy w idealnej architekturze jest miejsce na Dynamic Data?

Nie.

Ale czy ktoś widział kiedyś idealną architekturę?

Page 39: ASP.NET  Dynamic  Data

Zastosowania

Prototypowanie

Szybkie udostępnienie wersji 0.1

Panel administracyjny

Page 40: ASP.NET  Dynamic  Data

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?

Page 41: ASP.NET  Dynamic  Data

Czy mamy jeszcze czas?

Page 42: ASP.NET  Dynamic  Data

Dziękuję za uwagę