账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
UDDI整合打造无疆界的资讯时代
 

【作者: 姚巧玫,胡百敬】2005年03月01日 星期二

浏览人次:【7172】

长久以来,我们期待无疆界资讯时代的到来,但由于资讯界各厂商间的技术一直壁垒分明,导致系统间的整合难如登天。虽说整合这条路难如登天,却是我们提升资讯系统价值必走的下一步。


由于W3C的努力,XML(Extensible Markup Language)除了增强简化企业间的资料交换外,也提供我们新的希望;而资讯界的巨头们合作推出的SOAP(Simple Object Access Protocol)通讯协定,也使应用程式间无须考虑彼此使用的是什么样的程式语言,以及底层使用的分散式物件结构,透过网际网路呼叫各种服务。…这些振奋人心的技术让大家认识到,早先由于电子商务的标准不同而产生的成本已经显著降低了,也因为有了这些技术和标准,原来难以处理的问题,现在变得较容易解决。


UDDI发展历程

现今许多企业选择使用Web服务来定义各部门内部的应用基础架构,以及与合作伙伴间进行线上交易。假使每个公司都根据本身的经验,得出自己特有的一套服务架构,可预见的结果就是相同的产业里,各企业对商业行为的描述与作法将会各自不同。当这些分布于不同企业或部门中的系统要沟通时,需要将不相容的部分进行整合,这会耗费巨大的代价。为了提供标准的分类、注册、查询等服务,领导厂商如微软、IBM 等再度携手制定了UDDI(Universal Description、Discovery and Integration)服务。


UDDI计画是在2000年秋天、由Ariba、IBM与微软共同创立。该服务利用XML 以及SOAP通讯协定,在2.0版定义了约40个SOAP讯息,使网路服务提供者或使用者可以在UDDI上登录和搜寻服务,或让Web服务程式自动读取UDDI的目录,寻找完成交易所需要的相关资讯。 UDDI商业注册中心的目的就是为了实现服务搜寻,进而促进企业Web服务的发展,并为企业提供一个便利的平台,以利于找寻同业或异业间适当的Web服务。


UDDI的规格原由UDDI.org组织所制定,2002年7月30日后由OASIS(Organization for the Advancement of Structured Information Standards)结构资讯标准促进组织接手。在UDDI架构下,软体厂商和程式开发人员都可以依此标准,让各自的应用程式共同运作。 UDDI的第二版,提供了在Web服务目录附加类别的功能。根据OASIS 表示,这可以让企业辨识UDDI的内容,了解企业的​​产业别、产品种类、地理位置等资讯。 OASIS的UDDI技术委员会现在也正在准备定出第三版的UDDI规范。在第三版当中,将会提供各UDDI服务供应商彼此间互连的登录系统;并加上数位签章以增强UDDI的安全性。第三版的UDDI可能会让服务导向架构(services-oriented architectures,SOA)这种新的软体设计方式更快被接受。


在服务导向架构当中,不管Web服务是用什么作业系统或程式语言开发,都可以共享资讯。这样一来,Web服务就成为「松散(loosely coupled)」架构,只在需要时和其他Web服务连结,UDDI目录服务也会因此更具价值。未来,它不会只是一个可有可无的选择,而是一个必要的组成元素。


UDDI提供的基本功能

UDDI的设计目的是补充现有线上交易和搜索引擎的不足,为电子商务和服务发现机制提供标准的格式。我们也可以把UDDI想像成商业应用程式的DNS服务,而UDDI的服务则可分为供应商所需的发布服务与使用者想要取得特定服务的搜寻两种功能。一是UDDI规范中没有直接涉及具体的商业流程搜寻,例如找出某个价格;或在特定地理区域内提供某种产品或服务的企业。也就是说进一步地需求配对,买方和卖方都需要更多地合作与设计。而UDDI为定义上层应用服务提供了基础架构。加入UDDI后,整体Web服务参与者协同合作的关系如(图一)所示。


《图一 Web Service 的提供者,用户以及UDDI三者之间的关系。》
《图一 Web Service 的提供者,用户以及UDDI三者之间的关系。》

