次の方法で共有


UDDI: XML Web サービス

 

Chris Lovett
Microsoft Corporation

2000 年 12 月 18 日

内容

どの XML を投稿しますか? XML を投稿する方法何を取り戻しますか? どの程度うまく機能しますか? 結論

UDDI ドリルダウンの例 (インターネット エクスプローラー 5.x が必要)

ユニバーサル記述、検出、統合 (UDDI) サービスが Microsoft、IBM、Ariba で稼働するようになりました。 これは、アプリケーションから他のオンライン サービスを動的に検出するために使用できるオンライン Web サービスであり、すべて単純な XML インターフェイスにきちんとパッケージ化されています。

Extreme XML リーダーの場合、クライアント アプリケーションと中間層サーバーの間で XML を渡すことは新しいことはありません。 これは 1998 年から行っています。 しかし、この方向に進行中の業界の勢いを見て、このような便利なサービスが得られます。

それでは、私はちょうどニティグリティに飛び込みましょう。 本当に知る必要があるのは、XML を投稿する URL です。 次の 3 つの URL を見つけるために掘り下げが必要でした。

「お問い合わせ」の UDDI エントリ ポイントです。 更新プログラムのエントリ ポイントは異なり、通常はセキュリティ上の理由から HTTPS アドレスです。

どの XML を投稿しますか?

まず、XML は UTF-8 (UDDI プロジェクトによって行われた意図的な簡略化) にあり、SOAP エンベロープにラップする必要があります。 SOAP エンベロープは次のようになります。

<?xml version='1.0' encoding='UTF-8'?>
<Envelope xmlns='https://schemas.xmlsoap.org/soap/envelope/'>
<Body>...</Body>
</Envelope>

Body> 要素の<内容には、uddi スキーマからの任意のクエリを指定できます。 たとえば、次のクエリは、SOAP エンベロープの Body> 内に<配置されると、Microsoft の詳細を返します。

<find_business generic="1.0" xmlns="urn:uddi-org:api">
    <name>Microsoft</name>
</find_business>

名前空間を SOAP 名前空間から "urn:uddi-org:api" 名前空間に切り替えるのに注意してください。 find_business クエリでは、他にも多くの操作を実行できます。

XML を投稿する方法

JScript ファイルまたは HTML ページから、次のように MSXML によって提供される XMLHTTP コントロールを使用できます。

   http = new ActiveXObject("Microsoft.XMLHTTP");
   http.open("POST", url, false);
   http.setRequestHeader("Accept","text/xml");
   http.setRequestHeader("Cache-Control","no-cache");
   http.setRequestHeader("SOAPAction",'""');
   http.send(msg);

この場合、HTTP ヘッダーに SoapAction を設定することで、優れた SOAP 市民になることにしました。 また、毎回ライブ結果が欲しいので、テキスト/xmlの結果のみを受け入れてすべてのキャッシュをオフにすることにしました。 もちろん、添付されたサンプル コードでは、onreadystatechange コールバックを使用して非同期的にこれを行います。

何を取り戻しますか?

もちろん、XML も同様です。 この場合、現在 Microsoft に登録されている businessInfo> 要素の<詳細な一覧が表示されます。これには、UDDI サービス自体に関する情報が含まれます。

<businessList generic="1.0" operator="Microsoft Corporation"
    truncated="false" xmlns="urn:uddi-org:api">
  <businessInfos>
    <businessInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3">
      <name>Microsoft Corporation</name>
    <description xml:lang="en">Empowering people through great software -
    any time, any place and on any device is Microsofts vision. As the worldwide
    leader in software for personal and business computing, we strive to produce
    innovative products and services that meet our customer's </description>
    <serviceInfos>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                        serviceKey="1FFE1F71-2AF3-45FB-B788-09AF7FF151A4">
          <name>Web services for smart searching</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="8BF2F51F-8ED4-43FE-B665-38D8205D1333">
          <name>Electronic Business Integration Services</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="611C5867-384E-4FFD-B49C-28F93A7B4F9B">
          <name>Volume Licensing Select Program</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="5DE3CE59-923E-42D3-B7FB-34FC3C3CBC16">
          <name>Technet</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="24E553C3-7E3E-484A-8ECA-80E0D0B4A91F">
          <name>Microsoft Developer Network</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="77DD86E5-CD70-4219-A28C-37231EAF3901">
          <name>Online Shopping</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="0860E130-D4AF-4BD5-9F5C-D7F6FA4B1AD8">
          <name>Home Page</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
          <name>UDDI Web Services</name>
        </serviceInfo>
        <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                     serviceKey="A8E4999A-21A3-47FA-802E-EE50A88B266F">
          <name>UDDI Web Sites</name>
        </serviceInfo>
      </serviceInfos>
    </businessInfo>
  </businessInfos>
