380 likes | 512 Views
CON223 UDDI: 服务的发现和搜索. 课程内容概述. 在这个讲座里,我们会介绍 UDDI 的基本的数据模型和它的主要功能.我们会演示如何发布 web service 的信息到微软的 UDDI 服务器上和如何在不同的应用环境下依靠 UDDI 找到合适的 web service .另外你也可以了解到微软下一个版本的 UDDI 产品中可能加入的一些新的功能 . 本讲座主要合适于企业的软件开发人员 , 架构设计人员 , 企业 CIO, 以及从事 IT 架构咨询的专业人员. 课程内容安排. SOA 和 Web 服务管理的挑战 UDDI 简介 核心的数据模型 分类的应用
E N D
课程内容概述 • 在这个讲座里,我们会介绍UDDI的基本的数据模型和它的主要功能.我们会演示如何发布web service的信息到微软的UDDI服务器上和如何在不同的应用环境下依靠UDDI找到合适的web service.另外你也可以了解到微软下一个版本的UDDI产品中可能加入的一些新的功能. • 本讲座主要合适于企业的软件开发人员,架构设计人员, 企业CIO,以及从事IT架构咨询的专业人员.
课程内容安排 • SOA和Web服务管理的挑战 • UDDI简介 • 核心的数据模型 • 分类的应用 • 微软UDDI Services产品简介 • UDDI Services的典型应用 • 下一个微软UDDI版本
SOA和Web Services • 面向服务的架构(SOA) • 应用的业务逻辑通过多个相对独立和非紧密耦合的服务实现 • 加快服务的更新和部署周期,从而提高敏捷性 • 提高服务的重用性 • 跨平台 • Web Services:完整的自定义接口描述的基于XML数据格式的应用服务.这些服务可以通过互联网或者内部网被发布,发现,和使用 • 服务的应用不依赖于操作系统或者编程语言 • 一系列的Web Services的标准
服务数量快速增长带来的挑战 • 面向服务的架构会使Web Services数目快速增长 • 由此带来的问题 • 服务如何被发现? • 作为IT管理员,我如何有效的管理所有服务? • 我怎么知道现在企业里有没有服务已经实现了我想要的功能? • UDDI是解决方案 • 一句话概括:UDDI是服务的注册表
微软基于服务的开发平台 应用4 应用1 应用2 应用3 WCF (Indigo) WSE BizTalk 适配器 其他 协议栈 网络 WS-* 系列协议 Infrastructure and Profiles Metadata WS-Federation WS-Management Devices Profile Assurances WS-Secure Conversation WS-Business Activity WS-Metadata Exchange UDDI Server WS-Trust WS-Atomic Transaction UDDI WS-Security WS-Reliable Messaging WS-Coordination WS-Policy Messaging WSDL SOAP WS-Addressing MTOM XML Schema Foundation XML Infoset XML 1.0 XML Namespaces MIME SOAP / HTTP
UDDI (通用的描述,发现和集成) • UDDI是一个标准(OASIS) • 主要IT行业巨头的支持(Microsoft,IBM, SAP, Oracle,…) • 非常灵活的数据模型 • 丰富的搜索功能 • 标准的SOAP接口
tModel(技术模型):服务提供的接口的定义 0…n Service(服务): 服务的描述 0…n 0…n Binding(绑定): 服务端点的信息 UDDI 核心数据模型 Provider: 服务提供者的信息
tModel(技术模型):服务提供的接口的描述 0…n Service(服务): 服务的描述 0…n 0…n Binding(绑定): 服务端点的信息 UDDI 核心数据模型 Provider: 服务提供者的信息 服务部署部门的名字,描述和分类. 指向 WSDL 的URL 服务的名字,描述和分类 访问地址和分类
分类在UDDI中的应用 • 为什么要分类? • 有效的搜索和快速准确地发现服务 • “我要找到部署在中国的,日用消费品,库存跟踪的服务” • 分类提供了一个非常重要的描述手段 • 分类的例子: • 地理位置. 比如:服务器所在的城市 • 服务提供者所属部门 • 服务的部署环境 • 访问权限
ASP.NET 用户界面 XML SOAP API HTTP or HTTPS IIS服务器(Internet Information Services) 业务逻辑用.NET实现 MSDE SQL Server2000 或 微软UDDI Services 架构 活动目录(Active Directory)用户认证 & 授权 管理和监控
微软UDDI Services组成 • “UDDI站点” • 数据库(SQL Server 2000 或MSDE) • Web • 用户界面(发布服务,搜索服务,管理功能的网页) • UDDI v1.0 & v2.0 SOAP接口 • 微软附加的SOAP接口 • UDDI站点管理控制台 • 本地和远程站点管理 • 标准的微软管理控制台界面
微软UDDI Services组成 • UDDI SDK • 包括在Windows 2003 服务器 Platform SDK • .NET 1.1 • 管理员工具 • 包括在Windows 2003 服务器 Resource Kit • 类(categorization)编辑器 • 数据导出工具 • UDDI Services组件配置工具 • Visual Studio .NET 整合 • 加web reference
发布服务到UDDI Services • 什么时候要发布服务? • 贯穿于服务整个生命周期:部署,更新,退休 • 发布服务的方式:浏览器界面和SOAP API • 通过浏览器界面手动发布 • 适用于简单的服务发布和少数量的服务 • 手动过程,容易出错 • 通过编程用SOAP API发布 • 可以很方便地用提供的SDK实现 • 信息准确 • 减少重复劳动
SOAP API消息集 • 典型的请求/回答消息 • 对每个核心的数据结构(服务提供者,服务,绑定,技术模型) • Finds – find_service, find_business • Gets – get_serviceDetail, get_businessDetail • Saves – save_service, save_business • Deletes – delete_service, delete_business
SOAP API消息集例子 <find_business generic="2.0" maxRows="1000" xmlns="urn:uddi-org:api_v2"> <name>Microsoft</name> </find_business> <businessList generic="2.0" truncated="false" xmlns="urn:uddi-org:api_v2"> <businessInfos> <businessInfo businessKey="0076b468-eb27-42e5-ac09-9955cff462a3"> <name xml:lang="en">Microsoft Corporation</name> <description xml:lang="en">Empowering people through great software</description> <serviceInfos> <serviceInfo serviceKey="bd9b1a10-4668-42e9-ac69-d3da905c314d"> <name xml:lang="en">Electronic Business Integration Services</name> </serviceInfo> </serviceInfos> </businessInfo> <businessInfo businessKey="5529b081-5510-4c28-9629-c42c50f75be4"> <name xml:lang="en">Microsoft DRMS Production</name> <serviceInfos> <serviceInfo serviceKey="60ad773a-aef6-44cf-a5c9-78b88493c52e"> <name xml:lang="en">Machine Activation</name> </serviceInfo> <serviceInfo serviceKey="75bc89b9-8766-4603-82da-0a4ab4afd71a"> <name xml:lang="en">Server Enrollment</name> </serviceInfo> </serviceInfos> </businessInfo> </businessInfos> </businessList>
用程序发布服务的步骤 • 指定UDDI服务器或者从活动目录找到 • 建立一个与UDDI服务器的连接 • Windows集成认证或者UDDI认证 • 发布服务接口的技术模型 • 生成基本的服务数据结构 • 如果还没有相应的服务提供者,建完整的服务提供者 • 把生成的数据结构放到SaveBusiness或者SaveService请求发给UDDI服务器 • 确认服务器端的返回
搜索和发现服务 • 为什么用UDDI搜索和发现服务 • 所有服务的信息都在一个地方 • 便于找到最合适的服务 • 利于最大限度的重用服务 • 有效的信息共享途径 • 什么时候需要搜索和发现服务 • 程序设计的时候 • 配置程序的时候 • 运行时动态发现服务,程序逻辑的一部分
定价web service UDDI Services 程序设计阶段 • Office VBA用户绑定这个定价服务完成整个解决方案 • .NET开发人员用开发并部署了一个定价的web服务. • Office VBA 用户到UDDI服务器上搜索“定价”服务 • .NET开发人员发布定价服务到UDDI服务器并加以分类 • Office VBA用户确定了对他最合适的“定价”服务
程序运行时动态搜索和发现服务 • 弥补静态发现和绑定服务的不足 • 如果”定价”服务发生变动程序将不能工作 • 动态改变服务访问地址 • 可以动态地发现和绑定到当时最”合理”的那个服务 • 地理位置最近的服务 • 服务质量最好的服务 • 版本最新的服务 • 可以用于提高程序的容错性(Fail-over) • SDK中的ManagedUrl
服务 1 UDDI Services 程序运行时动态搜索和发现服务 1. 程序开始时从UDDI服务器找到所有 符合要求的服务 服务 N 服务 2 2. 程序绑定到其中一个服务 3. 如果调用服务失败,自动绑定到下一个服务 • ManagedUrl: • 实例 1 • 实例 2 • … • 实例 N 程序
下一个微软UDDI版本 • 完全实现UDDI V3 • 更丰富的检索功能 • 更安全的数据保护 • 更易记忆的数据键 • 方便的服务更新的跟踪 • 多站点之间的数据复制
更丰富的检索功能 • 提供嵌套式检索 • 例:我想找到所有实现了某一类接口(例TCP)的服务 • 原来:找到所有属于这一类的接口,然后对每一个接口找到相应的所有服务.用多个Find_Service请求 • 现在: 一个Find_Service请求 • 提供更丰富的指示语,用以改变缺省检索方式. • 例:大小写是否敏感;结果以何种方式排序; • 通配符支持 • <keyedReference tModelKey="uddi:uddi.org:categorization:general_keywords" keyName=“abc%" keyValue=“abc%" /> • <name>abc_e%</name>
更安全的数据保护-数字签名 • 为什么要用数字签名 • 防止数据被任何第三方改动,包括UDDI服务器 • 更严格的互信关系 • 数字签名过程 • 服务发布者: • 生成服务的数据结构 • 用自己的证书产生数字签名 • 把数字签名和含公钥的证书附于生成的数据结构后 • 把完整的数据发给UDDI服务器 • 服务使用者: • 从UDDI服务器上找到符合要求的服务 • 下载该服务的完整数据结构 • 验证数字签名并验证所附证书
更易记忆的数据键 • V2键 • UUID键: b5dc2013-d5af-324b-81f8-28bcfb00d639 • 不容易记 • 不允许发布者指定 • V3键 • 由键的域名,分区名,和键值组成. 例-uddi:microsoft.com:mschina:atcshanghai:testservice • 容易记 • 发布者可以指定 • 没有象看起来的简单 • 保证键值的唯一性 • 管理键域和键分区
方便的服务信息更新的跟踪 • 如何及时得到最新的服务信息 • 用户定时发请求给UDDI服务器 • 效率低,不方便,有延迟 • 服务器通知用户-服务的订阅 • 指定订阅的内容 • 罗列每一个感兴趣的服务提供者或者服务 • 规定某一类符合指定条件的服务提供者或者服务 • 通知的方式 • 接收端是电子邮件 • 接收端是web服务 • 实时性
UDDI Services 纽约 UDDI Services 伦敦 UDDI Services 新加坡 UDDI Services 北京 多站点之间的数据复制 • 完全的数据复制 • 各站点共享所有数据 • 提升性能:更多客户,更多流量,更快地响应 • 复制是持续的
UDDI Services 开发环境 UDDI Services 产品环境 多站点之间的数据复制 • 部分的数据复制 • 复制是有选择性的 • 减少重复劳动. 例:常用的技术模型 • 复制可能是一次性的或者重复性的 • 例子: • 企业中有两UDDI站点:开发和测试, 产品 • 当一个服务通过测试并转移到产品环境时,需要复制该服务及相关的数据
Windows 服务器中的UDDI Services http://www.microsoft.com/windowsserver2003/technologies/idm/uddi/default.mspx • UDDI SDK http://msdn.microsoft.com/library/en-us/uddi • UDDI newsgroups • Microsoft.public.uddi.general • Microsoft.public.uddi.programming • Microsoft.public.uddi.specification