Magento 2: jakie są zalety korzystania z umów serwisowych?

15

Tak więc, jak niektórzy z was wiedzą, Magento 2 zalecał sposób radzenia sobie z modelami / kolekcjami dla działań CRUD, to korzystanie z umów serwisowych.

Ale nadal zgodnie z pytaniami i odpowiedziami Magento SE wydaje się, że większość ludzi używa zamiast tego modelu / modelu zasobów / kolekcji bezpośrednio.

Jako przykład, aby załadować ofertę, mogę to zrobić bezpośrednio przez fabrykę w następujący sposób:

$this->quoteFactory->create()->load($quoteId);

Gdzie $this->quoteFactoryjest przykład\Magento\Quote\Model\QuoteFactory

Ale mogę to również zrobić za pomocą takiej umowy serwisowej:

$this->quoteRepository->get($quoteId);

Gdzie $this->quoteRepositoryjest przykład\Magento\Quote\Api\CartRepositoryInterface

Więc mam pytania, jakie są zalety korzystania z umów serwisowych w porównaniu z fabrykami?

Raphael at Digital Pianism
źródło

Odpowiedzi:

18

Korzyści wynikające z korzystania z umów serwisowych (zgodnie ze zrozumieniem magento 2)

Umowy serwisowe mają wiele ważnych funkcji dla Magento 2, takich jak:

  • Aktualizacja modułu staje się łatwa.

  • Uprość dostosowywanie modułu bez konieczności zagłębiania się w podstawowe pliki.

  • Zmniejsz konflikt między modułami w systemie.

  • Uaktualnienia Magento są bezpieczniejsze dzięki umowie serwisowej.

  • Usługi pozostaną niezmienione w nowych wydaniach, dzięki czemu aktualizacja w przyszłości będzie łatwa dla istniejącego modułu.

  • W przypadku modeli / kolekcji ten przypadek nie jest prawdziwy w nowych wydaniach.
Rakesh Jesadiya
źródło
2

Korzyści z umowy serwisowej:

  • Zwiększ modułowość Magento

  • Zapewnij dobrze zdefiniowany, trwały interfejs API, który mogą implementować inne moduły i rozszerzenia innych firm

  • Ułatw konfigurację usług jako internetowych interfejsów API.

  • Jednostki danych ujawniają prostszy model danych niż model danych w podstawowym schemacie relacyjnej bazy danych

  • Używaj różnych technologii przechowywania dla różnych kolekcji danych

Jameslj
źródło
2

Myślę, że największą zaletą jest to, że moduły mogą określić, które funkcje mogą być używane przez inne moduły. W Magento 1 miałeś pomocników, które często były niewłaściwie wykorzystywane do tego celu (ale to zupełnie inna dyskusja), ale w Magento 2 twój moduł może zapewniać funkcjonalność innym modułom (na przykład przez niezależnych programistów) i mieć oddzielone i samodzielne -zawarte.

Dependency Injection zapewnia system, w którym możesz używać interfejsu w swojej konstrukcji, dzięki czemu masz dostęp tylko do tych publicznych metod.

Kilka przykładów:

Chcesz połączyć produkt z wieloma kategoriami? Użyj \Magento\Catalog\Api\CategoryLinkManagementInterface:

$this->categoryLinkManagement->assignProductToCategories(
    $sku,
    $categoryIds
);

Chcesz zwiększyć zapasy produktów? Użyj Magento\CatalogInventory\Api\StockManagementInterface:

$this->stockManagement->backItemQty(
    $productId,
    $itemsToReceive
);

Te dwa przykłady doskonale pokazują prawidłowe wykorzystanie umów o świadczenie usług. Poza tym zapewniają jednolity interfejs do komunikacji z:

  • Inne moduły (jak opisano powyżej)
  • Polecenia konsoli
  • Połączenia API
  • itp.
Giel Berkers
źródło