Witaj na Zine.net online Zaloguj się | Rejestracja | Pomoc

Simon says...

Szymon Pobiega o architekturze i inżynierii oprogramowania
SOA Design Patterns: Utility Abstraction
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 fragmentach rozwiązania. Po angielsku ładnie mówi się na to "cross-cutting concerns". Nie znam dobrego polskiego tłumaczenia. Przykładem usług z tej grupy może być np. logowanie zdarzeń.

W przypadku zastosowania wzoraca Domain Inventory warstwa usługowa może być albo osobna dla każdego inwentarza domeny, albo (przez zastosowania wrorca Cross-Domain Utility Layer) wspólna dla całej architektury SOA w przedsiębiorstwie.

Utility Abstraction sprawia problemy w fazie definiowania kontraktów usług, ponieważ nie dysponujemy gotowym biznesowym kontekstem, na którym moglibyśmy się oprzeć. Musimy od podstaw wymyśleć, co nasza warstwa powinna robić i na jakim poziomie szczegółowości to udostępniać.

Podczas podejmowania decyzji o wydzieleniu w swoim rozwiązaniu warstwy Utility należy rozważyć, czy w tym konkretnym wypadku koszty nie będą zbyt duże. Trzeba pamiętać, że wydzielenie funkcji, takich jak logowanie, jako usług (domyślnie Web Service) będzie miało znaczny wpływ na wydajność. Dlaczego założyłem, że usługi Utility mają być Web Service? Ano dlatego, iż wzorzec Canonical Protocol sugeruje, aby całość komunikacji w ramach jednego inventory odbywała się za pośrednictwem jednego protokołu.

Last but not least: zastosowanie Utility Layer/Abstraction często wiąże się z wykorzystaniem wzorca Service Agent, czyli agentów przechwytujących żądania i uruchamiających pewne metody warstwy usługowej. Jest to nic innego jak scentralizowana wersja dobrze znanych aspektów.

Opublikowane 6 lipca 2009 08:41 przez simon

Filed under: ,

Komentarze:

# Simon says... : SOA Design Patterns: Utility Abstraction @ 6 lipca 2009 13:02

Dziękujemy za publikację - Trackback z dotnetomaniak.pl

dotnetomaniak.pl

Komentarze anonimowe wyłączone