Wczoraj (tj. 06.05.2009) pojawił się nowy preview - Preview 4 bibliotek CRUD dla ASP.NET, a więc Dynamic Data. W moim moralnym obowiazku jako fana DD znajduje się w związku z tym opisanie nowego release’u. Ten post zapoczątkuje serię na temat Dynamic Data, w wersji aktualnej, a później Futures, tak aby przekonać programistów ASP.NET, że Dynamic Data nie gryzie.
Do kogo jest skierowany ten post?
Głównie do ludzi, którym Dynamic Data się przyda. Więc raczej nie do tych, którzy pracują nad projektami klasy Enterprise, potężnymi aplikacjami wymagającymi sporej skalowalności, a do tych, którzy pracują nad projektami mniejszymi, zwłaszcza tymi które nie wymagają szczególnej szybkości działania, czy skalowalności. Wynika to przede wszystkim z faktu, że DD nie jest szczególnie szybkie. Warto wspomnieć, iż DD jest z samej nazwy dynamiczne i to powoduje, że przy każdym request’cie snuje się za nami Reflection wczytujące z klas zarządzających danymi model. Reszta już w miarę działa, ale Reflection niestety jest poważnym obciążeniem dla serwera. Wniosek prosty: Jeśli chcesz sprawdzic, czy to jest dla Ciebie – zrób sobie benchmark. Ściągnij release z Codeplex, a następnie w global.asax z wybranego projektu podmień klasę modelu na swój model. Jeśli prędkość Cię zadowoli wróć tutaj, bo tu znajdziesz sporo ciekawych informacji o DD.
Nowy preview Dynamic Data – i co z tego?
Ano, parę ciekawych usprawnień – weźmy np. nowy, superprzyspieszony sposób rejestrowania modelu – przykład skradziony z samples.
Szybko wrzucamy na stronę GridView:
5 <html xmlns="http://www.w3.org/1999/xhtml" >
6 <head runat="server">
7 <title></title>
8 </head>
9 <body>
10 <form id="form1" runat="server">
11 <div>
12
13 <asp:GridView ID="GridView1" runat="server" AutoGenerateEditButton="true"
14 onrowcancelingedit="GridView1_RowCancelingEdit"
15 onrowediting="GridView1_RowEditing" onrowupdating="GridView1_RowUpdating">
16 </asp:GridView>
17
18 </div>
19 </form>
20 </body>
21 </html>
W kodziku:
7 public partial class DataTableSample : System.Web.UI.Page {
8 DataTable dataTable;
9 protected void Page_Init() {
10 // Get DataTable
11 dataTable = Products.GetProductsTable();
12
13 // Add some metadata
14 var productNameMd = dataTable.Columns["ProductName"].ExtendedProperties;
15 productNameMd["Required"] = true;
16 productNameMd["UIHint"] = "FooBar";
17
18 GridView1.EnableDynamicData(dataTable);
19 }
20
21 protected override void OnPreRender(EventArgs e) {
22 GridView1.DataSource = dataTable;
23 GridView1.DataBind();
24 base.OnPreRender(e);
25 }
26
27 protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) {
28 GridView1.EditIndex = e.NewEditIndex;
29 }
30
31 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) {
32
33 }
34
35 protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) {
36
37 }
38 }
39 }
A za darmo dostajemy coś takiego:
Mamy tu inline editing, walidację po stronie serwera i klienta, możliwość customizowania wyglądu i parę innych bajerów, o których napiszę wkrótce. Ale generalnie – mamy to wszystko przy pomocy jednej linii kodu ( GridView1.EnableDynamicData(dataTable); ), bo reszta to zwykłe bindowanie danych do GridView i dodanie prostej walidacji (to powinno było zostać wykonane w modelu). Zobacz przykład SimpleDynamicDataSamples, a poczujesz o co chodzi. A chodzi tu o coś, co uczyniłoby z DD niesamowitą platformę CRUD już teraz, gdyby nie błędny sposób reklamowania jej przez twórców.
Podoba mi się to!
Mi też się podoba – możesz więc tak jak ja zacząć z tego korzystać tak szybko, jak to możliwe. Ale jeszcze poświeć chwilę – zrób benchmark i sprawdź czy DD nie jest za wolne dla Ciebie – jeśli nie, to witaj w gronie szczęśliwych użytkowników Dynamic Data.
I to wszystko tak po prostu?
Niestety nie, życie byłoby wtedy za łatwe – na te bajery musisz poczekać do .Net 4.0, bo po zobaczeniu tego na pewno nie wystarczy Ci to, co jest dostępne dziś – ale zawsze możesz spróbować.
Wymagania
Dla dzisiejszej platformy i dla Futures .Net 3.5 SP1 i Full Trust, dla finalnej to na 90% będzie .Net 4.0 i Full Trust environment.
Spójrz tu w wolnym czasie
Strona Microsoftu o Dynamic Data
Na blogu Scotta Huntera o Preview 4
Thursday, May 07, 2009 6:35 PM