Na dzisiaj wzorzec prosty i przyjemny: State(Stan). Jak sama nazwa wskazuje służy on do radzenia sobie z wszelkimi sytuacjami, gdzie występują pewne stany, od których zależy to, co zostanie wykonane w ramach operacji. Weźmy pod uwagę przykład znany wszystkim(aczkolwiek rozpaczliwie uproszczony): winda, a konkretnie jej drzwi.
Architektura 5585 dni, 3 godziny, 22 minuty temu 125 źrodło rozwiń
Po napisaniu poprzedniego artykułu o podstawach wzorca MVP zastanawiałem się co więcej można przekazać w tym temacie. Myślałem, myślałem i jakoś nie mogłem wymyślić mimo, że jest o czym pisać. Poszedłem w innym kierunku i postanowiłem po prostu rozbudować troszkę wcześniej przedstawiony przykład. Pomysł na temat przyszedł sam. Szybko zauważyłem, że w rzeczywistej aplikacji przedstawione przeze mnie podejście nie miało by szans bytu...
Dzisiaj kilka słów na temat wzorca Flyweight – “waga piórkowa”. Wzorzec ten należy do grupy wzorców strukturalnych. Flyweight zajmuje się udostępnianiem pojedynczego obiektu wielu klientom. Wspólny dostęp znajduje zastosowanie gdy występuje potrzeba zarządzania dużą ilością obiektów(setki, tysiące, itp), które posiadają jakąś niezmienną część. Dość prymitywnym przykładem może być proces tworzenia oferty sprzętu: zamiast do każdego długiego opisu powiedzmy procesora, wraz z wszystkimi danymi technicznymi,...
Architektura 5597 dni, 1 godzinę, 7 minut temu 172 źrodło rozwiń
Agregacja (a.) i kompozycja (k.) są jednymi z najczęściej wykorzystywanych relacji w UML-owych diagramach klas. Są to specjalizacje asocjacji. Obie oznaczają, iż obiekty jednej z klas ("całość") zawierają referencję do obiektów drugiej klasy ("część"). Kompozycja jest właściwie jedynie silniejszą formą agregacji, w której obiekt zawierający ma pełną kontrolę nad obiektami zawieranymi. W szczególności, czas życia obiekty zawieranych jest limitowany czasem życia obiektu zawierającego.
Programowanie rozproszone 5625 dni, 6 godzin, 57 minut temu 37 źrodło rozwiń
W jaki sposób pokonać ograniczenia standardowego protokołu inwentarza usług, nie łamiąc przy tym zgodności ze standardami? Wzorzec Canonical Protocol zaleca wykorzystania jednego, standardowego, protokołu do komunikacji między usługami w ramach jednego inwentarza. Domyślnie oczywiście, protokołem tym są jakiegoś rodzaju usługi webowe (Basic WS, WS-*, REST), jednak nie jest to twarde wymaganie. Niezależnie od wyboru standardowego protokołu, mogą zdarzyć się sytuacje, kiedy jest on z jakichś przyczyn ni...
Programowanie rozproszone 5639 dni, 3 godziny, 57 minut temu 28 źrodło rozwiń
W jaki sposób rozwiązanie oparte o usługi może dostarczyć interaktywny interfejs użytkownika? Rozwiązaniem jest specjalna usługa Mediatora, która jest umieszczana pomiędzy kodem interfejsu użytkownika, a rzeczywistą usługą dostarczającą funkcjonalności biznesowej. Mediator jest odpowiedzialny za dostarczanie użytkownikowi informacji o stanie zainicjowanego przez niego procesu oraz o wszelkich zdarzeniach występujących w trakcie jego działania. Mediator może być zrealizowany na dwa sposoby: jako sp...
Programowanie rozproszone 5648 dni, 7 godzin, 44 minuty temu 40 źrodło rozwiń
W jaki sposób infrastruktura przechowująca stan usług może być skalowana i zabezpieczona przed awarią? Odpowiedzią na to pytania jest wzorzec Service Grid. Jego nazwa może być nieco myląca. Nie ma on bowiem nic wspólnego z gridami oraz raczej niewiele z usługami w klasycznym pojęciu SOA. Service Grid jest nazwą dla podejścia, w którym wiele instancji infrastruktury przechowującej stan usług jest równolegle aktywnych (zwykle na wilu fizycznych maszynach). Instancje te współdzielą między sobą informacje d...
Programowanie rozproszone 5648 dni, 47 minut temu 36 źrodło rozwiń
W jaki sposób usługa bezstanowa może brać udział w interakcjach wymagających przechowywania stanu? Rozwiązaniem (jednym z wielu możliwych) jest przesyłanie informacji o stanie w wymienianych przez usługę komunikatach. Tradycyjne rozwiązanie problemu polega na przechowywaniu stanu w instancji usługi. Jego słabą stroną jest blokowanie zasobów serwera (głównie pamięci) przez tymczasowo nieaktywne instancji usługi czekające na dalszy ciąg interakcji. Jeśli nie możemy zrezygnować z przechowywania stanu ...
Programowanie rozproszone 5651 dni, 5 godzin, 23 minuty temu 24 źrodło rozwiń
Jest to wzorzec z grupy porządkujących logiczny warstwy inwentarza (?) [inventory] usług. Pozostałe dwa z tej grupy to Entity Abstraction i Process Abstraction. Wszystkie trzy wzorce pomagają zidentyfikować różne grupy odpowiedzialności w "kandydatach na usługi". Skutkuje to wydzieleniem współnych zakresów odpowiedzialności do nowych usług lub łączeniem usług odpowiadających za ten sam aspekt rozwiązania. Utility Abstraction zajmuje się konkretnie funkcjonalnością wykorzystywaną we wszystkich fragm...
Programowanie rozproszone 5648 dni, 7 godzin, 44 minuty temu 32 źrodło rozwiń
Natknąłem się na kolejną ciekawą parę wzorców. W odróżnieniu od poprzednio opisywanej, tym razem para ma charakter dwóch konkurencyjnych rozwiązań tego samego problemu. To dla mnie interesująca nowość: do tej pory wzorce kojarzyły mi się z podejściem: problem - rozwiązanie (+ konsekwencje). W tym wypadku problem ma dwa równorzędne rozwiązania (przynajmniej tak wynika z lektury rozdziałów). No i wydaje mi się, że z tą równorzędnością jest problem... Direct Authentication zakłada, że każda usługa przech...
Programowanie rozproszone 5649 dni, 18 godzin, 31 minut temu 29 źrodło rozwiń
To właściwie dwa wzorce: Capability Composition oraz Capability Recomposition. Pierwszy z nich rozwiązuje problem usługi, która w celu wykonania swojego zadania potrzebueje logiki, która nie mieści się w jej zakresie odpowiedzialności. Aby problem rozwiązać, można poszerzyć zakres odpowiedzialności usługi, jednak prowadzi to do duplikacji logiki. Innym, lepszym i poprawnym, rozwiązaniem jest włączenie wywołania innej usługi jako elementu realizacji logiki tej pierwszej. Właściwie wydaje się to zup...
Programowanie rozproszone 5652 dni, 12 godzin, 39 minut temu 16 źrodło rozwiń
Postanowiłem robić notatki z książki. Może kogoś zachęcą lub zniechęcą do czytania. Celem wzorca Service Facade jest zmniejszenie powiązania między kontraktem usługi, a jej logiką. Oczywiście logiczne powiązanie logiki do kontraktu jest zjawiskiem jak najbardziej pozytywnym (powiązanie odwrotne jest negatywne, skutkuje zwykle wyciekiem technicznych szczegółów logiki do kontraktu i często jest wynikiem automagicznego generowania WSDL-a z kodu). Czasami jednak zmniejszenie stopnia powiązania logiki do k...
Programowanie rozproszone 5651 dni, 22 godziny, 57 minut temu 46 źrodło rozwiń
Dżemik z egzotycznych owoców - Abstract Factory :) Zgodnie z zapowiedzią prezentuję własną interpretację jednego z zadań kończącego rozdział książki p.t. „C# 3.0 Design Patterns.”. Rozdział ten dotyczył wzorca projektowego „Abstract Factory”. Krótko o tworzeniu własnych typów generycznych w C# Zadanie, opis wzorca Implementujemy, produkujemy (jemy i sprzedajem ;))
Architektura 5709 dni, 22 godziny, 13 minut temu 76 źrodło rozwiń
Omówienie Wzorców projektowych. Obecnie omówione zostały wzorce takie jak - Strategia, Dekorator, Metoda Szablonowa, Adapter, Stan, Pośrednik, Polecenie oraz Parametr zbiorczy wraz z przykładami w C#.
Architektura 5746 dni, 12 godzin, 42 minuty temu 271 źrodło rozwiń