首页 理论教育 云服务接口:定义通用方法应用于请求者和服务提供者之间的接口

云服务接口:定义通用方法应用于请求者和服务提供者之间的接口

时间:2023-11-16 理论教育 版权反馈
【摘要】:通过定义一组通用方法,接口定义了请求者和服务提供者之间的接口。它可以将自己的服务和接口信息发布到服务注册中心,以便服务使用者能够发现和访问服务。在大多数情况下,服务请求者不能直接调用服务提供者。因此,服务请求和服务提供者之间的接口非常重要。服务请求者只需使用ESB开发接口,而不需要为特定服务开发接口。云计算平台可以使用ESB的注册功能注册数千个内部服务。

云服务接口:定义通用方法应用于请求者和服务提供者之间的接口

云服务的接口非常重要。接口和技术的标准化是物联网互联的前提。例如,政府云计算平台和行业云计算平台通过接口进行信息交换和共享。服务接口必须是信息数据格式和语义描述的通用和可扩展标准,为信息的交换、分发和共享提供统一的数据规范。在环境保护行业中,通过定义环境保护信息搜集、环境保护信息交换和环境保护信息服务的标准流程,定义了环境保护信息收集、环境保护信息交换和环境保护信息服务模块之间的通用接口标准。为政府云计算平台和行业云计算平台之间的连接和协作提供标准和标准化的方法。

云计算平台包括两种类型的服务:一种仅供内部使用,另一种用于外部系统调用(例如订单查询)。服务表示为软件组件。从服务请求者的角度来看,它看起来像是一个独立的函数。当请求者将服务视为一个整体时,服务的执行可能包括在企业内的不同计算机上或在许多业务合作伙伴的计算机上执行的多个操作。在开始创建服务之前,我们需要考虑外部和内部系统如何访问相同的服务。这就是云服务接口所涉及的内容。

在前面部分描述的面向对象和面向服务的设计方法中,涉及如何设计接口的问题。通过定义一组通用方法,接口定义了请求者和服务提供者之间的接口。接口的任何实现都必须提供所有方法。云服务的接口如下。

发布接口:客户端可以从注册表中发现和调用的唯一可识别和可访问的接口。

公共接口:客户端可以使用的可访问接口,但它没有发布,因此访问者需要有关服务的静态信息。

在面向服务的设计中,服务请求者通过定义的通信协议调用服务。例如,Web服务基于SOAP消息。使用Web服务的优点是能够与外部业务合作伙伴进行通信。

在前面的部分中,我们解释了如何描述云服务。服务可重用性帮助企业维护和开发少量代码,从而提高系统的可靠性。此外,服务强调互操作性和位置透明性。在本节中,我们将介绍服务的接口,首先分析几种调用云服务的方法,然后讨论几种接口规范,包括SOAP、Web服务、消息传递接口、邮件接口,最后讨论XML。

(一)如何调用云服务

我们使用SOA来设计云服务。在SOA中,接口是调用服务的应用程序的最关键和重点。它定义了所需的参数和结果类型。接口定义服务的类型,而不是实现它的技术。云平台的职责之一是实现和管理服务的调用,而不是调用应用程序。让我们首先讨论服务请求者和服务提供者之间的几种接口方法。

1.服务请求者和服务提供

服务请求者(例如外部系统)调用由服务提供者(如库存服务)提供的服务。服务请求者发送请求消息,例如检查项目A的清单,服务提供者处理请求并将响应消息(如特定的清单)发送给请求者。为了考虑设计的性能和简单性,双方之间的接口是一个粗粒度的接口,最大限度地减少了所需的通信数量。

服务请求者:服务请求者是需要一个服务的应用程序、软件模块或另一个服务。它查询注册表中的服务并调用它们。服务请求者根据接口调用服务。

服务提供者:服务提供者是一个可寻址的实体,它接收和执行来自请求者的请求。它可以将自己的服务和接口信息发布到服务注册中心,以便服务使用者能够发现和访问服务。

实际的企业应用程序往往比较复杂,因此实际应用程序通常需要多个服务才能满足需求。一些服务提供者也是其他服务的请求者:他们汇集了其他服务提供者的功能,以组成更复杂的服务。例如,在线订单服务(所有合作伙伴都存储和处理用户在云计算平台上下的新订单)调用库存检查服务、送货服务等等。

在大多数情况下,服务请求者不能直接调用服务提供者。除了调用标准服务之外,服务请求者还需要调用可能不是基于服务的现有应用程序。我们如何解决这个问题呢?系统中引入了服务管理器组件,使外部服务请求者能够调用模块中的服务组件。

我们建议使用ESB模式来管理和调用云服务。例如,智能企业系统使用ESB模式。

2.点对点模式

一个服务可以由多个系统调用,例如来自外部系统的请求、来自内部系统的请求和来自桌面系统的请求。这些请求申请可能采用不同的标准。当然,它还包括对未来系统的一些请求。因此,服务请求和服务提供者之间的接口非常重要。点对点模型是一种传统的模型。

