好的 👍 下面我给你写一份 《WebService 接口详解》 学习笔记,适合新手入门,也方便做速查资料:
WebService 接口详解
1. 什么是 WebService?
WebService(Web 服务)是一种跨编程语言、跨操作系统的 远程调用技术。
它通过标准的网络协议(HTTP、SOAP、XML、WSDL 等)实现不同平台和语言之间的互操作。
举例:
- Java 系统可以调用 .NET 提供的服务
- Python 可以调用 Java 的 WebService
2. 核心标准
- SOAP(Simple Object Access Protocol)
- 基于 XML 的协议,定义消息的格式。
- 使用 HTTP 作为传输层。
- WSDL(Web Services Description Language)
- 基于 XML 的接口描述语言。
- 描述了 WebService 的方法、参数、返回值等信息。
- UDDI(Universal Description, Discovery, and Integration)
- WebService 的注册与发现机制(现在使用较少)。
3. 工作原理
- 服务端发布 WebService(提供 WSDL 描述)。
- 客户端根据 WSDL 生成代理类(Stub)。
- 客户端通过 SOAP 请求调用服务端方法。
- 服务端处理请求并返回 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. 适用场景
- 银行、保险、政府等 异构系统集成。
- 大型企业内部系统间的接口调用。
- 需要强契约、标准化的服务场景。
发表回复