- 浏览: 541024 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
zfx1982:
楼主能把doubango和webrtc2sip的源码发我一份么 ...
CentOS下编译webrtc2sip实战 -
zfx1982:
请问在编译doubango的时候configure总是说少sr ...
CentOS下编译webrtc2sip实战 -
cgs1999:
845896876 写道老师你好,我发现// 自定义属性 ...
使用Java操作LDAP案例 -
845896876:
老师你好,我发现// 自定义属性 a ...
使用Java操作LDAP案例 -
myitela:
NAT即地址转换,也可以是内网地址与外网地址的转换。如nat1 ...
NAT与NAT穿越学习总结
IBM Lotus Domino 7 中的实用 Web 服务,第 1 部分: 什么是 Web 服务以及它们为何如此重要
IBM Lotus Domino 7 中的实用 Web 服务,第 1 部分: 什么是 Web 服务以及它们为何如此重要![]() |
![]() |
级别: 初级 Julian Robichaux, 开发人员, 独立顾问 2005 年 11 月 07 日 在本系列文章(共分为 3 部分)的第 1 部分中,我们将讨论 Web 服务的术语和概念以及 Web 服务可以带给 IT 专业人士的益处。本文没有解决任何特定于 Lotus Domino 的问题,只给出了 Web 服务的介绍,以便您快速入门。<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES--> 您可能听说过 Web 服务这一术语,在技术文章的上下文、软件产品的描述或者在与同事的交谈中都会提到它。Web 服务固然重要,但若将 Web 服务解释成 “用来定义能够交换消息的通信端点集合的 XML 语法” 多少会让人感觉整个概念太过复杂且难以理解。 幸运的是,只要不过于追究底层的操作细节,Web 服务可以用一种人人都能理解的方式加以定义。您应尽力理解 Web 服务,因为它们(及其相关术语 Service-Oriented Architecture 或 SOA)是 IT 界相当普遍的概念。 可以将 Web 服务看作是汽车:当您购买汽车、驾驶汽车或与朋友谈论汽车(除非他们是地道的修理工)时,您不需要在深奥的技术层面上了解所有活塞、凸轮轴和燃料喷射器的工作方式。Web 服务也是如此,您只需了解什么是 Web 服务和 Web 服务的工作方式以及 Web 服务为何对于您和您的生活(作为 IT 专业人士)如此重要就已经足够了。 实际上,现在使用 Web 服务很容易,无需处理大量的底层技术,因为在过去的几年中软件供应商及开放源码社区通过努力已经从低级别的任务中提取出 Web 服务的具体细节。这样一来,您就可以将大量时间花在集成组件上,而不是阅读冗长详细的规范文档以解决如何正确格式化 XML 消息的问题。 此系列文章适合于协助 Domino 开发人员理解并使用 IBM Lotus Domino V7.0 中的 Web 服务。本文是介绍性文章,适用面广泛,对于想知道什么是 Web 服务的任何人都是很有用的。Lotus Domino V7.0 合并了多种技术,使得开发人员可以很容易且方便地创建并公开 Web 服务,稍后我们将对此进行更加详细的讨论。 现在我们来讨论一下究竟什么是 Web 服务。 简单地说,Web 服务允许计算机应用程序间以一种标准的方式进行通信。
Web 服务是一个抽象的概念 —— 这种抽象多少有点像人与人之间的谈话。谈话一般会涉及进行交谈的两个或更多人,这些人使用他们都能理解的某种语言进行交谈。而这种语言定义了所使用的词语以及如何将这些词语组成句子。通常谈话将包括一些答复和响应,其中一个人给出陈述或提出问题,然后其他人根据第一个人所说的内容进行响应。人们可以面对面坐着交谈、通过电话交谈、或在当今时代,来回发送电子邮件或使用在线聊天服务进行交流。 在任何情况下,谈话本身有多个组成部分,根据所涉及的人数、正在使用的语言以及谈话人所使用的技术(如果有的话),谈话发生的方式也略有不同。 Web 服务允许应用程序间的通信,其中所涉及的内容很多,本文通篇将对这些内容进行讨论。但基本的概念仍类似于上述人与人之间的谈话的概念,只不过这里是应用程序使用共同的语言进行通信,且通常会跨越某种网络。应用程序可以位于同一台计算机,也可以位于不同的计算机,而不同的计算机彼此之间可能相隔甚远并仅通过 Internet 线路及之间的一些路由器和服务器来连接。最妙的是应用程序和计算机不必相似。在单个的 Windows 笔记本电脑上可以有两个 Microsoft .NET 程序互相通信,加拿大的一台 iSeries 服务器上的 Java 程序也可以与中国的 Linux 台式机上的 C++ 程序进行通信,所有这些都使用 Web 服务。 下面是在基本 Web 服务通信中通常会使用的标准技术:
还有另外一个标准技术可用于基本 Web 服务通信,即通用描述、发现和集成(Universal Description, Discovery, and Integration,UDDI)。我们将在文章末尾对它进行讨论;但 UDDI 的使用是可选的,在很多 Web 服务实现中没有使用它。
在进一步解释术语之前,先回顾一下与公开和使用 Web 服务相关的一些定义。 当我们谈到公开 Web 服务时,我们指的是这样一个应用程序,该应用程序发布 WSDL 文件并允许其他应用程序使用其提供的 Web 服务。公开 Web 服务的应用程序也被称为提供程序。 当我们谈到使用 Web 服务时,我们指的是调用另一台机器上的 Web 服务的应用程序。Web 服务的使用者也被称为客户机。
XML 是用于 Web 服务组件之间的通信的语言。应用程序之间进行交换的消息采用 XML 格式,而且用来定义所使用的 Web 服务的文件也采用 XML 格式。图 1 描述了简单的 XML 文件的结构。 图 1. 基本 XML 结构 ![]() 从图中可以看到,文件中单独的信息(姓、名等等)被带尖括号的标记包围起来。例如名字 John 表示为 使用 XML 来编写 Web 服务有极大的优势,即:
使用 XML 的缺点(如果您将其称为缺点的话)是:
但是,这些都是小问题,XML 的优势远远超过了上述不便。
知道 Web 服务应用程序之间的通信是以 XML 格式编写只解决了一半的问题。应用程序可以解析消息,但它们怎样知道如何解释解析结果呢? 关于如何格式化 Web 服务 XML 消息的规范是 SOAP。SOAP 定义了消息的结构,因此应用程序知道如何发送和解释数据。SOAP 消息的基本结构如图 2 所示。 图 2. 基本的 SOAP 消息结构 ![]() 作为 XML,上述结构可以解释为如下内容:
在其最基本的格式中,有一个包含 SOAP Body 的 SOAP Envelope,且 Body 包含了所传递的实际数据。有时,有一个包含额外信息的 SOAP Header(在 Envelope 中的 Body 之前),不过 SOAP Header 是可选的。
同时,出现问题的情况下,SOAP Body 将以 SOAP Fault 格式来包含错误信息。Fault 是另一个 XML 结构,它包含了错误的描述,例如:
尽管 SOAP 消息是标准 XML 格式的文本文件,但手动创建或解释 SOAP 消息通常很难,因为所有名称空间和元素属性要严格按照某些特定方式来定义。幸运的是,现在有大量可用的工具和编程库能够用来创建并解释 SOAP 消息,因此利用这些技术可以大大减少复杂性。这些工具可以为我们完成复杂工作。
每个提供 Web 服务的应用程序都使用 WSDL 文件来描述哪些服务是可用的以及这些服务该如何调用。WSDL 是另一种基于 XML 的格式,它具有明确定义的结构,允许应用程序对其进行解析。通常将缩写词 WSDL 念做 “Whiz-dull”。 在 WSDL 文件的中心,Web 服务的提供程序定义了可由其他应用程序使用的方法。例如,Web 服务有一个名为 GetTemperature 的方法,该方法将返回给定城市的温度。WSDL 文件将该方法和如下信息一起列出:
文件中还有其它信息用来说明应如何格式化 SOAP 消息,例如要使用的名称空间、参数的顺序和结构、以及 SOAP Header 元素或 HTTP header 中所需的额外信息。
如果您以前从未看过 WSDL 文件,现在打开一个文件进行阅读可能很难提取出全部信息,因为文件的实际结构有些复杂。有关方法的全部信息(名称、参数、协议等)将分布在文件的各个部分,并且必须在可以构造 SOAP 消息之前由客户机应用程序将其拼凑起来。对 WSDL 文件的各个组成部分及它们如何一起工作的说明超出了本文的讨论范围。 还好,我们还可以求助于相关技术的帮助。大多数情况下,开发人员不必读取、解析并了解 WSDL 文件的内部细节。利用一些软件工具完全可以获取这些信息,因此您所需要关心的事情就是为 Web 服务提供数据并且使用作为响应返回的数据。您不但可以使用工具和库来实现这种功能,而且应该 始终这样做。Web 服务所涉及的组件存在很多异常、变数和复杂性,所以需要更加关心使用 Web 服务而不是逐一分解并理解全部组件。
到目前为止,我们尚未涉及的一个细节是这些 SOAP 消息是如何来回传递的? 答案是它们通常通过 HTTP 协议在网络(和/或 Internet)中传送,就像 Web 页面从 Web 服务器传送到工作站的浏览器上一样。这些消息不一定非要使用 HTTP(SMTP 是 HTTP 协议的主要竞争者,尽管它落后很多)协议来传送。WSDL 文件中明确定义了 Web 服务所使用的协议。 WSDL 文件中所指定的 SOAP 消息协议通常是 HTTP 协议。SOAP 客户机根据所使用协议的规范来发送消息。
到目前为止,我们所讨论的内容已包括了最常用的术语,但是在讨论 Web 服务时,还可能会听到其他一些术语。 使用 Web 服务的应用程序通常是松耦合的,这就是说能够让程序运转起来的 Web 服务没有直接与应用程序捆绑在一起,同样该应用程序也没有直接捆绑在 Web 服务上。程序可以方便地利用幕后的不同服务集来提供功能,服务本身也可以等待一个应用程序 —— 任何应用程序 —— 来调用它们并等待响应。 在现实世界中,可以将和朋友一起进餐的活动看作是一种松耦合的情况。几个朋友先是以各种方式(面对面、电话、电子邮件等)互相联系。然后大家采用对自己方便的交通方式到达饭店,就餐后,采用某种方式结帐。这其中的细节并不重要,而且就餐这件事还可能以其他方式进行,但是最终的结果都是一样的 —— 和朋友们共进晚餐。 而驾驶汽车的活动可以说是紧耦合的一个例子。您需要以特定的方式使用一整套固定的工具以便执行预定义的任务。如果您想从车道上倒车出来,则必须挂入倒档,然后踩油门。如果想左转,则必须向左转动方向盘。因为系统整体上很精确并且各个组件之间也是紧密依赖的,所以对于如何使它运转起来,您不会有很多选择。 UDDI 是一个标准,用来提供 Web 服务的目录,该 Web 服务可用于任何数量的不同应用程序。它就像是一个 Web 服务提供程序的“电话簿”。客户机可以在 UDDI 注册表中查找服务信息,由注册表返回连接到该服务所需的详细信息。 虽然在最早的 Web 服务定义中,UDDI 是一个重要的标准,但由于它是 Web 服务的可选组件,并且一些人选择不使用它(这是常有的事),因此 UDDI 的重要性有所减弱。 在很多更具组织性的企业环境还存在有 UDDI 注册表,这些企业环境拥有大量内部的 Web 服务提供程序。实际上,当发布可在公司内使用的 Web 服务时,设置企业 UDDI 站点是一个很好的主意。除了集合可用 Web 服务外,UDDI 使更改幕后的 Web 服务提供程序变得很容易。只要所有的客户机使用 UDDI 来定位 Web 服务而不是直接转到提供服务器,SOAP 调用都将自动指向新的提供程序。 总之,它是一个可选的架构组件,并不是 Web 服务实现所严格要求的。 在阅读 SOAP 和 WSDL 描述时,您一定很关心安全性问题。当调用这些服务时,如果提供程序使用了非公共的信息,那么该如何实现验证呢?当然,并不是所有的 Web 服务都是向公众全部开放的,不是吗? 这是一个非常好的问题,遗憾地是,没有一个标准的答案。在很多不同的场景下,必须根据实际情况进行处理,例如:
另外,无法保证 HTTP 始终是信息交流所使用的协议,因此不能仅在现有的 HTTP 安全性方法上使用 Web 服务安全性。 还有一些规范可以解决这些及其他 Web 服务的安全性问题,它们是 WS-Security、WS-Policy、WS-Trust 和 WS-Privacy。一些软件供应商和委员会已经对此讨论多年。当然,并非所有 Web 服务实现都能兼顾所有的安全性规范,因而所形成的安全性标准提供了一些被普遍接受的方式用于解决大多数安全性问题。 还有更大的一套支持安全性标准的 Web 服务标准,通常这些标准(在一个相当大的集合中)混在一起,被称为 WS-* 规范。它们共同解决了很多重要的架构问题,当您开始在企业环境中放置大量 Web 服务时会出现这些问题。WS-* 中的标准涉及如下主题:
之所以需要这么多标准是因为在企业应用程序中 Web 服务客户机和服务器交互间的消息传递要求比简单的请求/响应要复杂得多。例如,应该如何确保消息实际到达了提供程序并返回到客户机?如果 SOAP 请求实际上是一个多方事务请求,该怎么办?怎样管理那些涉及调用了其他 Web 服务的 Web 服务的过程?如果应用程序发送了一系列具有定时要求的请求,该怎么办? 对于较大的软件供应商,解决上述问题并应用这些规范将带来机遇和挑战。一些供应商为市场提供了 Web 服务中间件产品软件包 —— 通常被称为企业服务总线(Enterprise Service Bus)或 ESB —— 这些软件包提供了一些或全部管理功能以便解决此类问题。通常这些 ESB 产品还有附加功能,比如它们可以将跨机构的很多 Web 服务捆绑在一起并提供诸如登录和消息排队这样的功能。 接下来要探讨的是面向服务的架构 (Service-Oriented Architecture)。在很多方面,SOA 只是我们已描述的各方面内容的组合:来自多个提供程序的松散耦合的 Web 服务在公共标准集(可能是 ESB)下互操作,并通过多个应用程序集中在一起,这些应用程序从服务中提取数据,然后以多种方式表示出来。 因为它实际上是一个软件架构,所以构建 SOA 时会涉及大量的计划和协调。它不是多个 Web 服务胡乱的堆砌和混合;而是对服务如何被收集并公开、使用哪种管理工具和中间件、如何整体上监视并维护服务和系统这些问题的有序组织。 从更高的层次上来讲,SOA 也是一种理念体系。它不需要您考虑独立操作的大型应用程序,而是要求您关注有关使用或提供可在企业中公开或使用的功能模块集的所有事情。也就是说它要求不要从泛泛的应用程序方面进行考虑,而是应该着眼于具体的明确定义的服务,即 Web 服务。
现在您对 Web 服务如何工作有了一些了解 —— 客户机读取提供程序的 WSDL 文件,根据该文件中的定义来格式化并发送 SOAP 消息,然后接收响应中的 SOAP 消息。那么这些为何如此重要?原因何在呢? 重要性的部分原因在于应用程序现在能够以一种标准方式进行通信,而不管它是采用哪一种语言编写的或运行在哪一种平台上。在过去,应用程序(可能进行了也可能没进行过很好的建档)需要定制的数据格式,而且必须要处理 API 级功能,这些功能可以也可能不可以被用其他语言编写的其他程序访问。所有的 Web 服务标准都采用 XML 格式就意味着所有的服务都是可访问的且明确定义的。 实际上,它还解放了不相关的应用程序,这些应用程序现在可以使用公共语言方便地进行通信。在使用多个供应商提供的不同技术时,所面临的困难之一是始终要确保程序之间能够互相对话并交换数据。现在,只要应用程序可以提供和/或使用 Web 服务,不同技术之间的互操作性就会大大简化。 另一个优势在于可以很容易地将 Web 服务客户机和提供程序放置在完全不同的机器上(可能运行于完全不同的硬件和操作系统),同时通信仍能进行。过去,应用程序只能由相同机器上的其他应用程序或由其他机器上使用了定制数据传送格式的应用程序访问。Web 服务应用程序所需要只是网络连接和 XML 解析器。 将所有这些因素放在一起就是真正的原因所在了。由于现在可以采取一种标准方式用于不同应用程序在网络上的通信,因此您就可以设计自己不同的应用程序。现在还能够编写更加模块化的程序,而不必多此一举地编写提供全部功能的单一应用程序。 例如,现在您不必编写大型报告型应用程序来收集关于几个不同进程的数据,然后将数据转化为图表,再将其展示给用户,您完全可以采用指示板,它是可以提供此功能的一些 Web 服务的前端。经过编译的数据可以通过对一个或多个 Web 服务的调用进行检索,而且通过发送数据到接收该数据并返回饼状图或类似图表的绘图 Web 服务可以生成图表本身。 指示板已由一个大型的独立程序演变成了一个简单的接口。如果需要添加新组件,只需调用附加服务。如果需要其他图表类型,则可以调用不同的绘图服务。如果指示板需要与向下钻取功能或定制排序有更多的交互,则指示板可以在用户和适当的 Web 服务之间来回传递请求。甚至可以在不影响用户的情况下彻底更改后台中调用的服务,并且(只要 WSDL 文件没有更改)无需更改指示板应用程序。 作为 IT 专业人士,您可能会负责计划或开发这类接口和/或这类服务。了解如何结合使用本文所介绍的这些组成块(或至少知道这些组成块的存在)是推动此类项目前进的重要基础。 幸运的是,有很多工具可用来协助您提供并使用 Web 服务,而且无论您使用何种技术,它们都将为您减轻大量开发负担。在本系列文章的后续部分中,我们将讨论如何使用 IBM Lotus Domino V7.0 轻松地为客户机或系统提供 Web 服务。 学习
获得产品和技术
讨论
|
相关推荐
### IBM Lotus Domino 7 邮件服务器配置全程攻略 #### 一、概述 IBM Lotus Domino 7 是一款成熟的企业级邮件服务器解决方案,提供了一系列功能强大的工具,支持邮件、日历共享、联系人管理等功能,并且能够进行深度...
- **NSD (Name and Service Discovery)**:NSD 用于发现网络中的其他服务器和服务,是 Domino 网络架构的重要组成部分。 通过掌握以上知识点,新管理员可以更加熟悉 IBM Lotus Domino 8.5 服务器的管理与操作,为...
Lotus Domino Web是一种集成了邮件服务、文档管理、数据库应用和Web发布功能于一体的企业级平台,它在20世纪末至21世纪初被广泛应用于企业内部网(Intranet)和互联网(Internet)应用开发中。 ### Lotus Domino ...
Domino 服务器可以作为 Lotus Notes 应用程序的服务器,同时也支持Web服务。自7版开始,Domino 服务器可以选择IBM DB2作为其后端数据库,增强了数据存储能力。 Lotus Notes 是与 Domino 服务器配合使用的客户端...
《中文Lotus Domino R5 Web 高级编程 教程》是一本专为希望深入学习Lotus Domino Web开发的初学者和进阶者设计的全面教程。Lotus Domino作为IBM的一款企业级应用平台,尤其在协同办公和信息管理方面表现出色,而R5...
综上所述,IBM Lotus Domino V8.5 服务器管理入门手册涵盖了从基础知识到实际操作的各个方面,为管理员提供了丰富的指导和实用建议。无论是新手还是有一定经验的管理员,都能够从中获得有价值的信息和技术支持。
IBM Lotus Domino 控制台命令大全 IBM Lotus Domino 控制台命令大全是 Lotus Domino 服务器的核心组件之一,提供了大量的命令来管理和维护 Domino 服务器。下面是该命令大全的知识点总结: 基本命令 * Broadcast ...
1. 使用IBM Lotus Domino Designer,设置names.nsf的存取控制列表,将“Anonymous”权限设为“不能存取者”(No Access),阻止匿名访问。 2. “Default”权限应设为“读者”(Reader),但要注意,如果有通过Domino...
7. **集成与API**:探讨与其他系统(如Web服务、LDAP目录或企业应用)的集成,以及如何利用Lotus Domino的开放API扩展其功能。 8. **移动支持**:讨论如何通过Lotus Notes Traveler或其他方式使Domino应用适应移动...
【开发 IBM Lotus Domino Web 2.0 客户机】是指使用现代Web技术,如HTML、JavaScript和Ajax,为IBM Lotus Domino创建一个具有Web 2.0特性的轻量级Web客户端。Web 2.0是指自2005年以来出现的一类交互性和用户体验更...
Domino 不仅支持 Lotus Notes 应用程序的运行,还可以作为Web服务器,且从版本7开始,可以使用IBM DB2作为后端数据库。 Lotus Domino 与 Lotus Notes 客户端协同工作,Notes 是一个桌面应用程序,用于访问邮件、...
《IBM Lotus Domino 7系统基础管理》一书主要聚焦于如何有效地管理和操作IBM Lotus Domino 7这一企业级协作平台。Lotus Domino是IBM提供的一种强大的应用程序服务器,它集成了电子邮件、日历、任务管理、即时通讯等...
Lotus Domino是由IBM开发的一款企业级协作平台,它在企业信息管理、电子邮件、日历、任务管理、文档共享以及工作流程自动化等方面发挥着重要作用。IBM Lotus Domino基于Notes客户端和服务器架构,提供了一个安全且可...
**BlackBerry Enterprise Server for IBM Lotus Domino** 是一款专为整合IBM Lotus Domino邮件服务器与BlackBerry移动设备而设计的企业级解决方案。该软件使得企业用户能够通过BlackBerry设备访问其Lotus Domino邮箱...
IBM Lotus Domino是一款由IBM公司开发的企业级协作平台,它为用户提供邮件服务、群组日程安排、工作流自动化、文档管理等功能。Lotus Domino的设计基础涵盖了软件的体系结构、开发工具的使用方法,以及在设计Domino...
**Lotus Domino 7 邮件服务器配置全攻略** **关键知识点解析:** ### 一、重要概念:Domino网络域(Domino Domain) **1.1 Domino网络域名称** - **作用与理解**:Domino网络域是IBM Lotus Domino系统的核心概念...
【Lotus Domino 第10章_在Web中使用LotusScript】主要讲解了如何在Web环境中利用LotusScript进行开发,这一章节对于理解Domino Web应用程序的构建至关重要。以下是对主要内容的详细阐述: 10.1 使用 LotusScript 的...
Lotus Domino Web编程是将Lotus Domino服务器的功能与Web技术相结合,以创建动态、交互式的Web应用程序。这个领域涉及多种技术和概念,包括服务器端脚本、数据库访问、HTTP协议、JavaScript客户端脚本以及Domino ...
Lotus Domino与IBM WebSphere的集成开发是一个复杂但至关重要的任务,特别是在企业级应用程序的构建中。这两个平台各自拥有独特的优点,将它们有效地整合能够充分利用它们的优势,为组织带来更高效、灵活且可扩展的...