SyncML

SyncMLSynchronization Markup Language)は、クロスプラットフォームで使えるXMLを基にしたデータ同期のオープン規格の以前の名前である。2000年12月17日にSyncML 1.0がリリース[1]、1.1は2002年2月26日にリリースされた[2]。このプロジェクトは現在、 オープン・モバイル・アライアンス (Open Mobile Alliance、OMA)で Data Synchronization (データ同期) プロジェクトとDevice Management (デバイス管理) プロジェクトとなっている。 SyncMLの目的は、既存のデータ同期ソリューションの代わりとなるオープン標準を提供することである。既存のデータ同期ソリューションは、ほとんどがベンダー、アプリケーション、オペレーティングシステムに固有となっている。

詳細

SyncMLは、以下のように要求と応答のコマンドを交換することで機能する。

  • 携帯機器が、Alertコマンドを送信し、更新のみの同期を開始したいことを伝える
  • コンピュータは、Statusコマンドで要求を受け入れる応答をする
  • 携帯機器が、1つ以上のSyncコマンドを送り、各コマンドにはAddサブコマンドで電話帳エントリなどの追加項目が含まれる。エントリ数が多い場合は、<Final />タグは含まれない。
  • <Final/>タグが含まれなかった場合、コンピュータは適切なAlertメッセージの続行を要求し、携帯機器は別の項目を送信する。もしくは、コンピュータはStatusコマンドですべてのデータを受信したことを確認する。

コマンド(AlertSyncStatusなど)はメッセージにグループ化される。各メッセージとその各コマンドには識別子があるため、MsgID、CmdIDのペアがコマンドを一意に決定する。 Statusコマンドなどの応答には、コマンドを識別するペアが続く。

コマンドの前に、メッセージにはトランザクションに関するさまざまなデータを指定するヘッダーが含まれる。前の例のように、更新同期を開始するためAlertコマンドを含むメッセージの例は次の通りとなる。

<?xml version="1.0"?>
<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/OMA-TS-SyncML_RepPro_DTD-V1_2.dtd">
<SyncML xmlns="SYNCML:SYNCML1.2">
 <SyncHdr>
  <VerDTD>1.1</VerDTD>
  <VerProto>SyncML/1.1</VerProto>
  <SessionID>1</SessionID>
  <MsgID>1</MsgID>
  <Target><LocURI>PC Suite</LocURI></Target>
  <Source><LocURI>IMEI:3405623856456</LocURI></Source>
  <Meta><MaxMsgSize xmlns="syncml:metinf">8000</MaxMsgSize></Meta>
 </SyncHdr>

 <SyncBody>
  <Alert>
   <CmdID>1</CmdID>
   <Data>203</Data>   <!-- 203 = mobile signals a refresh from it to computer -->
   <Item>
    <Target><LocURI>Events</LocURI></Target>
    <Source><LocURI>/telecom/cal.vcs</LocURI></Source>
    <Meta><Anchor xmlns="syncml:metinf"><Last>42</Last><Next>42</Next></Anchor></Meta>
   </Item>
  </Alert>

  <Final/>
 </SyncBody>
</SyncML>

コンピュータからの応答は、次のようなxmlドキュメントとなる(説明のためにコメントが追加されている)。

<?xml version="1.0"?>
<!DOCTYPE SyncML PUBLIC "-//SYNCML//DTD SyncML 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/OMA-TS-SyncML_RepPro_DTD-V1_2.dtd">
<SyncML>
 <SyncHdr>
  <VerDTD>1.1</VerDTD>
  <VerProto>SyncML/1.1</VerProto>
  <SessionID>1</SessionID>
  <MsgID>1</MsgID>
  <Target><LocURI>IMEI:3405623856456</LocURI></Target>
  <Source><LocURI>PC Suite</LocURI></Source>
 </SyncHdr>

 <SyncBody>

  <!-- accept the header of the last message from the client -->
  <Status>
   <CmdID>1</CmdID>
   <MsgRef>1</MsgRef>
   <CmdRef>0</CmdRef>	<!-- 0 = header of the message -->
   <Cmd>SyncHdr</Cmd>
   <TargetRef>PC Suite</TargetRef>
   <SourceRef>IMEI:3405623856456</SourceRef>
   <Data>200</Data>	<!-- 200 = ok, accepted -->
  </Status>

  <!-- accept the request of the mobile for a sync -->
  <Status>
   <CmdID>2</CmdID>	<!-- this is command #2 -->
   <MsgRef>1</MsgRef>
   <CmdRef>1</CmdRef>	<!-- it respond to command msg=1,cmd=1 -->
   <Cmd>Alert</Cmd>
   <TargetRef>Events</TargetRef>
   <SourceRef>/telecom/cal.vcs</SourceRef>
   <Meta><Anchor xmlns="syncml:metinf"><Next>0</Next><Last>0</Last></Anchor></Meta>
   <Data>200</Data>	<!-- 200 = ok, accepted -->
  </Status>

  <Final/>
 </SyncBody>
</SyncML>

このトランザクションでは、その後、Syncコマンドを含む携帯機器からのメッセージを続行する。

この例は、携帯機器がすべてのデータをコンピュータに送信し、その逆は何も送信しない更新である。 Alertコマンドのさまざまなコードを使用して、他の種類の同期も開始できる。たとえば、「双方向同期」では、最後の同期からの変更のみがコンピュータに送信される。これでも同様のことが行われる。

LastタグとNextタグは、同期が失われる可能性の追跡に使用される。 Lastは、各デバイスで測定された、同期の最後の操作の時刻を表す。例えば、携帯機器側では、時間の順序を表す単調増加の番号(123、...)を使ったり、コンピュータ側では20140112T213401Z のような文字列を使ったりする。 Nextは現在の時刻を表し、Lastと同じ書式である。このタイミングで保存されたデータと、次の同期の際にLastと違いがある場合は、同期が失われていることを示す。非同期を検出すると、適切なアクションを実行して、デバイスを同期に戻す。必要に応じてすべてのデータの送信をすることもある。

アンカーは同期の喪失を検出するためにのみ使用され、送信されるデータを示すものではない。同期が失われた場合を除いて、通常の(更新されない)同期では、各デバイスは最後の同期以降のすべての変更を送信する。

関連項目

脚注

  1. SyncML Delivers Tomorrow´s Technology Today”. SyncML.org (2000年12月7日). 2001年4月10日時点のオリジナルよりアーカイブ。2021年4月2日閲覧。
  2. SyncML Turns Two, Releases Specifications v1.1 for Mobile Data Sync”. SyncML.org (2002年2月26日). 2002年4月18日時点のオリジナルよりアーカイブ。2021年4月2日閲覧。

外部リンク

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.