---
title: "サービスプロバイダー"
slug: "service-provider"
abstract: ""
---
# サービスプロバイダー

各サービス層にはカスタマイズ可能な独自のインターフェースがあります。これらのプロバイダーには、適切なサブシステムとやり取りするためのサービスメソッドが含まれています。すべてのサービスプロバイダーはServiceProviderクラスから継承しなければならず、各サービスメソッドがジェネリックベースのクラスの汎用版を持つことを推奨します。

サービス方法のサンプル:

public virtual GetCartsResult GetCarts(NotNull GetCartsRequest request)
{
return this.RunPipeline<GetCartsRequest, GetCartsResult>(PipelineName.GetCarts, request);
}

ジェネリック拡張手法の例:

public static TGetCartsResult GetCarts<TGetCartsRequest, TGetCartsResult>(NotNull this CartServiceProvider cartProvider, NotNull TGetCartsRequest request)
where TGetCartsRequest : GetCartsRequest
where TGetCartsResult : GetCartsResult, new()
{
return cartProvider.RunPipeline<GetCartsRequest, TGetCartsResult>(PipelineName.GetCarts, request);
}

既存のサービスプロバイダーが新しいサービス手法を必要とする場合は、新しいサービスプロバイダーを作成するのではなく、そのプロバイダーを拡張し新メソッドを追加することを検討してください。以下は、さまざまなサブシステムおよびそれらのサービスプロバイダーの一覧です。

-   ショッピングカート
    
    Sitecore.Commerce.Services.Carts.CartServiceProvider
    
-   命令
    
    Sitecore.Commerce.Services.Orders.OrderServiceProvider
    
-   価格設定
    
    Sitecore.Commerce.Services.Prices.PricingServiceProvider
    
-   製品同期
    
    Sitecore.Commerce.Services.Products.ProductSynchronizationProvider
    
-   顧客と利用者
    
    Sitecore.Commerce.Services.Customers.CustomerServiceProvider
    
-   在庫
    
    Sitecore.Commerce.Services.Inventory.InventoryServiceProvider