Zasada granulacji usług
W kontekście inżynierii oprogramowania i architektury oprogramowania , szczegółowość usługi jest kluczowym problemem projektowym przy stosowaniu paradygmatu zorientowania na usługi , na przykład podczas modelowania zorientowanego na usługi . Szczegółowość usługi określa zakres funkcjonalności biznesowej i strukturę ładunku komunikatu w operacji usługi, która jest świadczona w architekturze zorientowanej na usługi (SOA) .
Definicja
Szczegółowość usług dotyczy zarówno domeny aplikacji ( granulacyjność biznesowa ), jak i projektu interfejsu oprogramowania ( granulacyjność techniczna ); jest to właściwość umowy o świadczenie usług ujawniona przez usługodawcę. Dotyczy to semantyki i składni treści komunikatu wejściowego (żądanie) i wyjściowego (odpowiedź), które można postrzegać jako przypadki dwóch ogólnych wzorców integracji przedsiębiorstwa , komunikatu polecenia i komunikatu dokumentu . Z definicji operacja usługi gruboziarnistej ma szerszy zakres niż usługa drobnoziarnista, chociaż warunki są względne. Ta pierwsza zazwyczaj wymaga większej złożoności projektu, ale może zmniejszyć liczbę połączeń wymaganych do wykonania zadania.
Kryteria
Ze względu na błędy związane z przetwarzaniem rozproszonym znalezienie odpowiedniej szczegółowości jest trudne. Nie ma jednej prostej odpowiedzi, ale istnieje szereg kryteriów (patrz poniżej). Podstawowym celem modelowania usług i projektowania granulacji jest osiągnięcie luźnego powiązania i modułowości , które są dwiema podstawowymi zasadami SOA, oraz zaspokojenie innych istotnych architektonicznie wymagań .
Na szczegółowość usługi wpływa wiele sił; cztery szczególnie istotne czynniki, które należy wziąć pod uwagę przy projektowaniu pod kątem odpowiedniej szczegółowości, to wydajność, rozmiar wiadomości, transakcyjność i funkcja biznesowa:
Biznesowa funkcja
W idealnym przypadku każda operacja usługowa jest odwzorowywana na pojedynczą funkcję biznesową, chociaż jeśli pojedyncza operacja może zapewnić wiele funkcji bez zwiększania złożoności projektu lub zwiększania rozmiarów komunikatów, ta ogólność może obniżyć koszty wdrożenia i użytkowania.
Wydajność
Usługi sieciowe są dostępne zdalnie, a wywołania obsługi usługi sieciowej powodują większe obciążenie sieci. Zmniejszenie liczby zgłoszeń serwisowych zmniejsza ten narzut.
Rozmiar wiadomości
Usługi gruboziarniste mogą przekazywać więcej danych niż usługi szczegółowe, w tym dane, które nie są specjalnie wymagane do wykonania zadania. To komplikuje przetwarzanie komunikatów w punkcie końcowym i może z kolei obniżyć wydajność. Zmniejszenie rozmiaru komunikatu może wymagać dodania bardziej szczegółowej operacji.
Cechy jakości usług, w tym transakcyjność
Dla przejrzystości pojęciowej każda operacja usługi powinna wykonywać pojedynczą transakcję na poziomie systemu i pozostawiać integralność danych poza granicami usługi logice biznesowej konsumenta usługi. Upraszcza to również usuwanie błędów i zazwyczaj ułatwia projektowanie.
Istnieje o wiele więcej kryteriów decyzyjnych służących do znalezienia odpowiedniej szczegółowości; nie ma globalnego optimum. Z literatury zebrano szesnaście takich kryteriów sprzęgania.
Wzory
Ponieważ jeden rozmiar nie jest odpowiedni dla wszystkich, projektowanie ziarnistości usług może skorzystać z wielu istniejących wzorców w różnego rodzaju systemach rozproszonych, zwłaszcza tych związanych z usługami, jak również wzorców związanych z projektowaniem API (np. programowanie zorientowane) i integracja korporacyjna. Przegląd takich języków znajduje się tutaj .
Linki zewnętrzne
- Struktura szczegółowości usług koncepcyjnych
- Wpis dotyczący szczegółowości usługi w glosariuszu usługi
- Gotowanie EA — szczegółowość usług
- Studium przypadku IEEE dotyczące roli szczegółowości usług w udanej realizacji architektury SOA
- Wiedza architektoniczna w architekturze referencyjnej infrastruktury SOA (studium przypadku SOA)
- Właściwa szczegółowość usług sieciowych zawiera informacje na temat zasady szczegółowości usług oraz przydatne porady, jak to zrobić dobrze.
- Przewodnik praktyka SOA
- Rozwiązanie problemu szczegółowości usług
- Gruboziarniste interfejsy
- Ramy metryk do oceny szczegółowości usług SOA
- Narzędzie Service Cutter i katalog kryteriów łączenia w serwisie GitHub