1. xConnectクライアントAPIの概要

Sitecore以外のコンテキストでクライアントをインスタンス化する

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

大事な

コンテナベースの環境では、xConnect APIは公開されません。

xConnectクライアントAPIは移植可能で、Sitecore以外のコンテキストで使用できます。次の例は、コンソール アプリケーションからクライアントをインスタンス化する方法を示しています。

大事な

正しいクライアント証明書を持つ信頼できるクライアントのみがxConnectと通信できます。モバイル アプリケーションからxConnectに書き込む場合は、アプリケーションからデータを収集し、そのデータを定期的にxConnectに送信する中間サーバーを設定する必要があります。モバイル デバイスからxConnectに直接書き込むことはできません。

大事な

不要なリソース消費や潜在的な競合を避けるために、XConnectConfigurationオブジェクトを複数回初期化しないでください。

using Sitecore.XConnect.Client;
using Sitecore.XConnect.Schema;
using System;
using System.Threading.Tasks;
using Sitecore.XConnect.Client.WebApi;
using Sitecore.Xdb.Common.Web;
using Sitecore.XConnect.Collection.Model;
using System.Collections.Generic;

namespace Symposium.xConnect.Course
{
    public class Program
    {
        private static void Main(string[] args)
        {
            MainAsync(args).ConfigureAwait(false).GetAwaiter().GetResult();
        }

        private static async Task MainAsync(string[] args)
        {
            try
            {
                // Use the singleton configuration instance
                var cfg = XConnectConfiguration.Instance;

                using (var client = new XConnectClient(cfg))
                {
                    // Use the client here
                }
            }
            catch (XdbModelConflictException ce)
            {
                Console.WriteLine("ERROR:" + ce.Message);
                return;
            }
        }
    }

    // Singleton class for XConnectClientConfiguration
    public static class XConnectConfiguration
    {
        private static readonly Lazy<XConnectClientConfiguration> _instance =
            new Lazy<XConnectClientConfiguration>(() => InitializeConfiguration());

        public static XConnectClientConfiguration Instance => _instance.Value;

        private static XConnectClientConfiguration InitializeConfiguration()
        {
            CertificateHttpClientHandlerModifierOptions options =
                CertificateHttpClientHandlerModifierOptions.Parse("StoreName=My;StoreLocation=LocalMachine;FindType=FindByThumbprint;FindValue=15E6693B0AECB63DE57D991EC363CA462DC52432");

            var certificateModifier = new CertificateHttpClientHandlerModifier(options);

            List<IHttpClientModifier> clientModifiers = new List<IHttpClientModifier>();
            var timeoutClientModifier = new TimeoutHttpClientModifier(new TimeSpan(0, 0, 20));
            clientModifiers.Add(timeoutClientModifier);

            var collectionClient = new CollectionWebApiClient(new Uri("https://sc900rev170622_xconnect/odata"), clientModifiers, new[] { certificateModifier });
            var searchClient = new SearchWebApiClient(new Uri("https://sc900rev170622_xconnect/odata"), clientModifiers, new[] { certificateModifier });
            var configurationClient = new ConfigurationWebApiClient(new Uri("https://sc900rev170622_xconnect/configuration"), clientModifiers, new[] { certificateModifier });

            var cfg = new XConnectClientConfiguration(
                new XdbRuntimeModel(CollectionModel.Model), collectionClient, searchClient, configurationClient);

            // Initialize the configuration synchronously for simplicity
            cfg.InitializeAsync().GetAwaiter().GetResult();

            return cfg;
        }
    }
}

カスタムモデルの使用

Sitecoreのコンテキストでは、xConnectクライアントAPIは、設定で使用可能なすべてのモデルから組み立てられたランタイム モデルを使用します。非Sitecoreコンテキストでは、操作するモデルをXConnectClientConfigurationに渡す必要があります。

var cfg = new XConnectClientConfiguration(
    new XdbRuntimeModel(Custom.Namespace.Model), collectionClient, searchClient, configurationClient);
先端

モデルの配列を使用してXdbRuntimeModelオブジェクトをインスタンス化できます。

この記事を改善するための提案がある場合は、 お知らせください!