【WebService】第一章、为什么会有webservice以及相关概念说明
本文的主要目的是用一些比较容易懂的语言说明下webservice相关的概念。 1、为什么会有webservice? ? ? 每一项新技术的产生,都是由于被需要。语言发展太多了,各个语言之间不能相互调用,数据无法共享导致了数据不一致。 为了解决这个问题我们需要一项技术解决异构系统之间的数据共享问题。webservice很成功的解决了这个问题。 2、不同语言之间数据共享需要解决什么问题
? ? ? 1. 传输的数据可以跨平台,谁都认识它。
? ? ? 2. 提供的服务要能很方便调用最好像网站那样可以什么浏览器什么操作系统都可以访问。
3、目前有哪些技术可以解决上面的问题
? ? ? 1. json与xml每个语言都认识还可以解析。所以我们只要传送json或者xml这种格式的数据就行了。
? ? ? 2. 如果我们把服务部署在web站点上是不是可以做到像访问网站那样方便呢?如果可以,那应该叫web服务(web service)
4、SOAP协议说明
? ? ? 协议就是一种规定,协议的存在就是为了规范。试想一下,如果每个人都按照自己的想法去传输数据,那么谁能知道传
的是什么东西,即便你获取数据了你也不知道那是什么意思。所以我们需要制定一份协议,大家都遵守这个协议就能很好的
统一,解析也很方便了。为了说明SOAP协议,下面将详细的说明数据的传输以及与之相关的HTTP协议。
5、Socket通信? ? ? ISO七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 ? ? ? Socket属于传输层的,也就是说这个技术用来传输数据。它只会传输数据,如果我们传输的数据恰好满足了某种特定的格式。 对于数据需要满足的格式,我们称为协议。例如:HTTP协议,SOAP协议。下面写个socket的例子说明下。 package com.ztesoft.socket; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; // 服务端提供服务,接受到客户端提供字母后转大写在返回给客户端 public class SocketServer { public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(6666); while (true) { Socket sc = ss.accept(); InputStream is = sc.getInputStream(); byte[] buffer = new byte[1024]; int len = -1; len = is.read(buffer); String getData = new String(buffer,len); System.out.println("从客户端获取的数据:n" + getData); // 业务处理 大小写转化 String outPutData = getData.toUpperCase(); // 向客户端写数据 OutputStream os = sc.getOutputStream(); os.write(outPutData.getBytes("UTF-8")); // 释放资源 os.close(); is.close(); sc.close(); } } } package com.ztesoft.socket; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; // 向服务端发送一个请求,并接受返回结果 public class SocketClient { public static void main(String[] args) throws Exception { // 开启一个Socket端口 Socket sc = new Socket("127.0.0.1",6666); OutputStream os = sc.getOutputStream(); os.write("abc".getBytes()); // 获取服务端回传的数据 InputStream is = sc.getInputStream(); byte[] buffer = new byte[1024]; int len = -1; len = is.read(buffer); String getData = new String(buffer,len); System.out.println("从服务端获取的数据:" + getData); // 释放资源 is.close(); os.close(); sc.close(); } } ? ? ? 下图左侧就是调用结果,从中我们可以发现socket只是调用了更底层的方法去传输数据。如果我们从浏览器访问(右侧) ? ? ? ? ? ?? ? ? ? 如果我们采用socket通信,当我们写代码的时候可能很不方便,就像我们会采用一些持久层框架。例如mybatis而不去直接使用jdbc。 所以为了更方便的传输数据就有了HTTP这个东西。我们从浏览器访问就会看到上图右侧的东西,他就是用HTTP访问的。我们可以 简答的理解为HTTP就是对socket的一种封装。它传递的数据满足HTTP协议的要求,可以更方便我们开发。 ? ? ? 所以我们可以总结出以下几点: ? ? ? 1. socket是大多数通讯协议实现传输数据的基础。 ? ? ? 2. HTTP是对socket的进一步封装,可以提高我们的开发效率。 ? ? ? 3. SOAP协议其实就是规定了XML文本应该满足怎样的格式,因为这样才方便解析,做到了统一。 6、WSDL告诉别人如何调用服务
? ? ? 从上面我们知道,数据的传输以及数据需要满足的格式。那么别人通过什么可以找到你这个服务该怎么调用呢?你是不是需要写个文档
描述下你发布的服务呢?
? ? ? 为了描述我们发布的服务我们需要写一个文件。我们叫他WSDL也就是Web Services Description Language(描述你发布服务的一种语言)
这是一种规范啊。统一的东西你学一次就可以了,不统一的东西你得不停的学,因为没规律啊。
? ? ?
WSDL是一个xml的文档,里面描述了服务的请求地址,用了什么协议,提供了哪些方法,方法参数是什么等信息。
7、总结
? ? ?
Web Service 就是发布在web上的服务。使用http传递数据。传递的数据是满足soap协议规范的xml文档。
使用wsdl描述发布信息让别人能看懂
怎么去调用。
?
webservice = http + soap + wsdl
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |