Komunikacja pomiędzy luźno powiązanymi komponentami Mateusz Sionkowski.

1 Komunikacja pomiędzy luźno powiązanymi komponentami Mat...
Author: Witold Pluta
0 downloads 0 Views

1 Komunikacja pomiędzy luźno powiązanymi komponentami Mateusz Sionkowski

2

3 Modułowość Modułowość w przypadku dużych projektów Buduje się osobne, względnie samodzielne moduły Między modułami zachodzi komunikacja Komunikacja ta nie powinna być zorganizowana przez statyczne referencje

4 Luźne powiązania Są wymuszone przez występowanie kilku projektów w jednym assembly Ułatwiają testowanie aplikacji

5 Luźne powiązania w Prism Solution commanding Region context Shared services Event aggregation

6 Solution Commanding Stosowane głównie w przypadku odpowiedzi na akcję użytkownika – np. kliknięcie WPF stosuje RoutedCommand, które jest ograniczone jedynie do aktywnych elementów Jeśli musimy nawiązać kontakt z niepowiązanymi i nieaktywnymi elementami stosuje się DelegateCommand i CompositeCommand. Pozwala to na obsługiwanie zdarzenia np. w ViewModelu nieprzypisanym do danego widoku

7 Solution Commanding Wykorzystywane głownie do komunikacji wewnątrz modułów, lecz możliwe jest zawarcie DelegateCommand lub CompositeCommand w Shell’u komend o znaczeniu wspólnym dla całej aplikacji

8 Delegate Command private readonly ICommand command; command = new DelegateCommand(metoda);

9 Composite Command private readonly CompositeCommand saveAllCommand; this.saveAllCommand = new CompositeCommand(); saveAllCommand.RegisterCommand(new SaveProductsCommand()); saveAllCommand.RegisterCommand(new SaveOrdersCommand());

10 Region Context

11 Prism wykorzystuje RegionContext do udostępniania obiektów pomiędzy hostem regionu a wszystkimi widokami wewnątrz regionu RegionContext można zawiązać zarówno w XAML jak i w kodzie a konsumpcja RegionContext zachodzi w widoku.

12 Shared Services Inne podejście do komunikacji między modułami Moduły mogą podłączać swoje usługi do mechanizmu ServiceLocator. Obiekt wymieniany jest zwykle poprzez interfejsy znane dla obu stron

13 Event Aggregation Prism posiada mechanizm wymiany informacji poprzez zdarzenia nadal unikając sztywnych powiązań EventAgregator to system elementów publikujących (publisher) i pobierających (subscriber) informacje Rozwiązanie jest o tyle elastyczne, że daną informację może pobierać wiele odbiorców jak i nadawana może być przez różnych nadawców

14 Event Aggregator

15 Tworzenie nowego zdarzenia public class PubSubEvent : EventBase

16 Rozgłoszenie nowego zdarzenia eventAggregator.GetEvent ().Publish("STOCK0");

17 Subskrypcja do zdarzenia eventAggregator.GetEvent ().Subscribe(metoda);