一、Web service 介绍

什么是 Web service

到目前为止对 Web service 没有统一的定义,这里以一种更容易理解的方式解释。Web service 是一个平台独立的,低耦合的,自包含的、基于可编程的 web 的应用程序,即是一种跨编程语言和操作系统平台的远程调用技术。

Web service 技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互通信。Web service 可以使你的网站使用其他网站的资源,比如在网页上显示天气、地图的最新动态等等。

本地服务的缺陷

"网络服务"是软件开发和使用的趋势,本地服务将越来越少,主要有以下几个原因:

1.本地资源不足。很多数据和资料,本地得不到,只有向其他网站要。

2.成本因素。本地提供服务,往往是不经济的,使用专业网站的服务更便宜。这里面涉及硬件和人员两部分,即使你买得起硬件,专门找一个人管理系统,也是很麻烦的事。

3.可移植性差。如果你想把本机的服务,移植到其他机器上,往往很困难,尤其是在跨平台的情况下。

Web service 的优势

1.自包含。意思是客户端不需要包含任何附加的软件或硬件,只要客户端支持 Http 和 XML 就可以完成数据的交换或集成。

2.跨平台与跨语言。无论你使用哪种语言,只要遵循 Web service 的规范就可以互相调用。

3.通过网络进行发布,查找和使用,并且不需要考虑客户端兼容问题,一次性就能完成。

4.可以实现多数据与多种服务聚合。

Web service 三个核心定义

WSDL(Web services Description Language)Web services 描述语言。一个 XML 格式文档,用以描述服务端口访问方式和使用协议的细节。通常用来辅助生成服务器和客户端代码及配置信息。

SOAP(Simple Object Access Protocol)简单对象访问协议。它是一种标准化的通讯规范,主要用于 Web 服务 (Web service) 中。这种规范基于两个我们熟知的协议:HTTP 和 XML。

UDDI(Universal Description, Discovery, and Integration)一个用来发布和搜索 WEB 服务的协议,应用程序可借由此协议在设计或运行时找到目标 WEB 服务。这些标准由这些组织制订:W3C 负责 XML、SOAP 及 WSDL;OASIS 负责 UDDI。

二、使用 Java 原生 API 快速体验 Web service

Java 的原生 JDK 对 Web service 作了支持,下面我们通过服务端 (可以理解为其他服务器上的资源) 与客户端 (本地调用) 的实现来模拟中间的调用过程。

服务端

服务端项目目录结构 (最基本的 Java Project):

服务端资源接口WeatherService

/*** 添加@WebService 注解,表明这是一个 Web service 服务**/
@WebService
public interface WeatherService {/*** 根据城市名字获得对应的天气信息* * @param cityName* @return*/@WebMethodString getWeatherInfoByCityName(String cityName);
}

服务端资源接口实现类WeatherServiceImpl

@WebService(endpointInterface= "com.jas.websevice.server.WeatherService")
public class WeatherServiceImpl implements WeatherService {@Overridepublic String getWeatherInfoByCityName(String cityName) {if("北京".equals(cityName)){return "晴";} else if ("上海".equals(cityName)) {return "小雨";}return "查询不到对应的天气信息";}
}

服务端开启服务:

public class ServerTest {public static void main(String[] args) {/*** 第一个参数是服务发布的地址* 第二个参数是设置对应的服务类,注意是接口的实现类* 配置完成后直接运行该程序即可*/Endpoint.publish("http://localhost:8080/weather", new WeatherServiceImpl());}
}

当开启服务后我们可以使用 WSDL 来查看服务端的配置信息,只需要在浏览器输入http://localhost:8080/weather?wsdl即可访问,http://localhost:8080/weather是我们在上面设置的服务发布地址。

上面这个 XML 的格式文档中描述了服务端口访问方式和使用协议的细节,但是只依靠这个文档是不能完成服务调用的,上面我们也提到了可以根据这个文档来生成客户端的代码。在配置了 jdk 环境变量的情况下,我们可以使用wsimport命令把上面的文档信息生成 Java 代码。

客户端

首先先创建一个普通的 Java 工程,在命令模式下进到新建 Java 工程的src目录下,执行wsimport -s . http://localhost:8080/weather?wsdl,其中 -s . 表示把代码生成在当前的目录。生成代码的过程中,会把包名也连带一起生成。

客户端生成的代码:

根据客户端生成的代码我们就可以调用服务端的服务了 (服务端的程序在开启的情况下)。

