zt http://blog.163.com/try_boy/blog/static/17868656220122711250140/?latestBlog程序員
Webservice它是一種構建應用程序的廣泛模型,能夠在任何支持網絡通訊的操做系統中實施運行;它是一種新的web 應用程序分支,是自包含、自描述、模塊 化的應用,能夠發佈、定位、經過web調用。Web Service是一個應用組件,它邏輯性的爲其餘應用程序提供數據與服務。各應用程序經過網絡協議和規定的一些標準數據格式(Http,XML,Soap)來訪問Web Service,經過Web Service內部執行獲得所需結果。Web Service能夠執行從簡單的請求到複雜商務處理的任何功能。一旦部署之後,其餘Web Service應用程序能夠發現並調用它部署的服務。web
實際上,WebService的主要目標是跨平臺的可互操做性。爲了達到這一目標,WebService徹底基於XML(可擴展標記語言)、XSD(XMLSchema)等獨立於平臺、獨立於軟件供應商的標準,是建立可互操做的、分佈式應用程序的新平臺。編程
技術和規則服務器
XML:描述數據的標準方法.
SOAP:表示信息交換的協議.
WSDL:Web服務描述語言.
UDDI(Universal Description, Discovery and Integration):通用描述、發現與集成,它是一種獨立於平臺的,基於XML語言的用於在互聯網上描述商務的協議。 網絡
--------------------------------------------------------------------------------------框架
SOAP:簡單對象訪問協議,簡單對象訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 能夠和現存的許多因特網協議和格式結合使用,包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。分佈式
soap。n.(英文)肥皂 工具
SOAP:簡單對象訪問協議 性能
(SOAP:Simple Object Access Protocol)
SOAP 包括四個部分:
SOAP 封裝:它定義了一個框架 , 該框架描述了消息中的內容是什麼,誰應當處理它以及它是可選的仍是必須的。
SOAP 編碼規則:它定義了一種序列化的機制,用於交換應用程序所定義的數據類型的實例。
SOAP RPC 表示:它定義了用於表示遠程過程調用和應答的協定。
SOAP 綁定:定義了一種使用底層傳輸協議來完成在節點間交換SOAP封裝的約定。
SOAP 消息基本上是從發送端到接收端的單向傳輸,但它們經常結合起來執行相似於請求 / 應答的模式。全部的 SOAP 消息都使用 XML 編碼。一條 SOAP 消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭和一個必需的 SOAP 體塊的 XML 文檔。
把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特色以及 HTTP 的豐富的特徵庫的優勢。在 HTTP 上傳送 SOAP 並非說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會天然的映射到 HTTP 語義。在使用 HTTP 做爲協議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 並不只限於 HTTP 協議綁定。
SOAP也能夠綁定到TCP和UDP協議上。
SOAP 消息格式:
SOAP 標頭
<SOAP-ENV: Envelope
Attributes>
<SOAP-ENV:Body
Attributes>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>目前主要在web服務中運用。
SOAPAction WEB編碼中常見,協議開始起始意思,常見於編碼啓始句。
這裏是一些重要的語法規則:
SOAP 消息必須用 XML 來編碼
SOAP 消息必須使用 SOAP Envelope 命名空間
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 處理指令
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www./2001/12/soap-envelope"
soap:encodingStyle="http://www./2001/12/soap-encoding">
<soap:Header>
...
...
</soap:Header>
<soap:Body>
...
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
--------------------------------------------------------------------------------------
Web Service的應用場景
之前,分佈式的應用程序邏輯須要使用分佈式的對象模型,經過使用DCOM、CORBA、RMI之類的基本結構,開發人員仍可擁有使用本地模型所提供的豐富資源和精確性,並可將服務置於遠程系統中。
當已經有中意的中間件平臺(RMI、Jini、CORBA、DCOM等)時,咱們爲何還要爲Web而煩惱呢?中間件確實提供了強大的服務實現手段,可是,這些系統有一個共同的缺陷,那就是它們沒法擴展到互聯網上:它們要求服務的客戶端與系統提供的服務自己之間必須進行緊密耦合,即要求一個同類基本結構。然而這樣的系統每每十分脆弱:若是一端的執行機制發生變化,那麼另外一端便會崩潰。例如,若是服務器應用程序的接口更改,那麼客戶端便會崩潰。爲了能擴展到互聯網運用,咱們須要一種鬆散耦合的基本結構來解決這個問題。在些狀況下就迎來了Web服務的誕生。Web Service技術是一種基於標準的Web協議的可編程組件,咱們能夠把Web Service看作Web上的組件,Web服務提供者開放一系列的API,開發人員經過調用這些API來集成Web服務,構建本身的應用程序。
1.SOAP
SOAP(Simple Object Access Protocal)是在分散或在分佈式環境中交換信息的簡單協議,它基於XML協議,以XML形式提供了一個簡單且輕量的用於在分散或分佈環境下交換結構化和類型信息的機制,其自己並無定義任何應用程序語義,如編程模型或特定語義的實現,而是經過提供一個有標準組件的包模型和在模塊中編碼數據的機制定義了一個簡單的表示應用程序語義的機制,使其可以用於從信息傳遞到RPC的各類系統。SOAP規範定義了SOAP消息的格式,以及怎樣經過HTTP協議來使用SOAP。SOAP最引人注目的特徵是它能夠在許多不一樣的軟件和硬件平臺上實現。這意味着 SOAP 可用於鏈接企業內部和外部的不一樣系統。過去曾試過多種方法以提出一個可用於系統集成的通用通訊協議,但它們都沒有像SOAP同樣得到普遍的承認。爲何呢?由於與許多早期的協議相比,SOAP更小巧,並且更簡單和易於實現。HTTP的普及和SOAP的簡單性使你幾乎能夠在任何環境下調用它們,所以成爲XML Web Service的理想基礎。
2.WSDL
你會怎樣向別人介紹你的Web Service有什麼功能,以及每一個函數調用時的參數呢?你可能會本身寫一套文檔,甚至口頭告訴須要使用你的Web Service的人。這些非正式的方法至少都有一個嚴重的問題:當程序員坐到電腦前,想要使用你的Web Service的時候,他們的工具(如Visual Studio)沒法給他們提供任何幫助,由於這些工具根本就不瞭解你的Web Service。解決方法是使用機器能閱讀的方式提供一個正式的描述文檔。Web Service描述語言(WSDL)就是這樣一個基於XML的語言,用於描述Web Service及其函數、參數和返回值。由於是基於XML的,因此WSDL既是機器可閱讀的,又是人可閱讀的,這將是一個很大的好處。一些最新的開發工具既能根據你的Web Service生成WSDL文檔,又能導入WSDL文檔,生成調用相應Web Service的代碼。
3.UDDI
UDDI(通用發現、說明和集成)是Web服務的黃頁。是一套基於Web的、分佈式地爲Web Service 提供信息註冊中心的實現標準,同時包含一組能使企業將自身提供的Web Service註冊使得別的企業可以發現的訪問協議。與傳統黃頁同樣,你能夠搜索提供所需服務的公司,閱讀以瞭解所提供的服務,而後與某人聯繫以得到更多信息。
趣味理解
Web Service比如一個服務供應商,給其餘廠家提供基礎服務,其餘廠家再將這個服務包裝成本身的產品或者服務提供給別人或本身使用。有點像OEM了。既然兩個公司須要合做,不可能靠一句話就能夠的,就須要一些標準和規範的東西來實現。那麼:
SOAP 就像兩個公司之間籤的合同,約束雙方按必定規矩和標準辦事。
WSDL 則像說明書,告訴別人你有什麼,能給別人提供什麼服務。
UDDI 比如你的公司須要在黃頁或工商註冊,企業的主營業務登記,方便別人查詢。固然,你也能夠不在 UDDI 中註冊,就像在地下室開展業務,靠的是口頭吆喝;可是若是你但願拓展市場,則須要 UDDI 以便能被客戶發現,更方便地找到你。
Web Service是建立可互操做的分佈式應用程序的新平臺。Web Service 的主要目標是跨平臺的可互操做性。爲了達到這一目標,Web Service 是徹底基於XML、XSD等獨立於平臺、獨立於軟件供應商的標準的。Web Service在應用程序跨平臺和跨網絡進行通訊的時候是很是有用的。Web Service適用於應用程序集成、B2B集成、代碼和數據重用,以及經過Web進行客戶端和服務器的通訊的場合。
固然,Web Service也不是萬能的,你不能處處濫用Web Service。在有些狀況下,Web Service 會下降應用程序的性能,而不會帶來任何好處。例如,一臺機器或一個局域網裏面運行的同構應用程序就不該該用Web Service 進行通訊。
到如今爲止,咱們已經討論瞭如何與 Web Service 通訊(SOAP),Web Service是怎樣進行說明的(WSDL),以及如何查找 Web Service(UDDI)。這些內容構成了一套基本規範,爲應用程序的集成和聚合提供了基礎。根據這些基本規範,公司能夠構建實際的解決方案,並從中獲益
原文轉載:http://blog.csdn.net/onetree2010/article/details/6320408