Komponentowe systemy rozproszone Wprowadzenie
Komponent... jest to podstawowa jednostka oprogramowania z kontraktowo (deklaratywnie) opisanymi interfejsami, i podanymi wprost zależnościami. na podst. "Oprogramowanie komponentowe. Obiekty to za mało" (1998)
Komponent Może być użyty przez inne elementy programu Jego użycie nie wymaga interwencji programisty Posiada pełną specyfikację zależności Specyfikuje oferowaną przez siebie funkcjonalność Może być użyty wyłącznie na podstawie tej specyfikacji Można go złożyć z innymi komponentami Integruje się z systemem w sposób szybki i bezproblemowy B.Meyer (2001)
Komponent vs. obiekt konfiguracja wdrożenia późne wiązanie wywołań i ładowanie kodu pełna hermetyzacja dziedziczenie interfejsów powtórne użycie na poziomie binariów polimorfizm późne wiązanie wywołań częściowa hermetyzacja dziedziczenie klas
Komponent z pudełka... albo z kontenera... Kontener jest odpowiedzialny za zarządzanie komponentami: steruje procesem tworzenia komponentów rozwiązuje zależności pomiędzy komponentami zarządza cyklem życia komponentów
Problemy Stabilność i poprawność działania Testowanie Dokumentacja komponentu Wygoda użycia: Brak silnych powiązań Nieskomplikowny interfejs Unikanie skomplikowanych protokołów Przejrzyste specyfikowanie akcji
Komponenty vs. poprawne OOD OOD w praktyce sprowadza sie do zarządzania zależnościami Problemy ze złożonym oprogramowaniem w dużej mierze wynikają z niepoprawnych, zagmatwanych i rozbudowanych zależności Tradycyjne metody OOx nader często zawodzą z różnych przyczyn Może komponenty to porządnie zaprojektowane obiekty (gupy obiektów) ?
Rozwiązanie S.O.L.I.D. Poprawny i łatwy w utrzymaniu kod Testy jednostkowe umozliwiają łatwe testowanie wyizolowanych klas/komponentów stanowią dokumentację weryfikują/ wymuszają (TDD/BDD) dobrą architekturę kodu są podstawą projektów realizowanych przy pomocy metodyk zwinnych
System rozproszony obiekty+ komunikacja = s ystem rozproszony ?
Krotka historia rozpraszania Komunikacja pakietowa Komunikacja strumieniowa (gniazda) Komunikacja obiektowa (obiekty rozproszone, CORBA, (D)COM+) Architektura Zorientowana na Serwisy (SOA) ServiceBus ?
Laborki ORM COM WCF NServiceBus UT+Unity