日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Web service 介绍与简单应用

發(fā)布時(shí)間:2024/9/30 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web service 介绍与简单应用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Web service 介紹

什么是 Web service

到目前為止對(duì) Web service 沒(méi)有統(tǒng)一的定義,這里以一種更容易理解的方式解釋。Web service 是一個(gè)平臺(tái)獨(dú)立的,低耦合的,自包含的、基于可編程的 web 的應(yīng)用程序,即是一種跨編程語(yǔ)言和操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù)。

Web service 技術(shù), 能使得運(yùn)行在不同機(jī)器上的不同應(yīng)用無(wú)須借助附加的、專(zhuān)門(mén)的第三方軟件或硬件, 就可相互通信。Web service 可以使你的網(wǎng)站使用其他網(wǎng)站的資源,比如在網(wǎng)頁(yè)上顯示天氣、地圖的最新動(dòng)態(tài)等等。

本地服務(wù)的缺陷

"網(wǎng)絡(luò)服務(wù)"是軟件開(kāi)發(fā)和使用的趨勢(shì),本地服務(wù)將越來(lái)越少,主要有以下幾個(gè)原因:

1.本地資源不足。很多數(shù)據(jù)和資料,本地得不到,只有向其他網(wǎng)站要。

2.成本因素。本地提供服務(wù),往往是不經(jīng)濟(jì)的,使用專(zhuān)業(yè)網(wǎng)站的服務(wù)更便宜。這里面涉及硬件和人員兩部分,即使你買(mǎi)得起硬件,專(zhuān)門(mén)找一個(gè)人管理系統(tǒng),也是很麻煩的事。

3.可移植性差。如果你想把本機(jī)的服務(wù),移植到其他機(jī)器上,往往很困難,尤其是在跨平臺(tái)的情況下。

Web service 的優(yōu)勢(shì)

1.自包含。意思是客戶端不需要包含任何附加的軟件或硬件,只要客戶端支持 Http 和 XML 就可以完成數(shù)據(jù)的交換或集成。

2.跨平臺(tái)與跨語(yǔ)言。無(wú)論你使用哪種語(yǔ)言,只要遵循 Web service 的規(guī)范就可以互相調(diào)用。

3.通過(guò)網(wǎng)絡(luò)進(jìn)行發(fā)布,查找和使用,并且不需要考慮客戶端兼容問(wèn)題,一次性就能完成。

4.可以實(shí)現(xiàn)多數(shù)據(jù)與多種服務(wù)聚合。

Web service 三個(gè)核心定義

WSDL(Web services Description Language)Web services 描述語(yǔ)言。一個(gè) XML 格式文檔,用以描述服務(wù)端口訪問(wèn)方式和使用協(xié)議的細(xì)節(jié)。通常用來(lái)輔助生成服務(wù)器和客戶端代碼及配置信息。

SOAP(Simple Object Access Protocol)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議。它是一種標(biāo)準(zhǔn)化的通訊規(guī)范,主要用于 Web 服務(wù) (Web service) 中。這種規(guī)范基于兩個(gè)我們熟知的協(xié)議:HTTP 和 XML。


UDDI(Universal Description, Discovery, and Integration)一個(gè)用來(lái)發(fā)布和搜索 WEB 服務(wù)的協(xié)議,應(yīng)用程序可借由此協(xié)議在設(shè)計(jì)或運(yùn)行時(shí)找到目標(biāo) WEB 服務(wù)。這些標(biāo)準(zhǔn)由這些組織制訂:W3C 負(fù)責(zé) XML、SOAP 及 WSDL;OASIS 負(fù)責(zé) UDDI。

二、使用 Java 原生 API 快速體驗(yàn) Web service

Java 的原生 JDK 對(duì) Web service 作了支持,下面我們通過(guò)服務(wù)端 (可以理解為其他服務(wù)器上的資源) 與客戶端 (本地調(diào)用) 的實(shí)現(xiàn)來(lái)模擬中間的調(diào)用過(guò)程。

