雜談 WebService是什麼?

2021-09-23 23:29:36 字數 3543 閱讀 8090

webservice是什麼? 

webservice的乙個最基本的目的就是提供在各個不同平台的不同應用系統的協同工作能力。 

其實webservice並不是什麼神秘的東西,它就是乙個可以遠端呼叫的類,或者說是元件。 

為什麼要使用webservice? 

webservice是乙個新的概念,它並不是微軟首先提出的,但是微軟的dotnet戰略讓它最廣泛的發揮它的潛能。也許它流行的根本原因並不是微軟,也許是因為頻寬與儲存量的飛速發展,但是dotnet戰略確實起到了很大的作用,令它能夠在更加廣泛的開發平台上施展。dotnet戰略領導著微軟前進,微軟為了dotnet計畫也花費了近300億美元。為什麼?因為微軟要它的理念、方式不但在單機軟體,甚至在internet上也被最廣泛的認同。webservice最早被應用在sun等對網路先知先覺的平台上,並且在苦苦的期待發展。而j2ee是最早的成功開發webservice的平台,它的理念就是在網上最廣泛的傳播、使用,成為一種真正的服務。當微軟的dotnet計畫即將實施的時候,微軟也開始發掘webservice的潛力。今天的 web 站點僅能為瀏覽器提供使用者介面,而下一代可程式設計 web 站點直接將企業、應用程式、服務和裝置彼此鏈結。這些可程式設計 web 站點將不只是被動訪問的站點,而將成為可重用的智慧型 web 服務。因此我們要使用webservice才能適應將來的發展趨勢。一句話:為了順應時代的發展。 

webservice有什麼優勢及劣勢? 

在早期的webservice開發中,由於頻寬與儲存容量的限制,令它並不被人關注。隨著技術的發展,頻寬與儲存已經不成任何問題了,隨便一條光纖就有1000m,家庭用的計算機都有160gb,更不要說伺服器用的動輒就上tb的磁碟陣列了。然而,隨著internet的飛速發展,人們都應該感覺到網路給人們帶來的新驚喜了,那就是網上辦公。現在的網上辦公系統是越做越先進,但是有乙個通病——相容性問題,因此溝通十分的困難,然而webservice則讓人的溝通更加順暢。打個比方:兩國的人交流需要翻譯,十分麻煩,因此不如統一兩國的語言。而webservice就是這樣的乙個新的概念。webservice的發展時間很短,因此導致了乙個問題——安全性。由於xml傳輸全部是明文傳輸,因此導致了安全性問題也不奇怪,但只需在要傳輸的資料上做點手腳就解決了。 

分布式應用程式和瀏覽器 

研究一下當前的應用程式開發,你會發現乙個絕對的傾向:人們開始偏愛基於瀏覽器的瘦客戶應用程式。這當然不是因為瘦客戶能夠提供更好的使用者介面,而是因為它能夠避免花在桌面應用程式發布上的高成本。發布桌面應用程式成本很高,一半是因為應用程式安裝和配置的問題,另一半是因為客戶和伺服器之間通訊的問題。 

傳統的windows富客戶應用程式使用dcom來與伺服器進行通訊和呼叫遠端物件。配置好dcom使其在乙個大型的網路中正常工作將是乙個極富挑戰性的工作,同時也是許多it工程師的噩夢。事實上,許多it工程師寧願忍受瀏覽器所帶來的功能限制,也不願在區域網上去執行乙個dcom。在我看來,結果就是乙個發布容易,但開發難度大而且使用者介面極其受限的應用程式。極端的說,就是你花了更多的資金和時間,卻開發出從使用者看來功能更弱的應用程式。不信?問問你的會計師對新的基於瀏覽器的會計軟體有什麼想法:絕大多數商用程式使用者希望使用更加友好的windows使用者介面。 

關於客戶端與伺服器的通訊問題,乙個完美的解決方法是使用http協議來通訊。這是因為任何執行web瀏覽器的機器都在使用http協議。同時,當前許多防火牆也配置為只允許http連線。 

什麼是web service 

返回的資料就應該是這樣: 

