UDDI :一种 XML Web 服务
作者:Chris Lovett
[url href=http://www.microsoft.com/china/msdn/voices/12182000-test.htm]UDDI 查询示例[/url](需要 Internet Explorer 5.x)
[url href=http://www.uddi.org/]通用描述、发现和集成 (UDDI) 服务[/url](英文)
目前可以直接运行于 Microsoft、IBM 和 Ariba。这是一种联机 Web 服务,可在应用程序中用来动态发现其他联机服务。该服务全部被巧妙地打包在一个简单的 XML 接口中。
对于有经验的 XML 读者,在客户端应用程序和中间层服务器之间传递 XML 根本不是什么新鲜事。我们从 1998 年开始就这么做。但是,我们也很高兴能看到行业在这个方向上开发出象 UDDI 一样有用的其他服务。
所以,让我们专注于基本事实。您真正需要了解的是可以向其张贴 XML 的 URL。我们经过努力,找到了以下三个 URL:
<?xml version='1.0' encoding='UTF-8'?><Envelope xmlns='http://schemas.xmlsoap.org/soap/envelope/'><Body>?lt;/Body></Envelope>
的任何查询。例如,以下查询,当置于 SOAP 信封中时将返回有关 Microsoft 的详细信息:<find_business generic="1.0" xmlns="urn:uddi-org:api"> <name>Microsoft</name></find_business>
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);<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">以优秀软件给人力量——随时,随地,在任何 设备上——这就是 Microsoft 的目标。作为 全球领先的个人和商务软件厂商,我们致力于 提供创新的产品和服务,满足我们客户的需求</description> <serviceInfos> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="1FFE1F71-2AF3-45FB-B788-09AF7FF151A4"> <name>智能搜索 Web 服务</name> </serviceInfo> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="8BF2F51F-8ED4-43FE-B665-38D8205D1333"> <name>电子商务综合服务</name> </serviceInfo> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="611C5867-384E-4FFD-B49C-28F93A7B4F9B"> <name>批量授权选择程序</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 开发人员网络</name> </serviceInfo> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="77DD86E5-CD70-4219-A28C-37231EAF3901"> <name>联机购物</name> </serviceInfo> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="0860E130-D4AF-4BD5-9F5C-D7F6FA4B1AD8"> <name>主页</name> </serviceInfo> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"> <name>UDDI Web 服务</name> </serviceInfo> <serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3" serviceKey="A8E4999A-21A3-47FA-802E-EE50A88B266F"> <name>UDDI Web 站点</name> </serviceInfo> </serviceInfos> </businessInfo> </businessInfos></businessList>
<find_service generic='1.0' xmlns='urn:uddi-org:api' businessKey='0076B468-EB27-42E5-AC09-9955CFF462A3'> <name>UDDI Web 服务</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 服务</name> </serviceInfo> </serviceInfos></serviceList>
<get_serviceDetail generic='1.0' xmlns='urn:uddi-org:api'> <serviceKey>D2BC296A-723B-4C45-9ED4-494F9E53F1D1</serviceKey></get_serviceDetail>
<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 服务</name> <description xml:lang="en">基于 UDDI SOAP/XML 消息的可编程 Web 服务接口。</description> <bindingTemplates> <bindingTemplate bindingKey="313C2BF0-021D-405C-8149-25FD969F7F0B" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"> <description xml:lang="en">产品 UDDI 服务器,发布接口</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 发布接口</description> </tModelInstanceInfo> </tModelInstanceDetails> </bindingTemplate> <bindingTemplate bindingKey="A9CAFBE4-11C6-4BFE-90F5-595970D3DE24" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"> <description xml:lang="en">产品 UDDI 服务器,查询接口</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 查询接口</description> </tModelInstanceInfo> </tModelInstanceDetails> </bindingTemplate> <bindingTemplate bindingKey="3FE6C834-293E-4341-AF6E-41DC68949764" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"> <description xml:lang="en">测试 UDDI 服务器,发布接口</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 发布接口</description> </tModelInstanceInfo> <tModelInstanceInfo tModelKey="uuid:F372E009-F372-429C-A09A-794113A5C5F9"> <description xml:lang="en">urn:microsoft-com:test-signature-element 表示这是服务的测试版
</description> </tModelInstanceInfo> </tModelInstanceDetails> </bindingTemplate> <bindingTemplate bindingKey="8ED4AD10-C63B-495E-8969-B3938F86E937" serviceKey="D2BC296A-723B-4C45-9ED4-494F9E53F1D1"> <description xml:lang="en">测试 UDDI 服务器,查询接口</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 查询接口</description> </tModelInstanceInfo> <tModelInstanceInfo tModelKey="uuid:F372E009-F372-429C-A09A-794113A5C5F9"> <description xml:lang="en">urn:microsoft-com:test-signature-element 表示这是服务的测试版
</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>
上,两个产品访问点在 http://uddi.microsoft.com/(英文)
上。它还告诉我们 UDDI 查询访问点是可以通过 HTTP 公开寻址的,而发布访问点处于 HTTPS 的保护下。<find_business generic='1.0' xmlns='urn:uddi-org:api'> <tModelBag><tModelKey>uuid:4CD7E4BC-648B-426D-9936-443EAAC8AE23</tModelKey></tModelBag></find_business>
如果您正在创建需要动态连接至外部业务伙伴所提供服务的应用程序,那么您无疑要考虑将您的应用程序连接至 UDDI 注册表。请将它想象为业务应用层的 DNS。有意思的是,您可以实时地添加、更改和删除访问点,从而解决 DNS 传播中一个星期或更长时间的延迟。
许多人会问,在 UDDI 目录中找到一个公司及其注册服务后要怎么做。确实,UDDI 并不声称能解决每件事。企图说明包含已经创造的每项事物的主要的商家对商家协议,是一项非常繁重的任务,而且几乎不可能实现。UDDI 的理论是应用程序将知道如何使用某些知名的业务协议来开展业务,并且这些协议要以众所周知的方式来描述,以便您能够动态地查找支持该协议的其他业务。另外,您也可以拥有少量知名而可靠的全球业务伙伴,通过他们您可以简单地使用 UDDI 来查找由其提供的新服务。在这种情况下,您可能早已拥有其他的可靠通道,用于下载连接至每一项服务所需的适配器。
总之,UDDI 确实在正确的方向上前进了一大步。
Chris Lovett 是 Microsoft XML 小组的编程经理。