Magento 2: Hizmet sözleşmelerini kullanmanın faydaları nelerdir?


15

Bazılarınızın bildiği gibi, Magento 2, CRUD eylemleri için modellerle / koleksiyonlarla başa çıkmanın önerilen yolunu hizmet sözleşmeleri kullanmaktır.

Ancak yine de Magento SE Soru ve Cevaplarına göre, çoğu insan modeli / kaynak modelini / koleksiyonunu doğrudan kullanma eğilimindedir.

Bir teklif yüklemek için örnek olarak ben doğrudan fabrika aracılığıyla şöyle yapabilirsiniz:

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

$this->quoteFactoryBir örneği nerede\Magento\Quote\Model\QuoteFactory

Ama aynı zamanda böyle hizmet sözleşmesi ile yapabilirim:

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

$this->quoteRepositoryBir örneği nerede\Magento\Quote\Api\CartRepositoryInterface

Benim sorularım, fabrikalarda hizmet sözleşmesi kullanmanın faydaları nelerdir?

Yanıtlar:


18

Hizmet sözleşmelerini kullanmanın faydaları, (Macenta 2 anlayışına göre)

Hizmet sözleşmelerinin, magento 2 için bir dizi önemli işlevi vardır, örneğin:

  • Modül Yükseltmesi kolaylaşır.

  • Çekirdek dosyalara girmeden modül için özelleştirmeleri basitleştirin.

  • Sistemdeki modüller arasındaki çakışmayı azaltın.

  • Magento yükseltmesi servis sözleşmesi ile daha güvenlidir.

  • Hizmetlerin yeni sürümlerinde değişmeden kalacağı için, ileride yükseltme yapmak mevcut modül için kolaydır.

  • Model / koleksiyonlar için bu durum yeni sürümlerde geçerli değildir.

2

Hizmet sözleşmesinin faydaları:

  • Magento'nun modülerliğini geliştirin

  • Diğer modüllerin ve üçüncü taraf uzantıların uygulayabileceği iyi tanımlanmış, dayanıklı bir API sağlama

  • Hizmetleri web API'ları olarak yapılandırmayı kolaylaştırın.

  • Veri varlıkları, temeldeki ilişkisel veritabanı şemasındaki veri modelinden daha basit bir veri modeli gösterir

  • Farklı veri toplamaları için farklı depolama teknolojileri kullanın


2

Bence en büyük yararı, modüllerin diğer işlevler tarafından hangi işlevselliğin kullanılabileceğini belirleyebilmesidir. Magento 1'de, bu amaç için sıklıkla yanlış bir şekilde kötüye kullanıldığında (ancak bu tamamen tartışılan) yardımcılarınız vardı, ancak Magento 2'de modülünüz diğer modüllere (örneğin 3. taraf geliştiriciler tarafından) işlevsellik sağlayabilir ve ayrı ve kendiliğinden olmasını sağlayabilir -contained.

Bağımlılık Enjeksiyonu, inşaatınızda bir arabirim kullanabileceğiniz bir sistem sağlar, böylece yalnızca bu genel yöntemlere erişebilirsiniz.

Bazı örnekler:

Bir ürünü birden çok kategoriye bağlamak ister misiniz? Kullanım \Magento\Catalog\Api\CategoryLinkManagementInterface:

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

Bir ürünün stok miktarını artırmak ister misiniz? Kullanım Magento\CatalogInventory\Api\StockManagementInterface:

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

Bu iki örnek, hizmet sözleşmelerinin doğru kullanımını mükemmel bir şekilde göstermektedir. Bunun yanı sıra, iletişim kurmak için tek tip bir arayüz sağlarlar:

  • Diğer Modüller (yukarıda açıklandığı gibi)
  • Konsol Komutları
  • API Çağrıları
  • vb.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.