好的 👍 下面我给你写一份 《WebService 接口详解》 学习笔记,适合新手入门,也方便做速查资料:


WebService 接口详解

1. 什么是 WebService?

WebService(Web 服务)是一种跨编程语言、跨操作系统的 远程调用技术
它通过标准的网络协议(HTTP、SOAP、XML、WSDL 等)实现不同平台和语言之间的互操作。

举例:

  • Java 系统可以调用 .NET 提供的服务
  • Python 可以调用 Java 的 WebService

2. 核心标准

  1. SOAP(Simple Object Access Protocol)
    • 基于 XML 的协议,定义消息的格式。
    • 使用 HTTP 作为传输层。
  2. WSDL(Web Services Description Language)
    • 基于 XML 的接口描述语言。
    • 描述了 WebService 的方法、参数、返回值等信息。
  3. UDDI(Universal Description, Discovery, and Integration)
    • WebService 的注册与发现机制(现在使用较少)。

3. 工作原理

  1. 服务端发布 WebService(提供 WSDL 描述)。
  2. 客户端根据 WSDL 生成代理类(Stub)。
  3. 客户端通过 SOAP 请求调用服务端方法。
  4. 服务端处理请求并返回 SOAP 响应。

流程图:

客户端 → (SOAP 请求) → 服务端 → (SOAP 响应) → 客户端


4. 常见实现方式

  • Java JAX-WS
    • Java 提供的 WebService API。
    • 使用 @WebService 注解发布服务。
  • .NET WCF
    • 微软的 WebService 实现方式。
  • Axis2 / CXF
    • Apache 的开源框架。

5. 简单示例(Java JAX-WS)

服务端

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.xml.ws.Endpoint;

@WebService
public class HelloService {
    @WebMethod
    public String sayHello(String name) {
        return "Hello, " + name;
    }

    public static void main(String[] args) {
        Endpoint.publish("http://localhost:8080/hello", new HelloService());
        System.out.println("WebService 已发布");
    }
}

客户端调用

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.URL;

public class Client {
    public static void main(String[] args) throws Exception {
        URL wsdl = new URL("http://localhost:8080/hello?wsdl");
        QName qname = new QName("http://example/", "HelloService");
        Service service = Service.create(wsdl, qname);
        HelloService hello = service.getPort(HelloService.class);
        System.out.println(hello.sayHello("阿杰"));
    }
}


6. WebService 的优缺点

✅ 优点

  • 跨平台、跨语言调用。
  • 基于标准协议(SOAP、WSDL)。
  • 适合 异构系统对接

❌ 缺点

  • 基于 XML,消息体冗长,性能一般。
  • 学习曲线较陡(相比 RESTful API)。
  • 已逐渐被 REST API、gRPC 取代,但在金融、政企等传统系统中仍然广泛使用。

7. 适用场景

  • 银行、保险、政府等 异构系统集成
  • 大型企业内部系统间的接口调用。
  • 需要强契约、标准化的服务场景。