同期アプリケーション
同期アプリケーションは、同期セッションを作成して、2 つの同期プロバイダに接続し、そのセッションを使って同期を開始するソフトウェア コンポーネントです。同期中には Sync Framework をホストします。また、同期アプリケーションで、Sync Framework から報告されたイベントを処理することもできます。
注意
Sync Framework は、アプリケーションからプロバイダを取得したり、インスタンス化したりする方法まではカバーしていません。プロバイダが同期を要求しているかどうか、また、どのプロバイダと同期しようとしているかの判別方法についても同様です。
同期アプリケーションの実装
同期アプリケーションは、マネージ コードまたはアンマネージ コードを使って実装できます。
セキュリティメモ : |
---|
Sync Framework では、同期プロバイダを信頼されたコードと見なします。そのため、同期プロバイダを呼び出すアプリケーションでは、プロバイダの明示的なナレッジを含めるか、デジタル署名などの他のメカニズムを使用して、プロバイダの信頼を確立する必要があります。 |
マネージ コードを使用した同期アプリケーションの実装
アプリケーションで同期セッションを作成して開始するには、次の手順に従います。
SyncOrchestrator オブジェクトを作成します。
オーケストレータの LocalProvider プロパティおよび RemoteProvider プロパティを設定します。
オーケストレータの Direction プロパティを適切な同期方向に設定します。同期方向を Upload に設定した場合、LocalProvider オブジェクトが同期元に、RemoteProvider オブジェクトが同期先になります。同期方向を Download に設定した場合、LocalProvider オブジェクトが同期先に、RemoteProvider オブジェクトが同期元になります。双方向同期は、DownloadAndUpload または UploadAndDownload を使用して実行できます。
オーケストレータの Synchronize メソッドを呼び出します。これにより、その後のすべての同期タスクを処理するためのセッションが作成され、アプリケーションで利用できるようになります。アプリケーションで同期をキャンセルするには、Cancel メソッドを呼び出します。
アンマネージ コードを使用した同期アプリケーションの実装
アプリケーションで同期セッション オブジェクトを作成して開始するには、次の手順に従います。
IApplicationSyncServices オブジェクトを作成します。これは、CoCreateInstance を呼び出すことによって行います。CLSID と IID には、それぞれ CLSID_SyncServices と IID_IApplicationSyncServices を渡します。
ISyncSession オブジェクトを作成します。これは、IApplicationSyncServices::CreateSyncSession
ISyncSession::Start メソッドを呼び出します。その後のすべての同期タスクは、Sync Framework によって処理されます。アプリケーションで同期をキャンセルする必要がある場合は、ISyncSession::Cancel メソッドを呼び出します。
同期が完了した後、別のセッション オブジェクトを作成して、同期元と同期先のプロバイダを逆にし、新しいセッション オブジェクトの ISyncSession::Start を呼び出すことにより、双方向同期を実現できます。
同期アプリケーションの作成方法の詳細については、「アンマネージ同期アプリケーションを作成する方法」を参照してください。
同期イベント
アプリケーションでは、同期中に発生したさまざまなイベントについての通知を受けることができます。イベント処理の主な目的は、進行状況を追跡することと、カスタムの競合処理を実装することの 2 つです。
マネージ コード : イベント ハンドラ メソッドを実装し、そのメソッドを SyncOrchestrator オブジェクトまたは SyncCallbacks オブジェクトに登録します。
アンマネージ コード : ISyncSession::RegisterCallback メソッドを使用して、ISyncCallback インターフェイスを実装するオブジェクトを登録します。
詳細については、「同期イベントへの応答」を参照してください。
参照
リファレンス
IApplicationSyncServices インターフェイス
ISyncSession インターフェイス
ISyncCallback インターフェイス
SyncOrchestrator
SyncCallbacks