Webservice soap wsdl區別之個人見解

    • Web Service實現業務訴求:Web Service是真正“辦事”的那個,提供一種辦事接口的統稱。
    • WSDL提供“能辦的事的文檔說明”:對要提供的服務的一種描述格式。我想幫你的忙,但是我要告訴你我都能干什么,以及干這些事情需要的參數類型。
    • SOAP提供“請求”的規范:向服務接口傳遞請求的格式,包括方法和參數等。你想讓人家辦事,總得告訴人家你想干什么吧,SOAP就是定義這個“請求”的格式的,按照SOAP定義的“請求”格式“書寫”請求就可以保證Web Service能夠正確的解讀你想讓它干什么以及你為它提供了什么參數。在這個請求中,你需要描述的主要問題有:向哪個Web Service發送請求,請求的參數類型、參數值、返回值類型。這些都“填寫”完畢,也就完成了符合SOAP規范的SOAP消息。

      ?

      wsdl和soap雖然是web service的兩大標準,但是兩者并沒有必然的聯系,都可以獨立使用。


      ? wsdl提供了一個統一的接口,目前已經成為一個國際上公認的標準,通過wsdl提供的接口可以訪問不同類型的資源(如java、c#、C、C、C++等),因為wsdl是基于xml,與語言平臺無關的。另外wsdl提供了binding和service元素,用以綁定接口到具體的服務,實現了接口與實現的分離。

      soap(簡單對象訪問協議)是一種基于http的傳輸協議,用來訪問遠程服務


      ? wsdl與soap的關系在于:wsdl綁定服務的時候可以設定使用的協議,協議可以是soap、http、smtp、ftp等任何一種傳輸協議,除此以外wsdl還可以綁定jms、ejb及local java等等,不過都是需要對binding和service元素做擴展的,而且需要擴展服務器的功能以支持這種擴展

      ?

      soap協議是一種請求和應答協議規范,而http是web傳輸協議,soap的傳輸是可以基于http的,但也可以基于其他的傳輸協議,如ftp、smtp等。

      ?

      簡單對象訪問協議(SOAP)是W3C組織的一個Note, 它描述了一種在分散的或分布式的環境中如何交換信息的輕量級協議。SOAP是一個基于XML的協議,它包括三個部分:SOAP封裝(Envelop),封裝定義了一個描述消息中的內容是什么,是誰發送的,誰應當接受并處理它以及如何處理它們的框架;SOAP編碼規則(Encoding Rules),用于表示應用程序需要使用的數據類型的實例;SOAP RPC表示(RPC Representation),表示遠程過程調用和應答的協定;SOAP可以和多種傳輸協議綁定(Binding),使用底層協議交換信息。在這個文檔中,目前只定義了SOAP如何和HTTP以及HTTP擴展進行綁定的框架。

      SOAP是個通信協議, SOAP在HTTP協議的基礎上,把編寫成XML的REQUEST參數, 放在HTTP BODY上提交個WEB SERVICE服務器(SERVLET,ASP什么的) 處理完成后,結果也寫成XML作為RESPONSE送回用戶端,?為了使用戶端和WEB SERVICE可以相互對應,可以使用WSDL作為這種通信方式的描述文件,利用WSDL工具可以自動生成WS和用戶端的框架文件,SOAP具備把復雜對象序列化捆綁到XML里去的能力。

      SOAP的前身是RPC, 就是遠程呼叫處理的協議,這個協議安全性不是很好,多數防火墻都會阻擋RPC的通信包,而SOAP則使用HTTP協議作為基本的協議,使用端口80使得SOAP可以透過防火墻,完成RPC的功能。

      SOAP協議和HTTP協議一樣,都是底層的通信協議,只是請求包的格式不同而已,SOAP包是XML格式的,現在我們編寫WEB SERVICE不需要深入理解SOAP也沒關系。如果SERVICE和CLIENT在同樣的環境下使用SOAP,由于一般情況下都有自動生成SOAP程序框架的工具,因此不知道細節也沒關系. 可是, 如果CLIENT和SERVICE的環境不同,比如說JAVA的Client和.NET的SERVICE進行通信,或者是VB CLIENT和TOMCAT下的JAVA SERVICE通信,還是要知道一點細節為好. 特別是, WSDL或者UDDI都不是標準,如果不讓用就只好手工配制SOAP MESSAGE啦。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541747.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541747.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541747.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java uuid靜態方法_Java UUID nameUUIDFromBytes()方法及示例

java uuid靜態方法UUID類名UUIDFromBytes()方法 (UUID Class nameUUIDFromBytes() method) nameUUIDFromBytes() method is available in java.util package. java.util包中提供了nameUUIDFromBytes()方法 。 nameUUIDFromBytes() method is used to get a UUID constructed fr…

清空 linux 服務器,Linux服務器清理

Why?廢話不多說直接來圖,可以看出磁盤已經快要滿了未清之前What?可以看出mnt文件夾占用的最大,然后進入mnt目錄里通過命令,根據文件大小對該路徑下文件排序du -h --max-depth1我們服務器出現磁盤快滿了的原因是因為,服務器部署了多個tomcat…

Git中的AutoCRLF與SafeCRLF換行符問題

2019獨角獸企業重金招聘Python工程師標準>>> 原文:http://www.cnblogs.com/flying_bat/archive/2013/09/16/3324769.html 最近在使用GitHub,發現不時沒有修改過的文件要提交,對比發現文件全部修改,但找不到不一樣的地方…

stringwriter_Java StringWriter getBuffer()方法與示例

stringwriterStringWriter類的getBuffer()方法 (StringWriter Class getBuffer() method) getBuffer() method is available in java.io package. getBuffer()方法在java.io包中可用。 getBuffer() method is used to get the StringBuffer that holds the present buffer valu…

linux 下郵件服務器,Linux 下搭建Postfix郵件服務器

Linux 下搭建Postfix郵件服務器詳解:1、首先關閉sendmail服務service sendmail stop2、chkconfig sendmail off(關閉開機自啟動)3、修改DNS正解文件,使DNS能夠解析郵箱服務添加下面兩行mail.zhubf.com. IN A 172.17.17.2zhubf.com. IN M…

Java PipedInputStream close()方法與示例

PipedInputStream類close()方法 (PipedInputStream Class close() method) close() method is available in java.io package. close()方法在java.io包中可用。 close() method is used to close this PipedInputStream and free all system resources linked with this stream…

Coreseek Windows下安裝調試

由于項目需要全文檢索,后面就去網上查了下資料,找到了Sphinx【中文是獅身人面像】這個全文檢索引擎,聽說挺好用的,不過沒有中文分詞。后面又去找了一下,找到了Coreseek,一款中文全文檢索/搜索軟件。 一、Sp…

linux sudo命令全稱,linux sudo命令的概念與使用

1.sudo介紹本文引用地址:http://www.eepw.com.cn/article/201610/305498.htmsudo是linux下常用的允許普通用戶使用超級用戶權限的工具,允許系統管理員讓普通用戶執行一些或者全部的root命令,如halt,reboot,su等等。這樣…

java 方法 示例_Java語言環境getISOCountries()方法與示例

java 方法 示例區域設置類getISOCountries()方法 (Locale Class getISOCountries() method) getISOCountries() method is available in java.util package. getISOCountries()方法在java.util包中可用。 getISOCountries() method is used to return an array of string that …

android shape.xml 屬性詳解

轉載源:http://blog.csdn.net/harvic880925/article/details/41850723 一、簡單使用 剛開始,就先不講一堆標簽的意義及用法,先簡單看看shape標簽怎么用。 1、新建shape文件 首先在res/drawable文件夾下,新建一個文件,命名為&#…

linux檢查防火墻是否阻擋端口,淺析linux查看防火墻狀態和對外開放的端口狀態...

1.查看防火墻狀態查看防火墻狀態 systemctl status firewalld開啟防火墻 systemctl start firewalld關閉防火墻 systemctl stop firewalld開啟防火墻 service firewalld start若遇到無法開啟先用:systemctl unmask firewalld.service然后:systemctl star…

Java類class getClasses()方法及示例

類的類getClasses()方法 (Class class getClasses() method) getClasses() method is available in java.lang package. getClasses()方法在java.lang包中可用。 getClasses() method is used to return an array that contains Class objects denoting all the public classes…

linux內核計數函數,linux中的內核引用計數器

linux中的內核引用計數器文檔 /Documentation/kref.txt翻譯。krefs能讓你往你的對象中添加一個引用計數器。如果你有一些需要在多處被使用和傳遞的對象,而你并沒有給這些對象中添加引用計數器的話,你的代碼肯定會有某些缺陷,會出現一些問題。…

jQuery常用的全局方法源碼

下面常用方法的詳細使用請查看:http://www.cnblogs.com/moqiutao/p/4775725.html 1.$.noConflict()方法 語法:jQuery.noConflict(removeAll) removeAll:布爾值。指示是否允許徹底將 jQuery 變量還原。 源碼: var// Map over jQuer…

isinstance_Java類class isInstance()方法及示例

isinstance類class isInstance()方法 (Class class isInstance() method) isInstance() method is available in java.lang package. isInstance()方法在java.lang包中可用。 isInstance() method is used to check whether the given object is an instance with the object d…

Linux比較大文件內容,Linux系統最大文件打開數優化,解決Too many open files報錯

這是一個Linux系統常見的故障,網絡上也能輕易的找到解決辦法,我也只是在工作中遇到了這個問題,所以在博客記錄下,以備不時之需。一、報錯截圖:圖為resin的報錯日志,很明顯提示了Too many open files&#x…

java日歷類add方法_Java日歷computeFields()方法及示例

java日歷類add方法日歷類的computeFields()方法 (Calendar Class computeFields() method) computeFields() method is available in java.util package. 在java.util包中提供了validateFields()方法 。 computeFields() method is used to convert current ms(milliseconds) t…

Varnish緩存代理簡介與配置

一、varnish原理:1)Varnish簡介:varnish緩存是web應用加速器,同時也作為http反向緩存代理。你可以安裝varnish在任何http的前端,同時配置它緩存內容。與傳統的 squid 相比,varnish 具有性能更高、速度更快、…

Linux允許61440端口,釋放對某端口的占用

釋放對某端口的占用假如我們需要確定誰占用了我們的9050端口在windows命令行窗口下執行:1.查看所有的端口占用情況C:\>netstat -ano協議 本地地址 外部地址 狀態 PIDTCP 127.0.0.1:1434 0.0.…

as_hash ruby_Hash.merge(other_hash)方法與Ruby中的示例

as_hash rubyHash.merge(other_hash)方法 (Hash.merge(other_hash) Method) In this article, we will study about Hash.merge(other_hash) Method. The working of the method can’t be assumed because it’s quite a different name. Let us read its definition and unde…