Webservice是什么?
可互操作的分布式应用程序的平台,是一套标准,可以用任何语言来实现这个标准,然后就可以进行相互通信了。
1.XML和XSD:XML用来表示数据,XSD用来规定数据的类型格式
2.SOAP:简单对象传输协议,WebService之间消息传递的协议
3.WSDL:WebService Description Language ,是对WebService功能的描述,人和机器交流的语言
4.UDDI:集中存放和查找WSDL描述文件,起着目录服务器的作用
SOAP是什么?
基于XML的协议,在Web上交换结构化的和固化的信息。可以与现存的许多因特网协议和格式结合使用,包括超文本传输协议......
具体的实现例子:
import javax.jws.*;
import javax.xml.ws.Endpoint;
@WebService
public class ServiceHello {
public String getValue(String name){
return "My name is "+name;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Endpoint.publish("http://localhost:9001/ServerWS/ServiceHello", new ServiceHello());
System.out.println("service success!");
}
}
注:
@WebService- 它是一个注解,用在类上指定将此类发布成一个ws.
Endpoint –此类为端点服务类,它的方法publish用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上。
需求总结: | 同一个应用会有不同的客户端,或者不同的应用之间会相互调用服务。 | ||||||||||
解决方案: | Socket通信 | http协议: | http请求 | 请求行 | 以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本 | ||||||
1. Socket服务不利于推广(如果让别人知道你的Socket服务) | Method Request-URI HTTP-Version | ||||||||||
2. Socket处于传输层, 有可能无法穿越防火墙 | 消息报头 | ||||||||||
3. Socket本身处于传输层,要处理应用层的服务要解析HTTP协议比较麻烦,但是现在我们的应用都是基于web的, web中的数据传输就需要HTTP协议 | 请求正文 | ||||||||||
4. 即使定义了格式. 后面如果格式改变则客户端格式都需要同步变化维护困难 | |||||||||||
网络的七层: | 应用层 | ||||||||||
表示层 | |||||||||||
会话层 | |||||||||||
传输层 | |||||||||||
网络层 | |||||||||||
数据链路层 | |||||||||||
物理层 | |||||||||||
webservice | 其实就是一个部署在web服务器上的,向外暴力接口,通过web调用 | ||||||||||
1 | 基于web的系统级接口规范 | ||||||||||
- 一个普通适用标准 :http+xml | |||||||||||
- 任何网络通信的操作系统 | |||||||||||
- 自包含、自描述、模块化 | |||||||||||
- 发布、定位、通过web调用 | |||||||||||
2 | web service 技术和规则 | ||||||||||
- xml(可拓展标记语言) | |||||||||||
- soap(简易对象访问协议) soap – http+xmlàsocket | |||||||||||
- wsdl(web services 描述语言) | |||||||||||
- uddi(通用描述、发现及整合) | |||||||||||
3 | 跨平台的可互操作性 | ||||||||||
- 基于xml | |||||||||||
- 基于xsd(xml schema ) | |||||||||||
- 基于http | |||||||||||
4 | webservice 适用场景 | ||||||||||
- 跨防火墙的通信 | |||||||||||
- 异构系统间应用程序集成(jee:(EJB RMI)、php、c++、.net (com+)) |