外部系统以点对点的方式直接调用平台的服务。服务部门向外部系统提供描述如何访问服务的接口文档。这些文档包含书面服务的URL、输入数据格式等,也就是说,请求者使用什么URL和数据来调用服务。显然,这种模式有许多缺点。

服务提供程序无法修改服务的位置、名称和其他信息。否则,外部系统无法访问。

服务提供者很难跟踪服务的使用情况。每个服务都需要一些代码来实现跟踪功能。

服务请求者的身份验证也是一个问题。这需要单独的服务来完成验证功能。

3.ESB模式

一个单一的平台提供数百个服务。要纠正上述缺点,请使用企业服务总线(Enterprise Service Bus,ESB)。所有服务调用者都通过ESB调用服务。所有外部系统都从服务总线请求服务,而不是直接调用后续服务。这样做的好处是:服务部门可以在不通知外部系统的情况下更改服务。此外,可以随时添加一些新服务。只要在服务总线上对服务进行适当的修改,服务也可以不同的版本出现。

直接访问模式限制了服务请求的发出方式。这使得一些应用程序无法访问或难以访问。服务总线可以具有转换器的功能(ESB本身提供或调用外部转换工具),并且可以在服务请求者和服务提供者之间进行适当的转换,以便双方能够相互通信。

在大的方面,云计算可以支持全球服务协作。参与这些协作是多个企业完成直接业务事务的基本要求。服务请求者只需使用ESB开发接口,而不需要为特定服务开发接口。在业界,有许多实现ESB功能的产品,如IBM Web Sphere ESB、Open ESB等。其中Open ESB是开放源代码

ESB通常具有服务注册功能。云计算平台可以使用ESB的注册功能注册数千个内部服务。此外,ESB还可以在功能上注册外部服务(例如由另一家公司提供的财务管理服务)。云计算平台在注册表中指示可以调用哪些服务。ESB还提供安全管理:只有合法用户才能调用相应的服务。此外,提供者返回的结果有时需要ESB在将其返回给调用方之前验证它们的正确性。一些ESB产品还提供以下附加功能。

①监视对服务的调用次数和响应速度。除了保存服务的定义外,ESB的服务库还可以保存其他信息,例如服务当前是否可用。

②防止其他恶意访问。

动态路由的功能:如果服务提供者的响应太慢,它可以路由到第二个服务提供者。

4.云服务代理和uddi(www.xing528.com)

ESB实现了动态服务查找和部分位置透明性。有时,当服务使用者不知道在哪里需要云服务时,服务使用者需要访问代理来查找这些服务。在行业中,这种特定的服务被称为服务代理。服务代理是服务提供者和服务请求者之间的中介。

服务提供者将自己的服务发布到服务代理,以便服务的使用者能够获取有关这些服务的信息并调用它们。面向服务的体系结构中的协作遵循三个步骤:查找、绑定和调用。服务使用者通过查询服务注册中心来查找符合其需求的服务来执行动态服务位置。如果服务存在,注册表将向使用者提供服务的接口和端点地址

Service Broker(也称为服务注册中心)包含可用服务的数据库,并提供注册和查询服务的机制,以便服务提供者能够注册服务,感兴趣的服务使用者可以找到服务。服务代理可以是互联网上的公共代理,也可以是企业的私人代理。面向服务的体系结构中的每个实体都是服务提供者、使用者和注册中心三个角色中的一个(或多个)。面向服务的体系结构中的操作包括以下几种。

发布:为了让服务使用者调用服务,服务提供者需要发布服务描述,以便服务使用者能够发现并调用它。

查找:服务请求者定位服务,即查询服务注册中心以查找满足其需求的服务。

绑定和调用:在查询服务描述之后,服务使用者根据服务描述中的信息绑定到服务提供者,并调用服务。此绑定操作通常是静态绑定。

UDDI是支持服务查找和发布的最常见的标准接口之一。UDDI基于SOAP消息定义了一个标准接口。UDDI,服务请求者可以找到所需的现有服务。SOA不一定需要使用UDDI,但是使用UDDI可以进一步确保服务的位置透明性。例如,可能会在应用程序中缓存所需服务的位置。如果将服务重新部署到不同的服务器,则服务请求者可以使用UDDI来发现新的位置并缓存它以供将来使用。

(二)接口规范

云服务的整体思想是使Internet上的应用程序之间的通信独立于平台和语言。主要的答案是回答关于服务接口的两个问题:应用程序传输数据的格式是什么?传输协议是什么?

服务的请求者和服务提供者之间采用的接口规范直接影响到调用服务的方式。在讨论特定的接口规范之前,我们首先回顾两种接口调用模式:静态调用和动态调用。

1.静态调用模式

