Architektura zorientowana na interakcje
Podstawowym celem architektury zorientowanej na interakcję jest oddzielenie interakcji użytkownika od abstrakcji i przetwarzania danych biznesowych. Architektura oprogramowania zorientowana na interakcję rozkłada system na trzy główne partycje -
Data module - Moduł danych zapewnia abstrakcję danych i całą logikę biznesową.
Control module - Moduł sterujący identyfikuje przepływ działań kontrolnych i konfiguracyjnych systemu.
View presentation module - Moduł prezentacji widoku jest odpowiedzialny za wizualną lub dźwiękową prezentację danych wyjściowych, a także zapewnia interfejs do wprowadzania danych przez użytkownika.
Architektura zorientowana na interakcję ma dwa główne style - Model-View-Controller (MVC) i Presentation-Abstraction-Control(PAC). Zarówno MVC, jak i PAC proponują dekompozycję trzech komponentów i są używane w aplikacjach interaktywnych, takich jak aplikacje internetowe z wieloma rozmowami i interakcjami użytkownika. Różnią się przepływem kontroli i organizacją. PAC jest hierarchiczną architekturą opartą na agentach, ale MVC nie ma jasnej hierarchicznej struktury.
Kontroler widoku modelu (MVC)
MVC rozkłada daną aplikację na trzy połączone ze sobą części, które pomagają w oddzieleniu wewnętrznej reprezentacji informacji od informacji przedstawionych użytkownikowi lub zaakceptowanych przez użytkownika.
Moduł | Funkcjonować |
---|---|
Model | Hermetyzacja danych i logiki biznesowej |
Kontroler | Reaguj na działanie użytkownika i kieruj przepływem aplikacji |
Widok | Formatuje i przedstawia dane z modelu użytkownikowi. |
Model
Model jest centralnym komponentem MVC, który bezpośrednio zarządza danymi, logiką i ograniczeniami aplikacji. Składa się z komponentów danych, które utrzymują surowe dane aplikacji i logikę aplikacji dla interfejsu.
Jest to niezależny interfejs użytkownika i rejestruje zachowanie domeny, w której występują problemy z aplikacjami.
Jest to specyficzna dla domeny symulacja oprogramowania lub implementacja centralnej struktury aplikacji.
Gdy nastąpiła zmiana w jego stanie, wysyła powiadomienie do skojarzonego z nim widoku, aby wygenerować zaktualizowane wyjście, a sterownik do zmiany dostępnego zestawu poleceń.
Widok
Widok może służyć do przedstawiania dowolnych danych wyjściowych w formie graficznej, takiej jak diagram lub wykres. Składa się z komponentów prezentacji, które zapewniają wizualną reprezentację danych
Widoki żądają informacji ze swojego modelu i generują reprezentację wyjściową dla użytkownika.
Możliwych jest wiele widoków tych samych informacji, takich jak wykres słupkowy do zarządzania i widok tabelaryczny dla księgowych.
Kontroler
Kontroler akceptuje dane wejściowe i konwertuje je na polecenia dla modelu lub widoku. Składa się z komponentów przetwarzania danych wejściowych, które obsługują dane wejściowe od użytkownika poprzez modyfikację modelu.
Działa jako interfejs między skojarzonymi modelami i widokami a urządzeniami wejściowymi.
Może wysyłać polecenia do modelu, aby zaktualizować stan modelu i do skojarzonego z nim widoku, aby zmienić prezentację modelu w widoku.
MVC - I
Jest to prosta wersja architektury MVC, w której system jest podzielony na dwa podsystemy -
The Controller-View - Widok kontrolera działa jako interfejs wejścia / wyjścia i przetwarzanie jest zakończone.
The Model - Model zapewnia wszystkie usługi związane z danymi i domeną.
MVC-I Architecture
Moduł modelu powiadamia moduł widoku sterownika o wszelkich zmianach danych, dzięki czemu wszelkie wyświetlane dane graficzne zostaną odpowiednio zmienione. Administrator podejmuje również odpowiednie działania w przypadku zmian.
Połączenie między widokiem kontrolera a modelem można zaprojektować według wzoru (jak pokazano na powyższym obrazku) powiadomienia o subskrypcji, w którym widok kontrolera subskrybuje model, a model powiadamia widok kontrolera o wszelkich zmianach.
MVC - II
MVC-II jest rozszerzeniem architektury MVC-I, w której moduł widoku i moduł kontrolera są oddzielne. Moduł modelowy odgrywa aktywną rolę, podobnie jak w MVC-I, zapewniając wszystkie podstawowe funkcje i dane obsługiwane przez bazę danych.
Moduł widoku prezentuje dane, podczas gdy moduł kontrolera przyjmuje żądanie wejścia, weryfikuje dane wejściowe, inicjuje model, widok, ich połączenie, a także wysyła zadanie.
MVC-II Architecture
Aplikacje MVC
Aplikacje MVC są efektywne w przypadku aplikacji interaktywnych, w których dla jednego modelu danych potrzeba wielu widoków i można je łatwo podłączyć do nowego lub zmienić widok interfejsu.
Aplikacje MVC są odpowiednie dla aplikacji, w których istnieją wyraźne podziały między modułami, dzięki czemu można przypisać różnych specjalistów do jednoczesnej pracy nad różnymi aspektami takich aplikacji.
Advantages
Dostępnych jest wiele zestawów narzędzi dla dostawców MVC.
Wiele widoków zsynchronizowanych z tym samym modelem danych.
Łatwe do podłączenia nowe lub zastąpienia widoków interfejsu.
Służy do tworzenia aplikacji, w których specjaliści od grafiki, specjaliści od programowania i specjaliści ds. Rozwoju baz danych pracują w zaprojektowanym zespole projektowym.
Disadvantages
Nie nadaje się do aplikacji zorientowanych na agentów, takich jak interaktywne aplikacje mobilne i robotyka.
Wiele par kontrolerów i widoków opartych na tym samym modelu danych powoduje, że każda zmiana modelu danych jest kosztowna.
W niektórych przypadkach podział między View a Controller nie jest jasny.
Kontrola prezentacji-abstrakcji (PAC)
W PAC system jest zorganizowany w hierarchię wielu współpracujących agentów (triad). Został opracowany z MVC w celu obsługi wymagań aplikacji wielu agentów, oprócz wymagań interaktywnych.
Każdy agent składa się z trzech elementów -
The presentation component - Formatuje wizualną i dźwiękową prezentację danych.
The abstraction component - Pobiera i przetwarza dane.
The control component - Obsługuje zadania, takie jak przepływ kontroli i komunikacja między pozostałymi dwoma komponentami.
Architektura PAC jest podobna do MVC, w tym sensie, że moduł prezentacji jest podobny do modułu widoku MVC. Moduł abstrakcji wygląda jak moduł modelowy MVC, a moduł sterujący jest podobny do modułu kontrolera MVC, ale różnią się przepływem kontroli i organizacją.
W każdym agencie nie ma bezpośrednich połączeń między komponentem abstrakcji a komponentem prezentacji. Komponent kontrolny w każdym agencie odpowiada za komunikację z innymi agentami.
Poniższy rysunek przedstawia schemat blokowy pojedynczego agenta w projekcie PAC.
PAC z wieloma agentami
W poświadczeniach dostępu zabezpieczonego składających się z wielu agentów agent najwyższego poziomu zapewnia podstawowe dane i logikę biznesową. Agenci najniższego poziomu definiują szczegółowe dane i prezentacje. Agent średniego lub średniego szczebla działa jako koordynator agentów niskiego poziomu.
Każdy agent ma swoje przypisane zadanie.
W przypadku niektórych agentów średniego poziomu prezentacje interaktywne nie są wymagane, więc nie mają komponentu prezentacji.
Komponent kontrolny jest wymagany dla wszystkich agentów, za pośrednictwem których wszyscy agenci komunikują się ze sobą.
Poniższy rysunek przedstawia wielu agentów biorących udział w PAC.
Applications
Skuteczny w przypadku systemu interaktywnego, w którym system można rozłożyć na wiele współpracujących agentów w sposób hierarchiczny.
Skuteczny, gdy oczekuje się, że sprzężenie między czynnikami będzie luźne, aby zmiany w czynniku nie wpływały na innych.
Skuteczny dla systemów rozproszonych, w których wszyscy agenci są zdalnie rozproszeni, a każdy z nich ma własne funkcjonalności z danymi i interaktywnym interfejsem.
Nadaje się do aplikacji z bogatymi komponentami GUI, w których każdy z nich przechowuje własne bieżące dane i interaktywny interfejs oraz musi komunikować się z innymi komponentami.
Zalety
Obsługa wielozadaniowości i wielu widoków
Obsługa możliwości ponownego użycia i rozszerzania agentów
Łatwo podłączyć nowego agenta lub zmienić istniejącego
Obsługa współbieżności, w której wielu agentów działa równolegle w różnych wątkach lub na różnych urządzeniach lub komputerach
Niedogodności
Koszty ogólne wynikające z pomostu kontrolnego między prezentacją a abstrakcją oraz komunikacją kontroli między agentami.
Trudno jest określić właściwą liczbę agentów ze względu na luźne powiązania i dużą niezależność między agentami.
Całkowite oddzielenie prezentacji i abstrakcji przez kontrolę w każdym agencie generuje złożoność programowania, ponieważ komunikacja między agentami odbywa się tylko między kontrolkami agentów