1 / 77

Web Services 及其协议栈

冯志勇 天津大学计算机学院 2008 年 10 月. Web Services 及其协议栈. SOA 模型 Web Services 概述 XML and XML Schema 通信协议 Web Services 描述 Web Services 流描述 Web Services 发布和发现. 大纲. SOA 模型. 作为一个分布式计算架构, Web 服务是最重要的 SOA 实现。 SOA 模型是 Web 服务体系结构的概念. SOA 模型. 角色 Services Provider Services Requestor

kaloni
Download Presentation

Web Services 及其协议栈

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 冯志勇 天津大学计算机学院 2008年10月 Web Services及其协议栈

  2. SOA模型 Web Services概述 XML and XML Schema 通信协议 Web Services 描述 Web Services 流描述 Web Services 发布和发现 大纲

  3. SOA模型

  4. 作为一个分布式计算架构, Web服务是最重要的SOA实现。 SOA模型是Web服务体系结构的概念 SOA模型

  5. 角色 • Services Provider • Services Requestor • Services Registry • 操作 • Publish • Find • Bind • 关键组件 • Services • Services Description SOA模型中的概念

  6. 标准 • Web Services Description Language (WSDL) • Universal Description, Discovery and Integration (UDDI) • Simple Object Access Protocol (SOAP) • Web Service Flow Language(WSFL) • …… SOA模型中的主要标准

  7. SOA开发过程 业务组件分析 服务识别 服务定义 组件识别 组件定义 服务实现决策 SOA 实现

  8. SOA开发的层模型 业务过程 服务消费者 集成架构 Qos 安全管理 服务 组件 服务提供者 已有应用资源

  9. 过程 vs层模型

  10. Based on open standard and flexible implementation, Web services is natively applicable to SOA implementation. • The Relationships between Web services and SOA are: • Web services provide an open standard and machine-readable model (WSDL) for creating explicit, implementation-independent descriptions of service interfaces. • Web services provide communication mechanisms that are location-transparent and interoperable. • Web services are evolving through BPEL4WS, document-style SOAP, and WSDL, and emerging technologies such as WS-ResourceFramework to support the technical implementation of well-designed services that encapsulate and model reusable function in a flexible manner. Relationship Between SOA and Web Services

  11. Web Services概述

  12. Web:灵活的人机交互 • Web Services: Web服务是最近制定的技术规范,充分利用现有的开放标准如XML , URL 和HTTP提供一个新的系统对系统通信标准 • 工作定义:通过标准化协议访问网络软件服务 • 简单对象访问协议(SOAP):非常灵活的远程过程调用 (RPC) • 大量的利益在商业界,学术界,标准制定机构, . . . • 应用电子商务,电信,科技,资源数据库,政府,教育, . . . Web Services

  13. 面向业务的Web Services • ERP,CRM, • 应用系统集成 • 面向消费的Web Services • B2C的网站,全国多方B2C系统 • 面向设备的Web Services • 支持不同种类的服务。如天气报告,电子邮件服务 • 面向系统的 Web Services • 认证 • 监测 • QoS Web Services类型

  14. 简化和/或自动化Web服务 • 发现 • 是什么性质应予以说明? • 如何有效地对他们的查询? • 组合 • 指定组成的目标; • 指定组成的约束; • 构建一个组成; • 分析组成的成分。 • 调用 • 保持颁布分离; • 提供交易担保。 • 监控 • 如何跟踪条款; • 回收失败条款。 Web Services过程

  15. Web Services 标准栈 Web Services 组合: WSFL,BPEL4WS WS-CDL WS-CAF Web Services 安全: XML-Encryption XML-Signature WS-Security WS-SecureConversation WS-SecurityPolicy WS-Trust Web Services 事务: WS-Coordination WS-Transaction WS-AtomicTransaction WS-BusinessActivity Web Services Management: WSDM, WS-Manageability SPML, WS-Provisioning 发布和发现: UDDI, WSIL , WS-Discovery 服务描述层: WSDL, WSCL, WSCI,WS-MetadataExchange, WS-Policy XML 消息层: SOAP , WS-Addressing, WS-Notification, WS-Eventing, WS-Enumeration, WS-MessageDelivery, WS-Reliability,WS Reliable Messaging, WS-Resources WS-Transfer 传输层: HTTP, SMTP, FTP, etc.

  16. Web Service 核心标准 BPEL 行为 WSDL 接口 SOAP IBM WebSphere Microsoft .Net Sun J2EE 消息 XML Schema 类型 XML 数据 实现平台 Web Service 标准

  17. XML and XML Schema

  18. 标签:部分数据的标签 • 元素和子元素:数据节以<tagname>开始和</tagname>结束, 内容必须正确匹配 • 正确匹配 • <account> … <balance> …. </balance> </account> • 不正确匹配 • <account> … <balance> …. </account> </balance> • 正确:对同一父元素, 每一个开始标签必须有一个独特的匹配的结束标记. XML的结构

  19. 每个文件必须有一个顶层元素 <bank> <customer> <name> Hayes </name> <street> Main </street> <city> Harrison </city> <account> <account-number> A-102 </account-number> <branch-name>Perryridge </branch-name> <balance> 400 </balance> </account> <account> … </account> </customer>. . </bank> XML的结构 Top level element

  20. 属性Attribute • 元素可以有属性 <account acct-type = “checking” > <account-number> A-102 </account-number> <branch-name> Perryridge </branch-name> <balance> 400 </balance> </account> • 对内部开始标记的一个组成部分,属性定义为 name=value • 一个因素可能有若干属性,但每个属性名称只能出现一次 • <account acct-type = “checking” monthly-fee=“5”> XML的结构

  21. 元素和属性之间的区别 属性不能嵌套 <customer name=Hayes street=Main city=Harrison> <account> <account-number> A-102 </account-number> <branch-name> Perryridge </branch-name> <balance> 400 </balance> </account> <account> … </account> </customer> XML的结构

  22. Well-Formed XML 文档 • 文件中只有一个外层元素 (称之为根元素) • 每个元素包含一个开始和相应的结束标记 • 标签不能重叠, 如 <author><name>LeeHong</author></name> • 在属性的一个因素具有唯一的名字 • 元和标记名称必须是合法的 XML的结构

  23. 树模型的XML文件 • 只有一个根 • 没有环 • 根以外的每个节点只有一个父节点 • 每个节点有一个标签、元素或属性 • 该元素的序是很重要的 XML的结构

  24. XML数据已成为各组织之间的交换; 在不同的组织相同的标记名称可能有不同的含义,造成交换文件的混乱; 指定一个独特的字符串作为一个元素名称避免混淆; 解决办法:使用unique-name:element-name 使用XML命名空间可以避免在整个文件中使用长的名字 命名空间

  25. <Schema name="mySchema" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:myNS=http://www.xml_step_by_step.edu\ns.xml > 三个命名空间: schema namespace datatype namespace myNS namespace 命名空间

  26. 数据库schemas限制哪些信息可以存储,存储值的数据类型数据库schemas限制哪些信息可以存储,存储值的数据类型 • Schemas 对XML数据交换非常重要 • 否则,一个网站不能自动解释从另一个网站收到的数据 • XML schema两个机制 • Document Type Definition (DTD) • XML Schema XML Schema

  27. XML Schema Supports • 数据类型 • E.g. integer, string, etc • Also, constraints on min/max values • 用户定义类型 • 不像DTDs,XML Schema 采用XML语法, • 更多标准表达,且更细致 • 与命名空间集成(reuse and refine) • 更多特征 • 列表, 唯一和外键约束,继承 .. XML Schema

  28. <xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema> <xsd:element name=“bank” type=“BankType”/> <xsd:element name=“account”><xsd:complexType> <xsd:sequence> <xsd:element name=“account-number” type=“xsd:string”/> <xsd:element name=“branch-name” type=“xsd:string”/> <xsd:element name=“balance” type=“xsd:decimal”/> </xsd:squence></xsd:complexType> </xsd:element> ….. definitions of customer and depositor …. <xsd:complexType name=“BankType”><xsd:squence> <xsd:element ref=“account” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“customer” minOccurs=“0” maxOccurs=“unbounded”/> <xsd:element ref=“depositor” minOccurs=“0” maxOccurs=“unbounded”/> </xsd:sequence> </xsd:complexType> </xsd:schema>

  29. 元素类型 <element name=". . ."/> with possible attributes: • ‘类型’属性 定义该元素的类型: type=". . ." (more on types later) • 基数限制 : • minOccurs=“x”, x可以使任何自然数(包括 0) • maxOccurs=“x”, x可以使任何自然数(包括 0) 或无限 XML Schema

  30. <element name="email"/> <element name="head" minOccurs="1" maxOccurs="1"/> <element name="to" minOccurs="1"/> XML Schema

  31. 属性类型 <attribute name=". . ."/> with possible attributes • type=". . ." • use="x", corresponds to #OPTIONAL and #IMPLIED in DTDs • use="x" value=". . .", where x may bedefault or fixed XML Schema

  32. <attribute name="id" type="ID" use="required"/> <attribute name="speaks" type="LanguageType" use="default“ value="en"/> XML Schema

  33. 数据类型 • 数字数据类型, 包括:integer, Short, Byte, Long, Float,Decimal • 串类型,包括: string, ID, IDREF, CDATA, Language • 日期和时间类型 • 用户定义的数据类型 • 简单数据类型和复杂数据类型 XML Schema

  34. 复杂数据类型和扩展数据类型 • 通过对子element的组合与其他类型扩展来完成的, 它有三种组合方式:sequence,all,choice. • 对于sequence方式,各子element在对应的XML文档中的出现的次序与定义中的次序必须一致; • 对于all方式,各子element在对应的XML文档中的可以以任意次序出现; • 对于choice方式,各子element在对应的XML文档只出现其中的一个。 <complexType name="lecturerType"> <sequence> <element name="firstname" type="string" minOccurs="0" maxOccurs="unbounded"/> <element name="lastname" type="string"/> </sequence> <attribute name="title" type="string" use="optional"/> </complexType> XML Schema

  35. <element name=“lecture” type=“lectureType”> <lecture title=“associate professor”> <firstname>Zhiyong</firstname> <lastname>Feng</lastname> </lecture> XML Schema

  36. 数据类型扩展:现有的数据类型可以扩展新的元素或属性 <complexType name="extendedLecturerType"> <extension base="lecturerType"> <sequence> <element name="email" type="string" minOccurs="0" maxOccurs="1"/> </sequence> <attribute name="rank" type="string" use="required"/> </extension> </complexType> XML Schema

  37. 限制数据类型和简单的数据类型 通过限制现有的数据类型 定义 <complexType name="restrictedLecturerType"> <restriction base="lecturerType"> <sequence> <element name="firstname" type="string" minOccurs="1" maxOccurs="2"/> </sequence> <attribute name="title" type="string" use="required"/> </restriction> </complexType> XML Schema

  38. Simple data types can also be defined by restricting existing data types. <simpleType name="dayOfMonth"> <restriction base="integer"> <minInclusive value="1"/> <maxInclusive value="31"/> </restriction> </simpleType> XML schema

  39. 通信协议(SOAP)

  40. SOAP协议是一个XML消息传递协议,独立于任何特定的传输协议。SOAP协议是一个XML消息传递协议,独立于任何特定的传输协议。 • 替代复杂的分布式对象技术的轻量级协议 • 开始为BizTalk (Microsoft/UserLand/DevelopMentor)设计 • 是W3C 标准 • 基于XML 为什么要有简单对象访问协议(SOAP)

  41. SOAP Envelope SOAP Header Header Block . . . Header Block SOAP Body Body Block . . . Body Block SOAP消息结构 • Envelope contains • Header • Body • Header is optional • Out-of-band information such as… • Authentication information • Message routes • Logging • Transaction flow • Body contains XML body of RPC call

  42. SOAP例子

  43. SOAP例子

  44. Web Services 描述语言

  45. WSDL是一种基于XML的接口定义语言, 它分离功能和执行,使SOA建议的契约设计成为可能 • WSDL 定义 • Services 做什么– 接口interface • 访问说明 –how • Services 位置–where Web Services描述语言 (WSDL)

  46. WSDL要素 Supports 接口 Port Type Operation How to invoke Input & Output Formats & Protocols 访问 说明 Binding Message How to encode Implements Provides Port Services Endpoints

  47. WSDL主体结构 <definitions namespace = “http://… ”> <types> XML schema types </type> <message> definition of a message消息定义 </message> <portType> a set of operations一组操作 </portType> <binding> communication protocols通信协议 </binding> <Services> a list of binding and ports绑定和端口列表</Services> </definitions>

  48. <types> define data types used in defining messages XML Schema, DTD, and etc. XML Schema must be supported by any vendor of WSDL conformant products 类型 <types> <schema targetNamespace=“http://example.com/stockquote.xsd” xmlns=“http://www.w3.org/2000/10/XMLSchema”> <element name=“TradePriceRequest”> <complexType> <all> <element name=“tickerSymbol” type=“string“ minOccur = “1” maxOccur=“10”/> <element name = “payment”> <complexType> <choice> <element name = “account” type=“string” /> <element name = “creditcard” type=“string” /> </choice> </complexType> </element> </all> </complexType> </element> </schema> </types>

  49. A <message> element defines the data elements of an operation Each message can be the input or output of an operation, and may consist of one or more parts A part resembles a parameter of a function WSDL消息 <message name=“GetLastTradePriceInput”> <part name=“body” element="TradePriceRequest"/> </message> <message name=“GetLastTradePriceOutput”> <part name=“body” element=“TradePrice” /> </message>

More Related