Web Service 是什麼?

早年的資料交換使用 RPC 技術
缺點是每個產品都是特定的軟體
要麼耦合特定系統,要麼格式不一樣,不能互通
隨著網際網路的普及,找到了解決方案
使用 Web 協定提供服務,就不用仰賴第三方軟體
只要透過 URL 取得網路上的服務

當然現在 Web Service 也淪為舊的技術了(2000-2010)
當今主流的 Web API 更為靈活自由
不過在 SAP 系統仍常見 Web Service 的蹤影

核心元素:

  • SOAP:是基於 HTTP 之上的一種通訊協定,訊息內容是 XML 格式
  • WSDL:協助用戶端與伺服器整合的文件
  • Disco:Web Service 的搜尋引擎
  • UDDI:Web Service 的註冊資料庫

運作方式:

  1. Provider 開發部署 Web Service
  2. Provider 產出 WSDL 文件
  3. Provider 向 Broker(UDDI 資料庫)發布 Web Service
  4. Consumer 向 Broker(UDDI 資料庫)搜尋 Web Service
  5. Consumer 依據 WSDL 文件產生客戶端程式
  6. Consumer 使用 Web Service

WSDL (Web Services Description Language) 是什麼?

關於 Web Service 的位置、功能與呼叫等細節
如果沒有一套規範標準,會造成 Client 與 Server 溝通困難
WSDL 就是用來描述 Web Service 的一門語言
相當於 Web Service 的「自我介紹」
而且它是機器可處理的 XML 格式
因此透過開發工具可以產生 Web Service 的 WSDL 文件
也能以 WSDL 文件產生 Client 端程式碼

開發順序有兩種:
Contract Last:先建構程式再產生 WSDL
Contract First:先建構 WSDL 再產生程式

詳細標籤說明:http://staff.ustc.edu.cn/~shizhu/DotNet/WSDLxj.htm

Parent ElementsAttributesChildren Elements
<definitions>name
targetNamespace
xmlns
<types>
<message>
<portType>
<binding>
<service>
<types><xsd:schema>
<message>name<part>
<portType>name<operation>
<binding>name
type
<operation>
<service>name
serviceType
<port>
<xsd:schema>xmlns<xsd:simpleType>
<xsd:complexType>
<part>name
type
<operation>name
parameterOrder
<input>
<output>
<fault>
<input>name
message
<output>name
message
<fault>name
message
<port>name
binding
<soap:address>
<soap:address>location

使用 Eclipse 用 WSDL 產生 Web Service 客戶端

對專案右鍵 New

選擇 Other

選擇 Web Service Client → Next

在 Service definition 輸入 WSDL 的 URL
旁邊的拖拉條選至 Develop client
最後 Finish

專案會出現新的 package 與 class
讓客戶端呼叫使用