图一中各角色的互动模式分述如下,


  • Web服务提供者:Web服务提供者向UDDI注册它所提供的服务(Publish)。


  • Web服务使用者:使用者端应用程式在UDDI寻找特定的Web服务,找到服务之后,应用程式直接在线上动态地存取该Web服务。


  • Web服务仲介:也就是UDDI服务,让提供者可以发布他所建置的Web服务,使用者可以查询所需的服务。



企业可以通过UDDI商业注册中心的网页介面,直接透过人来互动操作,或是以应用程式存取实作「UDDI Programmer's API标准」的程式介面之服务,来将资讯加入到UDDI商业注册中心。 UDDI商业注册中心在逻辑上是集中的,但在实体世界中却是分散的,由多个节点组成,相互之间按一定规则进行资料同步。当企业在UDDI商业注册中心的某个节点注册后,其注册资讯会自动复制到其他UDDI节点,于是就能被任何希望存取这些Web服务的人所发现。


UDDI服务透过一组标准或自订的分类方式,提供发人员一个找寻个别服务的机制,以达成重复运用的目的。这可以改善开发人员和IT人员的生产力,导致更低的总体拥有成本(TCO)和更可信赖、容易管理的应用程式。


UDDI实作

一般来说,应用程式或程式设计师经由UDDI商业注册中心获得Web服务的位置及其技术资讯。其中对于程式设计师来说,是让该系统能依规格存取所需的Web服务。或是描述自己的W​​eb服务规格,从而能让别人使用。


从商业层次上来说,UDDI商业注册中心可以用于查询合作伙伴是否拥有特定的Web服务之程式存取介面,或是找出相关行业中能提供某类服务的公司,并确定合作伙伴之Web服务技术规格,以了解呼叫该Web服务所需的细节。


至目前为止,公开在网际网路上提供UDDI服务的有微软和IBM两家公司。微软所提供的公共UDDI服务画面如(图二)所示,使用者可以互动登入的方式,透过网页直接进行注册与查询的工作。或是从微软网站下载.NET存取UDDI的类别,透过程式来与UDDI合作,以便注册与查询相关的服务。


《图二 微软在因特网上提供的公众UDDI服务。》
《图二 微软在因特网上提供的公众UDDI服务。》

微软在Visual Studio.NET开发环境的「起始页」中,「XML Web Services」页签就是用来支援UDDI服务,让你查询可用的Web服务,并同时建立该Web服务的代理程式,或是注册自己的Web服务到UDDI,其设定画面如(图三)所示。


《图三 Visual Studi.NET 2003在起始页提供的「在线资源」页签内,透过「XML Web Service」存取微软在因特网上提供的UDDI服务。》
《图三 Visual Studi.NET 2003在起始页提供的「在线资源」页签内,透过「XML Web Service」存取微软在因特网上提供的UDDI服务。》

目前除了可以使用微软在网路上免费提供的公共UDDI服务之外,也可在 Windows 2003版本自行架设UDDI服务。各公司可以建立自己的UDDI服务,提供自家人或合作伙伴查询可用的Web服务。 Windows 2003预设提供UDDI Services元件供使用者安装。透过「控制台」内的「新增或移除程式」对话窗,点选「新增/移除Windows元件」叫出如(图四)的对话窗便可选择「UDDI Services」。


《图四 安装Windows 2003默认提供的UDDI服务。》
《图四 安装Windows 2003默认提供的UDDI服务。》

点选(图四)中的「详细资料」按钮,可以看到如(图五)所表列实际安装的相关元件。


《图五 UDDI Services所安装的相关组件。》
《图五 UDDI Services所安装的相关组件。》

若欲透过微软的.NET程式语言存取UDDI服务,则需要先安装该公司所提供的UDDI SDK。它并不是独立包装的档案,而是内含在Windows Server 2003 Platform SDK套装内,完整的内容可以从微软网站下载并安装。


笔者现在就简单示范存取UDDI的Visual Basic.NET程式码。首先透过Visual Studio.NET开启一个新的主控台应用程式专案,并设定参考Microsoft.UDDI类别库,其Assembly位置在C:\Program Files\Microsoft SDK\Bin\Microsoft.Uddi.dll。


