Magento 2: lợi ích của việc sử dụng hợp đồng dịch vụ là gì?


15

Vì vậy, như một số bạn có thể biết, Magento 2 đề xuất cách đối phó với các mô hình / bộ sưu tập cho các hành động CRUD là sử dụng hợp đồng dịch vụ.

Nhưng vẫn theo Magento SE Q & A, có vẻ như hầu hết mọi người có xu hướng sử dụng trực tiếp mô hình / mô hình tài nguyên / bộ sưu tập.

Để làm ví dụ để tải báo giá, tôi có thể thực hiện trực tiếp thông qua nhà máy như thế này:

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

Trong trường hợp $this->quoteFactorylà một thể hiện của\Magento\Quote\Model\QuoteFactory

Nhưng tôi cũng có thể làm điều đó thông qua hợp đồng dịch vụ như thế này:

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

Trong trường hợp $this->quoteRepositorylà một thể hiện của\Magento\Quote\Api\CartRepositoryInterface

Vì vậy, câu hỏi của tôi là những lợi ích của việc sử dụng hợp đồng dịch vụ đối với các nhà máy là gì?

Câu trả lời:


18

Lợi ích của việc sử dụng hợp đồng dịch vụ, (Theo magento 2 hiểu)

Hợp đồng dịch vụ có một số chức năng quan trọng cho magento 2, chẳng hạn như:

  • Nâng cấp mô-đun trở nên dễ dàng.

  • Đơn giản hóa các tùy chỉnh cho mô-đun mà không cần đào sâu vào các tệp cốt lõi.

  • Giảm xung đột giữa các mô-đun trong hệ thống.

  • Nâng cấp Magento an toàn hơn khi sử dụng hợp đồng dịch vụ.

  • Đối với các dịch vụ sẽ không thay đổi trong các bản phát hành mới của nó, việc nâng cấp trong tương lai trở nên dễ dàng đối với mô-đun hiện có.

  • Đối với mô hình / bộ sưu tập, trường hợp này không đúng trong các bản phát hành mới.

2

Lợi ích của hợp đồng dịch vụ:

  • Tăng cường tính mô-đun của Magento

  • Đảm bảo API bền, được xác định rõ ràng mà các mô-đun và tiện ích mở rộng của bên thứ ba khác có thể triển khai

  • Giúp dễ dàng định cấu hình các dịch vụ dưới dạng API web.

  • Các thực thể dữ liệu tiết lộ một mô hình dữ liệu đơn giản hơn mô hình dữ liệu trong một lược đồ cơ sở dữ liệu quan hệ cơ bản

  • Sử dụng các công nghệ lưu trữ khác nhau cho các bộ sưu tập dữ liệu khác nhau


2

Tôi nghĩ lợi ích lớn nhất là các mô-đun có thể xác định chức năng nào có thể được sử dụng bởi các mô-đun khác. Trong Magento 1, bạn đã có những người trợ giúp thường sử dụng sai mục đích này (nhưng đó là một cuộc thảo luận hoàn toàn khác), nhưng trong Magento 2, mô-đun của bạn có thể cung cấp chức năng cho các mô-đun khác (ví dụ: bởi các nhà phát triển bên thứ 3) và tự tách biệt - liên tục.

Dependency Injection cung cấp một hệ thống trong đó bạn có thể sử dụng một giao diện trong công trình của mình để bạn chỉ có quyền truy cập vào các phương thức công khai đó.

Vài ví dụ:

Bạn muốn liên kết một sản phẩm với nhiều danh mục? Sử dụng \Magento\Catalog\Api\CategoryLinkManagementInterface:

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

Bạn muốn tăng số lượng cổ phiếu của một sản phẩm? Sử dụng Magento\CatalogInventory\Api\StockManagementInterface:

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

Hai ví dụ này cho thấy hoàn toàn việc sử dụng hợp đồng dịch vụ. Bên cạnh đó, họ cung cấp một giao diện thống nhất để giao tiếp với:

  • Các mô-đun khác (như được mô tả ở trên)
  • Các lệnh điều khiển
  • Cuộc gọi API
  • Vân vân.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.