마 젠토 2 : 서비스 계약을 사용하면 어떤 이점이 있습니까?


15

따라서 일부 사용자가 알고 있듯이 CRUD 작업에 대한 모델 / 컬렉션을 처리하는 Magento 2 권장 방법은 서비스 계약을 사용하는 것입니다.

그러나 여전히 Magento SE Q & A에 따르면 대부분의 사람들이 대신 모델 / 자원 모델 / 컬렉션을 사용하는 경향이 있습니다.

따옴표를로드하는 예제로 다음과 같이 공장을 통해 직접 할 수 있습니다.

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

$this->quoteFactory의 인스턴스는 어디에\Magento\Quote\Model\QuoteFactory

그러나 나는 다음과 같은 서비스 계약을 통해 그것을 할 수도 있습니다.

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

$this->quoteRepository의 인스턴스는 어디에\Magento\Quote\Api\CartRepositoryInterface

내 질문은 공장보다 서비스 계약을 사용하면 어떤 이점이 있습니까?

답변:


18

서비스 계약 사용의 이점, (마 젠토 2 이해에 따라)

서비스 계약에는 다음과 같은 magento 2에 대한 여러 가지 중요한 기능이 있습니다.

  • 모듈 업그레이드가 쉬워집니다.

  • 코어 파일을 파지 않고 모듈에 대한 사용자 정의를 단순화하십시오.

  • 시스템의 모듈 간 충돌을 줄입니다.

  • 서비스 계약을 사용하면 마 젠토 업그레이드가 더 안전합니다.

  • 새로운 릴리스에서는 서비스가 변경되지 않으므로 향후 모듈을 쉽게 업그레이드 할 수 있습니다.

  • 모델 / 컬렉션의 경우이 사례는 새 릴리스에서는 적용되지 않습니다.

2

서비스 계약의 장점 :

  • 마젠 토의 모듈성 향상

  • 다른 모듈 및 타사 확장 프로그램이 구현할 수있는 잘 정의되고 내구성있는 API를 보장하십시오.

  • 서비스를 웹 API로 쉽게 구성 할 수 있습니다.

  • 데이터 엔터티는 기본 관계형 데이터베이스 스키마에서 데이터 모델보다 간단한 데이터 모델을 나타냅니다.

  • 다른 데이터 수집에 다른 스토리지 기술 사용


2

가장 큰 이점은 모듈이 다른 모듈에서 사용할 수있는 기능을 결정할 수 있다는 것입니다. Magento 1에서는 이러한 목적으로 오용되는 경우가 많지만 (모두 다른 토론이지만) Magento 2에서는 모듈이 다른 모듈 (예 : 타사 개발자)에게 기능을 제공 할 수 있으며 분리되어 있고 자체적으로 가질 수 있습니다. -포함.

Dependency Injection은 구성에서 인터페이스를 사용할 수있는 시스템을 제공하므로 공용 메소드에만 액세스 할 수 있습니다.

몇 가지 예 :

제품을 여러 카테고리에 연결하고 싶습니까? 사용 \Magento\Catalog\Api\CategoryLinkManagementInterface:

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

제품의 재고 수량을 늘리고 싶습니까? 사용 Magento\CatalogInventory\Api\StockManagementInterface:

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

이 두 예는 서비스 계약의 올바른 사용을 완벽하게 보여줍니다. 그 외에도 다음과 통신 할 수있는 균일 한 인터페이스를 제공합니다.

  • 다른 모듈 (위에서 설명)
  • 콘솔 명령
  • API 호출
  • 기타
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.