Zastanawiałeś/aś się kiedyś jak są zaprojektowane systemy w projektach na dużą skalę? Zanim rozpocznie się złożony proces wytwórczy oprogramowania, trzeba dokonać wyboru odpowiedniej architektury - takiej, która przewiduje funkcjonalności, na których nam zależy, o odpowiednich właściwościach. Dlatego też ważna jest znajomość różnych wzorców.
Idąc za Wikipedią:
Wzorzec architektoniczny to uznany i sprawdzony sposób rozwiązania często występujących problemów z zakresu architektury oprogramowania. Koncepcja wzorców architektonicznych jest zbliżona do idei wzorców projektowych, ale jej zakres jest szerszy.
Skupię się na poniższych dziesięciu często stosowanych wzorcach architektonicznych (patterns). Wyjaśnię, na czym polegają i kiedy się je stosuje.
Wzorzec architektury warstwowej stosowany przy organizacji programów, które można podzielić na zespoły podzadań o indywidualnym poziomie abstrakcji. Każda warstwa obsługuje następną, wyższą.
Oto cztery najczęściej spotykane warstwy ogólnych systemów informatycznych:
Ten wzorzec składa się z serwera i wielu klientów, które korzystają z jego usług. Programy serwera spełniają żądania klientów.
Ten wzorzec składa się z jednostki nadrzędnej (master) i podrzędnych (slaves). Ta nadrzędna dystrybuuje pracę pośród identycznych jednostek podrzędnych i oblicza końcowy rezultat bazując na wynikach zwróconych przez slaves.
Pipe-filter pattern (pl. architekturę filtrów i potoków) można wykorzystywać do organizacji systemów, które wytwarzają i przetwarzają strumień danych. Każdy etap przetwarzania mieści się w komponencie filter (filtr). Dane do przetworzenia przechodzą przez pipes (potoki) - które mogą służyć do buforowania lub synchronizacji.
Wzorca używa się, by organizować systemy rozproszone o oddzielonych komponentach, które mogą oddziaływać na siebie na odległość. Komponent broker koordynuje komunikację pomiędzy nimi.
Serwery komunikują komponentowi broker swoje usługi i cechy charakterystyczne. Broker otrzymuje też żądania klientów, a następnie przekierowuje klientów do odpowiedniej usługi ze swojego rejestru.
Każdy odrębny komponent w tym wzorcu to peer, który może działać zarówno jako klient wysyłający żądania do innych peers, jak i serwer, zapewniający usługi innym peers. Może pełnić rolę klienta lub serwera, albo obu jednocześnie, a ta rola może zmieniać się dynamicznie w czasie.
Ten wzorzec wiąże się z events (zdarzeniami). Ma cztery główne komponenty: event source, event listener, channel oraz event bus. Sources publikują wiadomości na dane channels (kanały) komponentu event bus. Listeners subskrybują poszczególne channels (kanały) i dostają notyfikacje o dostępnych w nich wiadomościach.
Wzorzec znany również jako MVC. Dzieli aplikację na trzy elementy:
Umożliwia to odseparowanie wewnętrznej interpretacji informacji od sposobu, w jaki informacja jest dostarczana i prezentowana użytkownikowi. Rozłącza komponenty i pozwala na efektywne ponowne wykorzystanie kodu.
Wzorzec jest przydatny, gdy nie istnieją deterministyczne strategie rozwiązania danego problemu. Składa się z trzech głównych komponentów:
Wszystkie komponenty mają dostęp do blackboardu i mogą generować nowe obiekty danych, które będą do niego dodane. Szukają w blackboardzie konkretnego rodzaju danych. Mogą to zrobić poprzez operację pattern matching (dopasowanie do wzorca) z istniejącym źródłem wiedzy.
Wzorzec wykorzystuje się, by zaprojektować kompoment, który zinterpretuje program napisany w wyspecjalizowanym języku. Precyzuje jak czytać linie programu - czyli wyrażenia napisane w danym języku. Podstawowym założeniem przy tym wzorcu jest istnienie klasy dla każdego symbolu języka.
Mam nadzieję, że to, co przeczytałeś, okazało się dla Ciebie przydatne! ? Artykuł jest również dostępny w wersji anglojęzycznej.