Web service 介绍与简单应用
一、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:
服務端資源接口實現類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 介绍与简单应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 退市金玉是做什么的
- 下一篇: 短视频行业发展趋势如何 将会迎来更好的发