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