静态调用是一种类型安全的方法,也是服务使用者编程中最常见的方法。类型安全性,意味着在编译时检查类型安全,而不是在运行时等待找到类型错误

2.动态调用模式

动态调用是一种不安全的方法,而不是静态调用。其优点是调用非常灵活,但同时缺点是有些问题在编译时没有发现,只有在运行时才能被发现。

3.SOAP

SOAP(Simple Object Access Protocol简单对象访问协议)是一种基于XML的传输协议。由发送方发送的数据按照SOAP打包,并通过HTTP等协议发送给接收方。除了HTTP之外,它还可以是SMTP、HTTPS等。SOAP是一个广泛使用的接口规范(当接口规范是SOAP时,服务请求者只能动态调用)。Web服务是SOAP的采用。SOAP提供了使用XML格式的消息在服务请求者和服务提供者之间的通信。服务代理类将应用程序请求放入SOAP信封(XML数据),并将其发送给服务提供者;服务提供者还处理服务代理类发送的响应,并将响应数据返回给客户端应用程序。

因为SOAP是一个独立于平台和供应商的标准,所以SOAP满足了合作伙伴之间松散耦合的服务调用的要求。使用SOAP不同于使用Web服务。在J2EE平台上,开发人员可以使用SAAJ直接编写SOAP消息传递应用程序(也就是说,没有JAX-WS)。该行业为SOAP引擎提供产品,如IBM Web Sphere-SOAP、Apache Axis或Apache SOAP 2.3。

SOAP本身有一些开销,所以云计算平台不必编写SOAP封装代码。这取决于系统运行的实际环境。一些外部系统直接调用云计算平台的SOAP,并将请求信息放在XML文档中。云计算平台上的SOAP基于这个XML文档执行适当的操作,并返回XML数据中的结果。

此外,可以使用SOAP以外的服务调用方法来考虑软件系统中的服务调用。这些方法不构建和解析XML内容,从而提供了更好的性能。

4.Web服务

在云计算平台上,我们建议使用Web服务作为云服务的标准。Web服务是一组技术,包括XML、SOAP、WSDL和UDDI。Web服务的提供者在UDDI Web服务注册表中注册服务,并提供相应的服务描述信息(WSDL);Web服务通过查询UDDI服务注册中心获得服务定义,并通过SOAP调用Web服务。J2EE平台提供XML API和工具,帮助开发人员快速开发、测试和部署Web服务。Web服务与平台无关。基于Java的平台和非Java平台都可以调用Web服务。可以使用XMLWeb服务的JAX-WS创建Web服务。

5.Java接口

Java接口包括Servlet和无状态会话bean。如果服务提供Java类型的接口,则服务调用方的调用总是静态的(或动态的,但不是必要的)。例如,使用EJB实现订单查询服务。服务调用者是一个内部JSP程序。

对于外部服务,通常使用Web服务。对于内部服务,还可以使用Servlet编写服务管理器。

在一些非标准平台上,使用Servlet程序进行XML消息处理,它用于在服务层之前统一协调所有基于XML消息的服务调用,充当Web服务代理,在消息到达服务端点之前完成大量的消息处理任务。换句话说,进入服务的消息在到达服务之前被拦截和处理,这样就可以识别服务本身。

在这个结构中,这个Servlet就像一个网关,处理Internet和Intranet环境之间的服务调用,这样就可以在企业之外使用内部服务。此外,它还可以帮助内部系统调用外部服务。这种网关模式的主要优点之一是它允许云服务作为非标准协议(如SOAP、Web服务)提供。而且,如果同一个服务有几个不同的实现,可以为Servlet程序中的每个传入请求选择最合适的目标服务。在调用操作之前,此模式对于参数验证最为有效。特定于应用程序的参数的验证包括验证XML模式、业务数据的相关方面及其特性(例如数据类型、字符串或整数、格式、长度、范围),以及检查字符集、区域、上下文和可用值,特别是空值。

6.邮件接口

邮件还可以用作多个系统之间的接口,特别是远程系统。一方将信息发送到另一方的电子邮件地址,在对方处理完后,它可能会回复一封电子邮件。让我们举一个保险公司的例子。传真在美国是一份具有法律约束力的文件,被保险人可以直接向保险公司提出索赔。传真过去的签名是有效的。我看到许多保险公司使用邮件作为两个系统(传真机和索赔系统)之间的接口。在收到传真后,传真机立即将传真发送到一个固定的邮件地址(传真的内容是邮件的附件)。然后,索赔系统有一个自动提交电子邮件的程序,该程序会立即抓取所有新邮件,删除附件并将其发送给保险公司的索赔处理程序。同时,客户收到了一封电子邮件,确认索赔已经收到,就几分钟。

在J2EE平台上,邮件会话是一种资源。在Web应用服务器上,可以定义邮件服务器的位置信息以及邮件地址和密码。然后,在程序中使用JNDI访问资源,并使用javax.mail.Transpor Worker Send()方法发送消息。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