21,晴 

這個asp頁面就應該可以算作是web service 了。因為它基於http get請求,暴露出了乙個可以通過web呼叫的api。當然,web service 還有更多的東西。 

下面是對web service 更精確的解釋: web services是建立可互操作的分布式應用程式的新平台。作為乙個windows程式設計師,你可能已經用com或dcom建立過基於元件的分布式應用程式。com是乙個非常好的元件技術,但是我們也很容易舉出com並不能滿足要求的情況。 

新平台 

web service平台需要一套協議來實現分布式應用程式的建立。任何平台都有它的資料表示方法和型別系統。要實現互操作性,web service平台必須提供一套標準的型別系統,用於溝通不同平台、程式語言和元件模型中的不同型別系統。在傳統的分布式系統中,基於介面(inte***ce)的平台提供了一些方法來描述介面、方法和引數(譯註:如com和cobar中的idl語言)。同樣的,web service平台也必須提供一種標準來描述web service,讓客戶可以得到足夠的資訊來呼叫這個web service。最後,我們還必須有一種方法來對這個web service進行遠端呼叫。這種方法實際是一種遠端過程呼叫協議(rpc)。為了達到互操作性,這種rpc協議還必須與平台和程式語言無關。下面幾個小節就簡要介紹了組成web service平台的這三個技術。 

xml和xsd 

可擴充套件的標記語言(xml)是web service平台中表示資料的基本格式。除了易於建立和易於分析外,xml主要的優點在於它既是平台無關的,又是廠商無關的。無關性是比技術優越性更重要的:軟體廠商是不會選擇乙個由競爭對手所發明的技術的。 

xml解決了資料表示的問題,但它沒有定義一套標準的資料型別,更沒有說怎麼去擴充套件這套資料型別。例如,整形數到底代表什麼?16位,32位,還是64位?這些細節對實現互操作性都是很重要的。w3c制定的xml schema(xsd)就是專門解決這個問題的一套標準。它定義了一套標準的資料型別,並給出了一種語言來擴充套件這套資料型別。web service平台就是用xsd來作為其資料型別系統的。當你用某種語言(如vb.net或c#)來構造乙個web service時,為了符合web service標準,所有你使用的資料型別都必須被轉換為xsd型別。你用的工具可能已經自動幫你完成了這個轉換,但你很可能會根據你的需要修改一下轉換過程。在第二章中,我們將深入xsd,學習怎樣轉換自定義的資料型別(例如類)到xsd的型別。 

soap 

web service建好以後,你或者其他人就會去呼叫它。簡單物件訪問協議(soap)提供了標準的rpc方法來呼叫web service。實際上,soap在這裡有點用詞不當:它意味著下面的web service是以物件的方式表示的,但事實並不一定如此:你完全可以把你的web service寫成一系列的c函式,並仍然使用soap進行呼叫。soap規範定義了soap訊息的格式,以及怎樣通過http協議來使用soap。soap也是基於xml和xsd的,xml是soap的資料編碼方式。第三章我們會討論soap,並結識soap訊息的各種元素。 

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的**。

原文出處:

轉 Web service是什麼?

我認為,下一代網際網路軟體將建立在web service 也就是 雲 的基礎上。我把學習筆記和學習心得,放到網誌上,歡迎指正。今天先寫乙個最基本的問題,web service到底是什麼?一 web service的概念 想要理解web service,必須先理解什麼是service 服務 傳統上,我...

老李分享 webservice是什麼?

前言 web services 是 web 應用出於和其他 web 應用以互動資料為目的的開放式標準 xml soap http 等 web services 可以將你現有的應用程式轉換為 web 應用程式。通過本系列指南中,您將了解到 web services 是什麼,為什麼和如何使用它們。本系列...

Web Service是什麼 作者 阮一峰

日期 2009年8月26日 我認為,下一代網際網路軟體將建立在web service 也就是 雲 的基礎上。我把學習筆記和學習心得,放到網誌上,歡迎指正。今天先寫乙個最基本的問題,web service到底是什麼?一 web service的概念 想要理解web service,必須先理解什麼是se...