对UDDI服务注册与删除纪录的程式范例如下:



Imports Microsoft
Imports Microsoft.Uddi
Imports Microsoft.Uddi.Services
Imports Microsoft.Uddi.TModel '使用 tModel 类别会参照到此命名空间
Imports Microsoft.Uddi.Business 'Contact 会参照到
Imports Microsoft.Uddi.Extensions 'Uddi Site Location 会参照到

Module Module1

    Sub Main()
        '安装本机 UDDI 时所设定的 UDDI Web Service 位置
        Dim strUrl As String = "http://localhost/uddi/"
        Dim loc As New UddiSiteLocation( _
        strUrl & "inquire.asmx", _
        strUrl & "publish.asmx", _
        strUrl & "extension.asmx", _
        "测试 UDDI 网站", Authentication Mode.Windows Authentication)
        Dim cnnUddi As New UddiConnection(loc)

        Dim cul As System.Globalization.CultureInfo = System.Globalization.CultureInfo.CurrentUICulture

        '先注册 tModel
        Dim strtModelKey As String
        Dim tMod As New TModel
        With tMod
            .Name = New Uddi.Name("我的 tModel", cul)
            .Descriptions.Add("测试用的 tModel")
            .OverviewDoc.OverviewUrl = "http://localhost/ReportServer/ReportService.asmx?wsdl"
            .Overview Doc.Descriptions.Add("测试用的 Web Service 之 WSDL")

            Dim savMod As New SaveTModel(tMod)
            Dim tmodDetail As New TModelDetail
            tmodDetail = savMod.Send(cnnUddi)
            strtModel Key = tmodel Detail.TModel(0).TModel Key '取回 tModel Key,这是 UDDI 服务产生的 uuid 格式
        End With

        '注册商务
        '设定联络人
        Dim cnt As New Contact
        With cnt
            .PersonName = "姚巧玫"
            .Emails.Add("sandy.yao@udngroup.com")
            .Descriptions.Add("技术顾问", cul)
        End With
        Dim cnt2 As New Contact
        With cnt2
            .PersonName = "胡百敬"
            .Emails.Add("byron_hu@uuu.com.tw")
            .Descriptions.Add("技术顾问", cul)
        End With
        '商务服务的描述
        Dim rs As New Business Entity(New Uddi.Name("第一类服务", cul))
        With bus
            .Descriptions.Add("利用微软技术设计、开发与调教系统", cul)
            .Contacts.Add(cnt)
            .Contacts.Add(cnt2)
        End With
        Dim savBus As New SaveBusiness(bus)
        Dim strBDKey As String = savBus.Send(cnnUddi).BusinessEntities(0).BusinessKey


        '注册实际服务的细节,联系到上述的商务之下,同时透过 tModel 定义架构细节
        Dim tModIns As New TModelInstanceInfo(strtModelKey)
        tModIns.Descriptions.Add("参照某个服务定义的 tModel", cul)

        Dim bidTemp As New BindingTemplate
        With bidTemp
            .Descriptions.Add("终有一天会想到的 Web 服务", cul)
            .AccessPoint = New AccessPoint("http://someServer/SomeWebService", UrlType.Http)
            .TModelInstanceInfos.Add(tModIns)
        End With
        Dim busSer As New Business Service("技术顾问服务")
        With busSer
            .Business Key = strBD Key '归类在前一项的商务服务描述之下
            .BindingTemplates.Add(bidTemp)
        End With
        Dim savSer As New SaveService(busSer)
        Dim bs As ServiceDetail = savSer.Send(cnnUddi)
        Dim strBizKey As String = bs.BusinessServices(0).BusinessKey
        Console.WriteLine(bs.ToString()) '检视用 XML 描述的服务细节

        Console.WriteLine("注册成功,您可以透过 http://localhost/uddi 搜寻。" & _
        vbCrLf & "按 Enter 键后删除刚刚建立的商业服务")
        Console.ReadLine()

        Dim delBiz As New DeleteBusiness(strBizKey)
        delBiz.Send(cnnUddi)

        Console.WriteLine("删除商业服务成功。" _ _
        vbCrLf & "按 Enter 键后删除刚刚建立的 tModel")
        Console.ReadLine()

        Dim deltMod As New DeleteTModel(strtModelKey)
        deltMod.Send(cnnUddi)
        Console.WriteLine("删除 tModel 成功。" _ _
        vbCrLf & "按 Enter 键后结束")
        Console.ReadLine()
    End Sub