public class ClientTest {public static void main(String[] args) {WeatherServiceImplService factory = new WeatherServiceImplService();// 为 WeatherService 生成代理对象 WeatherService weatherService = factory.getWeatherServiceImplPort();// 调用 WeatherService 代理对象的方法来获得对应的天气信息String weatherInfo = weatherService.getWeatherInfoByCityName("上海");System.out.println(weatherInfo);}
}

控制台输出:

三、总结

到这里我们应该知道什么是 Web service 了,服务端与客户端可以是两个不同的工程,不管使用什么语言与什么平台 (PS:上面这个例子使用的都是 Java),它们之间都可以通过 HTTP 协议进行通信。因此你可以用任何你喜欢的语言,在任何你喜欢的平台上写 Web service ,只要我们可以通过 Web service 标准对这些服务进行查询和访问即可。

参考资料:
http://www.cnblogs.com/Leo_wl/archive/2010/05/20/1740205.html
http://www.ruanyifeng.com/blog/2009/08/what_is_web_service.html
http://blog.csdn.net/feinifi/article/details/77780151

Web service 介绍与简单应用相关推荐

  1. 转:Web Service入门开发简单例子--很详尽

    .net平台内建了对Web Service的支持,包括Web Service的构建和使用.与其它开发平台不同,使用.net平台,你不需要其他的工具或者SDK就可以完成Web Service的开发了.. ...

  2. ODI中web service介绍

    ODI WS架构 ODI Web Service有几种, 第一种,可将数据(Data Store)表发布为Web Service,提供有相应的查询.删除.更新.添加数据的接口: 针对这类WS,需要在应 ...

  3. Visual Studio 2013中引入Web Service的简单方法visual studio 引用 wsdl

    http://blog.csdn.net/wangzhongbo_24/article/details/49954191 Web Service有三种表示方式 三种方式分别为WSDL.Endpoint ...

  4. WCF实现RESTFul Web Service

    共同学习了前面一些概念,终于开始正题了哈.RESTful的Web Service调用直观,返回的内容容易解析.这里先会描述一个简单的场景--Web Service提供一个方法来搜索个人信息,传入人名, ...

  5. VB.Net编程实现Web Service的基础

    Web Service目前可是目前计算机界一个非常流行的技术了,以至于有些人把Web Service列入目前最热门的十大技术之一.的确随着互联网的广泛应用和发展,尤其是电子商务的发展,出于互联网上各种 ...

  6. 使用JAX-RS创建RESTful Web Service

    guice resteasy http://www.cnblogs.com/ydxblog/p/7891224.html http://blog.csdn.net/withiter/article/d ...

  7. 用cxf公布和调用web service

    用cxf发布和调用web service 最近我们的系统需要和一个第三方系统对接,对接的方式是通过web service,所以就学习了一下这方面的东西 用CXF来做web service是比较简单的, ...

  8. VB.NET,C#.NET调用Web Service,利用visual studio 的实现方法

    在VB.NET调用Web Service提供的服务 技术qq交流群:JavaDream:251572072 下面是一篇文章比较详细,其实具体操作很简单,把Web Service服务地址,利用工具(VS ...

  9. WCF分布式开发必备知识(4):Web Service(转)

    今天继续我们的WCF分布式开发必备知识系列文章的第4节:Web Service.前3节我们分别介绍了MSMQ消息队列/.Net Remoting/Enterprise Services三个相关的技术. ...

最新文章

  1. 虚拟化---简单高效的IT管理模型
  2. 利用linux自带的邮箱服务实现邮件转发
  3. dma访问主存时_STM32F103单片机(五)——DMA
  4. CVE-2021-35211: SolarWinds Serv-U SSH 漏洞分析
  5. 高清晰电影的文件后缀解析
  6. Java实现Google第三方登录
  7. linux用光盘作yum源实验步骤,Linux使用系统光盘作为YUM源
  8. python接口自动化(四十二)- 项目架构设计之大结局(超详解)
  9. PHP开启输出错误信息
  10. ps小白修改矢量图颜色
  11. java爬虫(爬取豆瓣电影排行榜)
  12. NOTE【数据分析】置信水平/置信区间
  13. 生物竞赛初赛报名已截止!各省往届真题超全汇总,建议收藏
  14. 为什么都是技术合伙人被踢出局?
  15. dvd在线租赁问题 matlab,DVD在线租赁服务管理模型
  16. VOLTE与VOWIFI对比
  17. RF射频卡的介绍与与手机NFC的通信
  18. webStorm自动格式化
  19. cnpm报错 : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本
  20. 不规则长方体空间移动工程师_仅有30㎡的不规则蜗居,设计移动墙后,半平米都不会浪费!|橱柜|卫浴|小户型设计|厨房|户型...

热门文章

  1. 手写java数据库连接池,自定义实现数据库连接池,兼容springboot
  2. uni-app——Vue3简单整合uView@1.8.4解决方案
  3. Vue-CLI@4——html-webpack-plugin默认配置的获取与修改
  4. Navicat——MySQL之delimiter默认设置问题
  5. C/C++程序设计IDE推荐
  6. SUM and REPLACE
  7. Codeforces
  8. 暴走英雄坛html5游戏在线玩,暴走英雄坛h5
  9. 【算法】设计算法求所有强连通分量的完整代码(kosaraju算法)
  10. 结构体数组实现的简易学生信息管理系统