服務(wù)端

服務(wù)端項(xiàng)目目錄結(jié)構(gòu) (最基本的 Java Project):

服務(wù)端資源接口WeatherService:

/*** 添加@WebService 注解,表明這是一個(gè) Web service 服務(wù)**/ @WebService public interface WeatherService {/*** 根據(jù)城市名字獲得對(duì)應(yīng)的天氣信息* * @param cityName* @return*/@WebMethodString getWeatherInfoByCityName(String cityName); }

服務(wù)端資源接口實(shí)現(xiàn)類(lèi)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 "查詢不到對(duì)應(yīng)的天氣信息";} }

服務(wù)端開(kāi)啟服務(wù):

public class ServerTest {public static void main(String[] args) {/*** 第一個(gè)參數(shù)是服務(wù)發(fā)布的地址* 第二個(gè)參數(shù)是設(shè)置對(duì)應(yīng)的服務(wù)類(lèi),注意是接口的實(shí)現(xiàn)類(lèi)* 配置完成后直接運(yùn)行該程序即可*/Endpoint.publish("http://localhost:8080/weather", new WeatherServiceImpl());} }

當(dāng)開(kāi)啟服務(wù)后我們可以使用 WSDL 來(lái)查看服務(wù)端的配置信息,只需要在瀏覽器輸入http://localhost:8080/weather?wsdl即可訪問(wèn),http://localhost:8080/weather是我們?cè)谏厦嬖O(shè)置的服務(wù)發(fā)布地址。

上面這個(gè) XML 的格式文檔中描述了服務(wù)端口訪問(wèn)方式和使用協(xié)議的細(xì)節(jié),但是只依靠這個(gè)文檔是不能完成服務(wù)調(diào)用的,上面我們也提到了可以根據(jù)這個(gè)文檔來(lái)生成客戶端的代碼。在配置了 jdk 環(huán)境變量的情況下,我們可以使用wsimport命令把上面的文檔信息生成 Java 代碼。

客戶端

首先先創(chuàng)建一個(gè)普通的 Java 工程,在命令模式下進(jìn)到新建 Java 工程的src目錄下,執(zhí)行wsimport -s . http://localhost:8080/weather?wsdl,其中 -s . 表示把代碼生成在當(dāng)前的目錄。生成代碼的過(guò)程中,會(huì)把包名也連帶一起生成。

客戶端生成的代碼:

根據(jù)客戶端生成的代碼我們就可以調(diào)用服務(wù)端的服務(wù)了 (服務(wù)端的程序在開(kāi)啟的情況下)。

public class ClientTest {public static void main(String[] args) {WeatherServiceImplService factory = new WeatherServiceImplService();// 為 WeatherService 生成代理對(duì)象 WeatherService weatherService = factory.getWeatherServiceImplPort();// 調(diào)用 WeatherService 代理對(duì)象的方法來(lái)獲得對(duì)應(yīng)的天氣信息String weatherInfo = weatherService.getWeatherInfoByCityName("上海");System.out.println(weatherInfo);} }

控制臺(tái)輸出:

三、總結(jié)

到這里我們應(yīng)該知道什么是 Web service 了,服務(wù)端與客戶端可以是兩個(gè)不同的工程,不管使用什么語(yǔ)言與什么平臺(tái) (PS:上面這個(gè)例子使用的都是 Java),它們之間都可以通過(guò) HTTP 協(xié)議進(jìn)行通信。因此你可以用任何你喜歡的語(yǔ)言,在任何你喜歡的平臺(tái)上寫(xiě) Web service ,只要我們可以通過(guò) Web service 標(biāo)準(zhǔn)對(duì)這些服務(wù)進(jìn)行查詢和訪問(wèn)即可。

參考資料:
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

總結(jié)

以上是生活随笔為你收集整理的Web service 介绍与简单应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。