170 likes | 287 Views
UIP Application Block. Bartosz Rybak. Agenda. Kilka słów o problematyce Co to jest APPLICATION BLOCK Czemu UIP jest dobry Jak dokładnie to działa Czy są minusy. Trudne zadania w aplikacjach. Rozdzielenie kodu nawigacji od widoku Dostępność tablicy stanu (STATE)
E N D
UIP Application Block Bartosz Rybak
Agenda • Kilka słów o problematyce • Co to jest APPLICATION BLOCK • Czemu UIP jest dobry • Jak dokładnie to działa • Czy są minusy
Trudne zadania w aplikacjach • Rozdzielenie kodu nawigacji od widoku • Dostępność tablicy stanu (STATE) • Przechowywanie chwilowego stanu • Elastyczność i ponowne użycie
Building Blocks • Gotowe Rozwiązania • Komponenty • Klocki gotowe do ponownego użycia
Microsoft Building Blocks • Aggregation Application Block for .NET • Asynchronous Invocation Application Block for .NET • Authorization and Profile Application Block • Caching Application Block for .NET • Configuration Management Application Block for .NET • Data Access Application Block for .NET • Exception Management Application Block for .NET • Logging Application Block • Smart Client Offline Application Block • Updater Application Block for .NET • User Interface Process Application Block for .NET
Założenia UIP • Rozdzielenie Aplikacji na warstwy • Nawigacja oparta na TASKach • Ułatwione zarządzanie stanem • Możliwość przechowywania tzw „snapshots of state”
Jak UIP dzieli na warstwy • Klasyczne MVC
State Persistence Providers • IsolatedStoragePersistence • SecureIsolatedStoragePersistence • SqlServerPersistState • SecureSqlServerPersistState • SessionStatePersistence • MemoryStatePersistence
Jakie korzyści daje UIP • Odzielenie nawigacji i logiki od interfejsu • Możliwość użycia tego samego Modelu dla różnych typów aplikacji • Usunięcie zarządzania stanem z interfejsu • Snapshots
Jak to wszystko działa • View • Controller • Pliki konfiguracyjne
<navigationGraph iViewManager="WinFormViewManager" name="Shopping" state="State" statePersist="SqlServerPersistState" startView="cart"> <node view="cart"> <navigateTo navigateValue="resume"view="browsecatalog" /> <navigateTo navigateValue="checkout" view="checkout" /> <navigateTo navigateValue="fail" view="error" /> </node> <node view="browsecatalog"> <navigateTo navigateValue="addItem" view="cart"/> <navigateTo navigateValue="fail" view="error" /> </node> … </navigationGraph> Navigation Graphs
Nawigacja • Startowanie Taska (zależnie od navigatora) • StartNavigationTask • StartOpenNavigationTask • StartUserControlsTask • Navigowanie • State.NavigateValue = „back”; • Navigate();
Przesyłanie parametrów • TaskArgumentsHolder • EnterTask()
Minusy niestety są • Uzależnienie od dostawcy Bloku • Konieczność stosowania się do założeń Bloku lub czasochłonna przebudowa (nadbudowa) • Pliki konfiguracyjne!!!!
Podsumowanie • Korzyści bardzo zależą od umiejętności wykorzystania. • Istnieje ryzyko uzależnienia się • Możliwe jest przyspieszenie procesu produkcyjnego • Możliwe też jest jego drastyczne spowolnienie
Podsumowanie c.d. • Pliki konfiguracyjne nie są częścią kodu • Wspomaga podział oprogramowania na warstwy • Bardzo zwiększa elastyczność i reużywalność kodu.