</businessList>

ここから、ドリルインして、1 つの特定のサービスに関する情報を取得できます。 たとえば、UDDI Web サービスでドリル インします。 上記の結果から businessKey を取得し、find_service>を使用<して名前でサービスを検索できます。

<find_service generic='1.0' xmlns='urn:uddi-org:api'
    businessKey='0076B468-EB27-42E5-AC09-9955CFF462A3'>
    <name>UDDI Web Services</name>
</find_service>

これにより、このサービスに関する情報が返されます。

<serviceList generic="1.0" operator="Microsoft Corporation"
        truncated="false" xmlns="urn:uddi-org:api">
  <serviceInfos>
    <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                    serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
      <name>UDDI Web Services</name>
    </serviceInfo>
  </serviceInfos>
</serviceList>

その後、 serviceKey を使用して、この特定のサービスに関する詳細を取得できます。

<get_serviceDetail generic='1.0' xmlns='urn:uddi-org:api'>
    <serviceKey>D2BC296A-723B-4C45-9ED4-494F9E53F1D1</serviceKey>
</get_serviceDetail>

これにより、次 <の bindingTemplates が返されます>。

<serviceDetail generic="1.0" operator="Microsoft Corporation"
    truncated="false" xmlns="urn:uddi-org:api">
  <businessService businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
                   serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
    <name>UDDI Web Services</name>
  <description xml:lang="en">UDDI SOAP/XML message-based programmatic web
  service interfaces.</description>
  <bindingTemplates>
    <bindingTemplate bindingKey="313C2BF0-021D-405C-8149-25FD969F7F0B"
                     serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
      <description xml:lang="en">Production UDDI server,
      Publishing interface</description>
    <accessPoint URLType="https">https://uddi.microsoft.com/publish</accessPoint>
    <tModelInstanceDetails>
      <tModelInstanceInfo tModelKey="uuid:64C756D1-3374-4E00-AE83-EE12E38FAE63">
        <description xml:lang="en">UDDI SOAP Publication Interface</description>
      </tModelInstanceInfo>
      </tModelInstanceDetails>
    </bindingTemplate>
    <bindingTemplate bindingKey="A9CAFBE4-11C6-4BFE-90F5-595970D3DE24"
        serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
      <description xml:lang="en">Production UDDI server, Inquiry interface</description>
      <accessPoint URLType="http">http://uddi.microsoft.com/inquire</accessPoint>
      <tModelInstanceDetails>
        <tModelInstanceInfo tModelKey="uuid:4CD7E4BC-648B-426D-9936-443EAAC8AE23">
          <description xml:lang="en">UDDI SOAP Inquiry Interface</description>
        </tModelInstanceInfo>
        </tModelInstanceDetails>
      </bindingTemplate>
    <bindingTemplate bindingKey="3FE6C834-293E-4341-AF6E-41DC68949764"
                     serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
      <description xml:lang="en">Test UDDI server, Publishing interface</description>
      <accessPoint URLType="https">https://test.uddi.microsoft.com/publish</accessPoint>
      <tModelInstanceDetails>
        <tModelInstanceInfo tModelKey="uuid:64C756D1-3374-4E00-AE83-EE12E38FAE63">
          <description xml:lang="en">UDDI SOAP Publication Interface</description>
        </tModelInstanceInfo>
        <tModelInstanceInfo tModelKey="uuid:F372E009-F372-429C-A09A-794113A5C5F9">
          <description xml:lang="en">urn:microsoft-com:test-signature-element -
          signifies that this is a testing version of the service</description>
          </tModelInstanceInfo>
        </tModelInstanceDetails>
      </bindingTemplate>
    <bindingTemplate bindingKey="8ED4AD10-C63B-495E-8969-B3938F86E937"
                     serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1">
      <description xml:lang="en">Test UDDI server, Inquiry interface</description>
      <accessPoint URLType="http">http://test.uddi.microsoft.com/inquire</accessPoint>
      <tModelInstanceDetails>
        <tModelInstanceInfo tModelKey="uuid:4CD7E4BC-648B-426D-9936-443EAAC8AE23">
          <description xml:lang="en">UDDI SOAP Inquiry Interface</description>
        </tModelInstanceInfo>
        <tModelInstanceInfo tModelKey="uuid:F372E009-F372-429C-A09A-794113A5C5F9">
          <description xml:lang="en">urn:microsoft-com:test-signature-element -
          signifies that this is a testing version of the service</description>
          </tModelInstanceInfo>
        </tModelInstanceDetails>
      </bindingTemplate>
    </bindingTemplates>
  <categoryBag>
    <keyedReference keyName="KEYWORD" keyValue="API"
        tModelKey="uuid:A035A07C-F362-44DD-8F95-E2B134BF43B4"></keyedReference>
    <keyedReference keyName="KEYWORD" keyValue="SOAP"
        tModelKey="uuid:A035A07C-F362-44DD-8F95-E2B134BF43B4"></keyedReference>
    <keyedReference keyName="KEYWORD" keyValue="XML"
        tModelKey="uuid:A035A07C-F362-44DD-8F95-E2B134BF43B4"></keyedReference>
    </categoryBag>
  </businessService>