End Module

直接执行上述程式码后,透过浏览器检视UDDI服务的注册结果如(图六)。


《图六 透过程序在 Windows 2003所附的UDDI服务中注册。》
《图六 透过程序在 Windows 2003所附的UDDI服务中注册。》

由于UDDI整体注册的资料结构有些复杂,因此在查询资料时,往往要先组成整体的物件结构,再以For回圈逐步取出各类资料,限于篇幅,在此笔者不予深入讨论。安装完Windows Server 2003 Platform SDK后,预设在C:\Program Files\Microsoft SDK\Samples\UDDI目录下有完整的范例,若有兴趣,你可以自行进一步研究。在此仅以示范查询UDDI时的存取架构提供简单的范例程式码。



Imports Microsoft
Imports Microsoft.Uddi
Imports Microsoft.Uddi.Extensions '使用 Uddi Site Location 类别是会参照到此命名空间

Module Inquire
    Sub Main()
        '安装本机 UDDI 时所设定的 UDDI Web Service 位置
        Dim strUrl As String = "http://localhost/uddi/"
        Dim loc As New UddiSiteLocation( _
        strUrl & "inquire.asmx", _
        strUrl & "publish.asmx", _
        strUrl & "extension.asmx", _
        "测试 UDDI 网站", Authentication Mode.Windows Authentication)
        Dim cnnUddi As New UddiConnection(loc)

        Dim fs As New FindService("技术顾问服务")
        Dim sl As ServiceList = fs.Send(cnnUddi)
        If sl.ServiceInfos.Count = 0 Then
            Console.WriteLine("找不到所指定的服务名称")
            Return
        ElseIf sl.Truncated = True Then
            Console.WriteLine("符合的记录过多,UDDI 服务停止输出结果,请找寻更精确的服务名称")
        Else
            Console.WriteLine(sl.ToString())
        End If

        Dim gsd As New GetServiceDetail(sl.ServiceInfos(0).ServiceKey)
        Dim sd As ServiceDetail = gsd.Send(cnnUddi)
        Console.WriteLine(vbCrLf & vbCrLf & sd.ToString())

        '取得你所要的 Web 服务所在位置
        Console.WriteLine(vbCrLf & "取得服务的位置:" & _
        sd.BusinessServices(0).BindingTemplates(0).AccessPoint.Text)

        Dim strtModelKey As String = sd.BusinessServices(0).BindingTemplates(0).TModelInstanceInfos(0).TModelKey
        Dim gtmd As New GetTModelDetail(strtModelKey)
        Dim tmd As TModelDetail = gtmd.Send(cnnUddi)
        Console.WriteLine(vbCrLf & vbCrLf & tmd.ToString())

        '取得 tModel 该类服务的说明文件,例如 WSDL
        Console.WriteLine(vbCrLf & "tModel 的说明文件所在位置:" & _
        tmd.TModels(0).OverviewDoc.OverviewUrl)

        Console.WriteLine("按下 Enter 键结束")
        Console.ReadLine()
    End Sub
End Module

上述程式码的执行结果如下所示:



<? xml version="1.0" encoding="utf-8"? >
<serviceList xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" operator="UDDI" truncated=" false" generic="2.0" xmlns="urn:uddi-org:api_v2">
  "
    <serviceInfo serviceKey="355c5bf6-c5a1-46a6-8930-3c74050ce596" businessKey="f9d6ffaf-926d-4b12-9f4a-01fe9d8d1a44">
      <name xml:lang="en">技术顾问服务</name>
    </serviceInfo>
  "
</serviceList>

