WebService介紹及C/C++訪問


一.什么是WebService

Web 服務是一個軟件接口,它描述了一組可以在網絡上通過標准化的 XML 消息傳遞訪問的操作。它使用基於 XML 語言的協議來描述要執行的操作或者要與另一個 Web 服務交換的數據。一組以這種方式交互的 Web 服務在面向服務的體系結構(Service-Oriented ArchitectureSOA)中定義了特殊的 Web 服務應用程序。

一句話概括就是:Webservice使一種跨編程語言和跨操作系統平台的遠程調用技術。

還可以從多角度來理解WebService,從表面看,WebService就是一個應用程序向外界暴露出一個能通過Web進行調用的API,也就是說能用編程的方法通過Web來調用這個應用程序。我們把調用這個WebService的應用程序叫做客戶端,而把提供這個WebService的應用程序叫做服務端。從深層次看,WebService是建立可互操作的分布式應用程序的新平台,是一個平台,是一套標准。它定義了應用程序如何在Web上實現互操作性,你可以用任何你喜歡的語言,在任何你喜歡的平台上寫Web service ,只要我們可以通過Web service標准對這些服務進行查詢和訪問。

 

 

二.WebService平台技術三要素

SOAPWSDLUDDI三者構成了WebService的三要素。

 

1.SOAP(Simple Object Access Protocol)簡單對象訪問協議:

WebService通過HTTP協議發送請求和接收結果時,發送的請求內容和結果內容都采用XML格式封裝,並增加了一些特定的HTTP消息頭,以說明HTTP消息的內容格式,這些特定的HTTP消息頭和XML內容格式就是SOAP協議。SOAP提供了標准的RPC方法來調用Web Service

SOAP協議組成:

SOAP協議 = HTTP協議 + XML數據格式

SOAP協議定義了SOAP消息的格式,SOAP協議是基於HTTP協議的,SOAP也是基於XMLXSD的,XMLSOAP的數據編碼方式。打個比喻:HTTP就是普通公路,XML就是中間的綠色隔離帶和兩邊的防護欄,SOAP就是普通公路經過加隔離帶和防護欄改造過的高速公路。

 

2.WSDL(Web Services Description Language) Web服務描述語言:

好比我們去商店買東西,首先要知道商店里有什么東西可買,然后再來購買,商家的做法就是張貼廣告海報。 WebService也一樣,WebService客戶端要調用一個WebService服務,首先要有知道這個服務的地址在哪,以及這個服務里有什么方法可以調用,所以,WebService務器端首先要通過一個WSDL文件來說明自己家里有啥服務可以對外調用,服務是什么(服務中有哪些方法,方法接受的參數是什么,返回值是什么),服務的網絡地址用哪個url地址表示,服務通過什么方式來調用。

WSDL(Web Services Description Language)就是這樣一個基於XML的語言,用於描述Web Service及其函數、參數和返回值。它是WebService客戶端和服務器端都能理解的標准格式。因為是基於XML的,所以WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Web service生成WSDL文檔,又能導入WSDL文檔,生成調用相應WebService的代理類代碼。

 

  1. UDDI (Universal Description, Discovery, and Integration)

主要針對Web服務供應商和使用者的新項目。在用戶能夠調用Web服務之前,必須確定這個服務內包含哪些商務方法,找到被調用的接口定義,還要在服務端來編制軟件,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標准的XML/HTTP)來發布,編輯,瀏覽以及查找注冊信息。它采用XML格式來封裝各種不同類型的數據,並且發送到注冊中心或者由注冊中心來返回需要的數據。

三.如何用C/C++實現WebService

WebService可以使用各種語言開發web服務,但主要以Java.NET為主,用C/C++開發web服務的工具不多,主要有Axis C++gSoap

1.Axis C++:相比於Java版的AxisAxis C++在安裝配置和開發部署新的Web服務都比較復雜,開發時要關注每一個細節,因為Axis C++本身並沒有詳細的日志信息,當出現錯誤的時候很難跟蹤哪個環節出了問題。另外,Axis C++WSDL信息的內容要求非常嚴格,而且往往找不到問題所在。

至於Axis C++的安裝配置,請參考其官方文檔。

   使用Axis C++開發Web服務的基本過程可以簡單描述如下:

   1、使用Java語言描述WEB服務

   2、使用Java2WSDL工具生成WSDL文件

   3、使用WSDL2Ws工具生成服務端代碼框架

   4、編碼實現service,並部署服務

   5、使用WSDL2Ws工具生成客戶端代碼框架

   6、編碼實現客戶端

 

  1. gSoap

gSoap是一個綁定SOAP/XMLC/C++語言的工具,使用它可以簡單快速地開發出SOAP/XML的服務器端和客戶端。gSoap的編譯器能夠自動的將用戶定義的本地化的CC++數據類型轉變為符合XML語法的數據結構,反之亦然。

gSoap提供了兩個常用工具:wsdl2hsoapcpp2。這兩個工具主要用來根據wsdl文件生成開發過程使用的C/C++文件。

附件中的demo就是用這種方法實現的。附demo參考網址:

https://blog.csdn.net/sunnylion1982/article/details/47186481


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM