首页 » 排名链接 » 聊一聊程序员必知的Web服务架构(服务程序员架构调用接口)

聊一聊程序员必知的Web服务架构(服务程序员架构调用接口)

雨夜梧桐 2024-11-04 10:14:23 0

扫一扫用手机浏览

文章目录 [+]

RPC(Remote Procedure Call)是一种非常重要的分布式交互技术,如图2-25所示,RPC希望达到的目的是调用远程对象与调用本地对象的编程接口一致。

调用本地对象,需要获取对象的引用或对象的动态代理,RPC封装了远程对象的接口(skeleton),同时在本地创建远程对象的代理(stub),然后通过本地的stub访问远程的对象方法。
远程通信技术手段使用sockets,这些属于RPC的底层机制,不需要对开发人员暴露。

图2-25 RPC架构图

聊一聊程序员必知的Web服务架构(服务程序员架构调用接口) 排名链接
(图片来自网络侵删)

Web服务架构如图2-26所示。
Web服务可以发布在Internet网络服务器上,它的调用者可以是广域网上的任何授权用户,典型的Web服务如支付宝给商家提供支付接口)、天气预报、公安部公民身份查询等。

图2-26 Web服务架构

为了能够实现广域网的服务访问,Web服务使用的是SOAP。

SOAP包含以下四部分。

· SOAP封装(envelop):封装定义了描述消息中的内容是什么,是谁发送的,谁应当接收并处理它们,以及如何处理它们。

· SOAP编码规则(encoding rules):用于表示应用程序需要使用什么数据类型,如何编排数据等。

· SOAP RPC表示(RPC representation):表示远程过程调用和应答的协定。

· SOAP绑定(binding):定义如何使用底层协议交换信息。

SOAP可以简单地理解为:SOAP = RPC + HTTP + XML,采用HTTP作为底层通信协议,允许服务提供者和服务调用者通过网络防火墙在Internet上进行通信交互。

· RPC作为远程接口调用方式。

· XML作为数据传送的格式(充分利用XML的自描述性来描述接口)。

WSDL(Web Service Description Language,Web服务器描述语言)是用XML文档来描述Web服务的标准,是Web服务的对外接口定义语言。

UDDI(Universal Description Discovery and Integration),即统一描述、发现与集成协议标准,Web服务的用户通过UDDI搜索查找Web服务。

创建Web服务

图2-27 Web服务分包结构

Java平台下的Web服务开发,通常使用Xfire、Axis2、CXF等几种框架实现。
Web服务可以发布到Tomcat服务器上。

基于Eclipse,创建“动态Web项目”或Maven Web项目,即可作为Web服务项目,无须使用Web Service Project向导。

如图2-27所示,这是基于CXF创建的Web服务项目的分包结构。
CXF是当前最为流行的Web服务开发框架,是使用Spring框架包装了Xfire框架后的产品。

在web.xml中,定义了一个名字为CXFServlet的Servlet组件,通过监听器,在Tomcat启动时创建Spring容器,并加载beans.xml配置文件。

web.xml的配置信息如下

编写Web服务

基于CXF3.2.14开发Web服务的操作步骤如下。

(1)定义Web服务的对外接口(注意:需要通过注解@WebService和@WebMethod来声明对外服务的接口方法)

(2)定义Web服务接口的实现类。

@WebService

public class UserBiz implements IUser{

}

(3)编写用户登录方法(注意:需要动态获取客户端请求信息的详细日志)。

(4)在beans.xml中配置Web服务的对外访问地址。

Web站点调用Web服务

可以在桌面App或Java Web应用中调用远程Web服务,如图2-28所示,com.icss.sentity、com.icss.service、com.icss.sexception等包及其下面的内容,都来源于Web服务,这些内容是Web服务的本地代理。

理论上,Web服务客户端程序与远程的Web服务应该是完全解耦的,即客户端程序可以不关注Web服务是使用什么框架来发布的,但是在实际开发中可能会遇到很多问题。

因此,示例的Web服务客户端程序,仍然使用CXF3.2.14框架。

Java Web应用调用远程Web服务的操作步骤如下。

(1)导入CXF3.2.14以及相关jar包。

(2)导入IUser、User、InputEmptyException等类和接口,在Java Web应用中构建远程Web服务的代理stub。

(3)编写CXF配置文件client-beans.xml,声明远程Web服务的调用对象

图2-28 Web服务客户端分包

(4)单例模式,封装Spring容器的创建。

(5)在控制LoginSvl中,调用远程Web服务,实现用户登录。

标签:

相关文章