<? xml version="1.0" encoding="utf-8"? >
<serviceDetail xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" operator="UDDI" truncated=" false" generic="2.0" xmlns="urn:uddi-org:api_v2">
  <businessService serviceKey="355c5bf6-c5a1-46a6-8930-3c74050ce596" businessKey="f9d6ffaf-926d-4b12-9f4a-01fe9d8d1a44">
    <name xml:lang="en">技术顾问服务</name>
    "
      <bindingTemplate serviceKey="355c5bf6-c5a1-46a6-8930-3c74050ce596" bindingKey="d5120fea-f66c-4829-bf0d-342148a88b71">
        <description xml:lang="zh-TW">终有一天会想到的 Web 服务</description>
        http://someServer/Some WebService'http://someServer/Some WebService
        "
          '
            <description xml:lang="zh-TW">参照某个服务定义的 tModel</description>
          "
        "
      "
    "
  "
"

取得服务的位置:http://some Server/Some Web Service

<? xml version="1.0" encoding="utf-8"? >
<tModelDetail xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" operator="UDDI" generic=" 2.0" truncated="false" xmlns="urn:uddi-org:api_v2">
  '
    我的 Model"我的 Model
    <description xml:lang="en">测试用的 tModel</description>
    "
      <description xml:lang="en">测试用的 Web Service 之 WSDL</description>
      http://localhost/Web Service/service1.asmx?wsdl"http://localhost/Web Service/service1.asmx?wsdl
    "
  </tModel>
"

其他相关tModel的说明文件可参考http://localhost/myWebService/service1.asmx?wsdl。


UDDI的现况与未来

日前曾在新闻上看到IBM与日本电信巨人NTT的子公司NTT Com(NTT Communications)合作建置公众的UDDI服务,预计这将可加速亚太区B2B电子商务市场的发展。 NTT Com是第一家在亚太地区建置与经营公众UDDI服务的业者。使用IBM WebSphere平台提供该服务,并以DB2作为资料储存中心。


同时,IBM也推出WebSphere旗下最新版的网路服务开发工具;亦可让企业建置内部专属的UDDI服务。也就是说IBM与微软两大阵营都有UDDI的开发与建置环境。


如前文所述,UDDI资料库是全球性的商业目录,它将可供各企业登录其业务内容与服务项目、描述、发现及整合其他企业的业务及服务内容。 UDDI的营运者会定期更新全球其他UDDI节点的商业登录资料,以便将网路服务的触角延伸至全球使用者,目前已有IBM、惠普、微软及SAP四家UDDI公众资料库经营者,NTT将是第五家、也是亚太区第一家相关服务业者。


UDDI目前虽然受到业界广泛的支持,两大软体厂商IBM和Microsoft都全力在推动这个规范,但是到目前为止OASIS并未公布第三版UDDI会在何时完成标准化,因此它还不是一个开放的标准。 UDDI工作小组正在计画对规范草案进行扩展,加入目录服务搜寻以外的内容。


而UDDI将来的特性将包括对产品或服务进行定位的能力、定义网路服务的实现模式、提供对商业组织,及团体和贸易集团的分层结构进行管理的能力。未来的发展方向将是使UDDI支援更复杂的商业逻辑为目标,针对B2B(商家到商家)和M2M(市场到市场),为网路服务合作提供一个公共规范。而由于参与UDDI商业注册乃免费服务,Forrester Research分析师便认为UDDI仍具有风险,因为目前UDDI并不具获利模式,故参与厂商极有可能随时抽身,建立自己的专属版本。尽管如此,分析师仍强调UDDI仍具有相当的成长空间。


相关文章
出囗管制风险下的石墨替代技术新视野
用Arduino 打造机器人:循迹、弹钢琴、下棋都行!
树莓派推出AI摄影机、新款显示器
智慧充电桩百花齐放
充电站布局多元商业模式
comments powered by Disqus
相关讨论
  相关新闻
» 工研院MWC 2024展会直击 5G-A无线通讯、全能助理成下一波AI风潮
» 经部「2023玩学5G新视界」 引领台湾网通产业跃上国际舞台
» 取得ISO 14064-1作为净零起手式 鼎新以碳总管助力企业跨步绿色转型
» 经济部主办通讯大赛连线全球 多国创新应用现身
» 经济部支持跨国研发有成 台欧双方分享B5G~6G规划


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK85L6NMTEGSTACUK7
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw