Magento 2: quali sono i vantaggi dell'utilizzo dei contratti di assistenza?


15

Quindi, come alcuni di voi sapranno, Magento 2 ha raccomandato di utilizzare i contratti di servizio per gestire i modelli / le raccolte per le azioni CRUD.

Ma ancora secondo le domande e risposte Magento SE sembra che la maggior parte delle persone tendano a utilizzare direttamente il modello / modello di risorsa / raccolta.

Ad esempio per caricare un preventivo posso farlo direttamente dalla fabbrica in questo modo:

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

Dov'è $this->quoteFactoryun'istanza di\Magento\Quote\Model\QuoteFactory

Ma posso anche farlo tramite un contratto di assistenza come questo:

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

Dov'è $this->quoteRepositoryun'istanza di\Magento\Quote\Api\CartRepositoryInterface

Quindi le mie domande sono: quali sono i vantaggi dell'utilizzo dei contratti di servizio rispetto alle fabbriche?

Risposte:


18

Vantaggi dell'utilizzo dei contratti di assistenza, (secondo la comprensione di magento 2)

I contratti di servizio hanno una serie di importanti funzioni per magento 2, come ad esempio:

  • L'aggiornamento del modulo diventa facile.

  • Semplifica le personalizzazioni al modulo senza scavare nei file core.

  • Ridurre il conflitto tra i moduli nel sistema.

  • L'aggiornamento di Magento è più sicuro grazie al contratto di assistenza.

  • Poiché i servizi rimarranno invariati nelle nuove versioni di esso, effettuare aggiornamenti in futuro è facile per il modulo esistente.

  • Per il modello / le raccolte questo caso non è vero nelle nuove versioni.

2

Vantaggi del contratto di assistenza:

  • Valorizza la modularità di Magento

  • Garantire un'API ben definita e duratura che altri moduli ed estensioni di terze parti possano implementare

  • Semplifica la configurazione dei servizi come API Web.

  • Le entità di dati rivelano un modello di dati più semplice rispetto al modello di dati in uno schema di database relazionale sottostante

  • Utilizzare diverse tecnologie di archiviazione per diverse raccolte di dati


2

Penso che il più grande vantaggio sia che i moduli possono determinare quale funzionalità può essere utilizzata da altri moduli. In Magento 1 hai avuto degli aiutanti che spesso sono stati usati in modo improprio per questo scopo (ma questo è un altro argomento discusso), ma in Magento 2 il tuo modulo può fornire funzionalità ad altri moduli (ad esempio da sviluppatori di terze parti) e averlo separato e autonomo -contained.

Dependency Injection fornisce un sistema in cui è possibile utilizzare un'interfaccia nella propria costruzione in modo da avere accesso solo a questi metodi pubblici.

Qualche esempio:

Vuoi collegare un prodotto a più categorie? Utilizzare \Magento\Catalog\Api\CategoryLinkManagementInterface:

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

Vuoi aumentare la quantità di stock di un prodotto? Utilizzare Magento\CatalogInventory\Api\StockManagementInterface:

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

Questi due esempi mostrano perfettamente l'uso corretto dei contratti di assistenza. Oltre a ciò, forniscono un'interfaccia uniforme per comunicare con:

  • Altri moduli (come descritto sopra)
  • Comandi della console
  • Chiamate API
  • eccetera.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.