</serviceDetail>

これで、オンライン Web サービス自体に関する非常に豊富な情報を取得し始めていることがわかります。 これは、実際には 4 つのアクセス ポイント、2 つのテスト アクセス ポイント、および 2 つの実稼働アクセス ポイントhttp://test.uddi.microsoft.comhttp://uddi.microsoft.comがあることを示しています。 また、UDDI 照会アクセス ポイントは HTTP 経由でパブリックにアドレス指定可能であり、発行アクセス ポイントは HTTPS 保護下にあることを示します。

tModelKey 情報を使用して、UDDI Web Serice を提供するすべての登録済み企業を次のように検索することもできます。

<find_business generic='1.0' xmlns='urn:uddi-org:api'>
   <tModelBag><tModelKey>uuid:4CD7E4BC-648B-426D-9936-443EAAC8AE23</tModelKey></tModelBag>
</find_business>

これにより、Microsoft と IBM の <businessInfos> が返されます。 Ariba tModelInstanceDetails> はまだ使用できないように見えるので、Ariba <は返されません。

どの程度うまく機能しますか?

Microsoft と Ariba の実装には、いくつかの厄介な違いがあることがわかりました。 たとえば、Ariba 実装では、UTF-8 を大文字にする必要があり、XML 宣言で余分な空白を処理することはできません。

このような風変わりな点は、これらのサービスが完全に相互運用できるようにするには、アイロンがけする必要があります。 応答時間はかなり良いことがわかりましたが、データは少し同期されていないようです。時間の経過と同時に同期が改善されることを願っています。

まとめ

外部のビジネス パートナーによって提供されるサービスに動的に接続する必要があるアプリケーションを構築する場合は、アプリケーションを UDDI レジストリに接続することを間違いなく考慮する必要があります。 ビジネス アプリケーション レイヤーの DNS であるかのように考えてください。 興味深いのは、リアルタイムでアクセス ポイントを追加、変更、削除し、DNS 伝達に関係する 1 週間以上の遅延を回避できることです。

多くの人が、UDDI ディレクトリで会社とその登録済みサービスを見つけた後に何をすべきかを尋ねている。 UDDI は、すべてを解決するとは主張しません。 これまでに発明したすべてのものを含むマスタービジネス間プロトコルを仕様化することは大きな事業であり、おそらく決して起こりません。 UDDI 理論は、アプリケーションでいくつかの既知の種類のビジネス プロトコルを使用してビジネスを行う方法を知り、これらのプロトコルを既知の方法で記述して、そのプロトコルをサポートする他の企業を動的に見つけられるようにすることです。 または、UDDI を使用してこれらのパートナーが提供する新しいサービスを見つけるだけの、よく知られた信頼できるグローバル ビジネス パートナーの数が少ない場合もあります。 この場合、各サービスへの接続に必要なアダプターをダウンロードするために、他の信頼されたチャネルが既に確立されている可能性があります。

要するに、UDDI は間違いなく正しい方向への大きなステップです。

Chris Lovett は、Microsoft の XML チームのプログラム マネージャーです。