首頁 > php教程 > PHP开发 > 主體

Webservice工作原理及實例

高洛峰
發布: 2016-12-15 14:58:51
原創
1465 人瀏覽過

 Web Service運作原理   

                                 Service WebService是一種可以接收從Internet或Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:透過SOAP在Web上提供的軟體服務,使用WSDL檔案進行說明,並透過UDDI進行註冊。

XML:(Extensible Markup Language)擴充型可標記語言。面向短期的臨時資料處理、面向萬維網絡,是Soap的基礎。

Soap:(Simple Object Access Protocol)簡單物件存取協定。是XML Web Service 的通訊協定。當使用者透過UDDI找到你的WSDL描述文件後,他透過可以SOAP呼叫你建立的Web服務中的一個或多個操作。 SOAP是XML文件形式的呼叫方法的規範,它可以支援不同的底層接口,像HTTP(S)或SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 訊息以及如何交換這些訊息。大多數情況下由軟體自動產生和使用。

UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新專案。在使用者能夠呼叫Web服務之前,必須確定這個服務內包含哪些商務方法,找到被呼叫的介面定義,還要在服務端來編製軟體,UDDI是一種根據描述文件來引導系統尋找對應服務的機制。 UDDI利用SOAP訊息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及尋找註冊資訊。它採用XML格式來封裝各種不同類型的數據,並且發送到註冊中心或由註冊中心來返回所需的數據。


二、呼叫原則

實作一個完整的Web服務包含以下步驟:

Webservice工作原理及實例◆ Web服務提供者設計實作Web服務,並將調試正確後的Web服務透過Web服務中介者發佈,並透過Web服務中介者發佈,並發佈在UDDI註冊中心註冊;(發佈)

◆ Web服務請求者向Web服務中介者請求特定的服務,中介者根據請求查詢UDDI註冊中心,為請求者尋找滿足請求的服務;(發現)

◆ Web服務中介者向Web服務請求者傳回符合條件的Web服務描述訊息,該描述訊息以WSDL寫成,各種支援Web服務的機器都能閱讀;(發現)

◆ 利用從Web服務中介者傳回的描述資訊產生對應的SOAP訊息,傳送給Web服務提供者,以實現Web服務的呼叫;(綁定)

◆ Web服務提供者按SOAP訊息執行對應的Web服務,並將服務結果傳回給Web服務請求者。 (綁定)




三、呼叫方式:

1. Net下採用GET/POST/SOAP方式動態呼叫WebService的簡易彈性方法(C#)

webservice 的呼叫有3種方式

1) . httpget 

2). httppost
3). httpsoap

soap 的優點是可以傳遞結構化的數據,而前兩種則不行。
btw, soap 最後也是使用HTTP 傳送XM



Webservice實例


一、使用CXF開發Web Service服務端:


一、使用CXF開發Web Service服務端:

Web ServiceService需要2個部分:「Web 」元件步驟:

1、準備開發需要的jar包【apache-cxf-2.5.9下載】

2、開發一個webservice業務接口,方法使用@WebService修飾。

package com.ywx;  
  
import javax.jws.WebService;  
  
@WebService  
public interface HelloWorld {  
    String sayHi(String name);  
}
登入後複製
Webservice工作原理及實例3、寫一個這個方法的實作類,方法也需要使用@WebService修飾,並指定其中的參數中,如下指定了所需實作的介面、並指定服務名稱。

package com.ywx.impl;  
  
import java.util.Date;  
  
import javax.jws.WebService;  
  
import com.ywx.HelloWorld;  
@WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所实现的接口以及服务名称  
public class HellowWorlds implements HelloWorld{  
  
    @Override  
    public String sayHi(String name) {  
        return name+"您好!现在时间是:"+new Date();  
    }  
  
}
登入後複製

4、暴露Web Service的函數,運行函數暴露Web Service:

package com.ywx.lee;  
  
import javax.xml.ws.Endpoint;  
  
import com.ywx.HelloWorld;  
import com.ywx.impl.HellowWorlds;  
  
public class ServiceMain {  
    public static void main(String args[]){  
        HelloWorld hw = new HellowWorlds();  
        //调用Endpoint的publish方法发布Web Service  
        Endpoint.publish("192.168.1.7/vashon", hw);  
        System.out.println("Web Service暴露成功!");  
    }  
}
登入後複製

然後運行瀏覽器,輸入:http://192.168.1.7/vashon?wsdl 查看結果,如果成功產生如下wsdl文件則表示Web Service暴露成功。

二、使用CXF开发Web Service客户端:

步骤:

1、新建一个客户端工程

2、调用CXF提供的wsdl2java工具或使用eclipse/myeclipse的new Web Service生成客户端代码(这里使用第二种方式):

Webservice工作原理及實例

输入wsdl链接:

Webservice工作原理及實例

点击next:

Webservice工作原理及實例

选择生成客户端代码的位置:

Webservice工作原理及實例

点击finish,生成客户端代码如下:

Webservice工作原理及實例

3、在客户端写测试类测试:

package com.ywx.test;  
  
import java.rmi.RemoteException;  
  
import com.ywx.HelloWorldProxy;  
  
  
public class TestService {  
    public static void main(String args[]){  
        HelloWorldProxy h = new HelloWorldProxy();  
        try {  
            String s = h.sayHi("yangwenxue");  
            System.out.println("调webservice:"+s);  
        } catch (RemoteException e) {  
            e.printStackTrace();  
        }  
    }  
}
登入後複製

运行结果(传入一个参数,调用Web Service返回的字符串结果如下):

Webservice工作原理及實例

其调用生成的格式已经有服务端定义好了,看上面贴出来的代码或者下面的截图说明:

Webservice工作原理及實例

Web Service服务端和客户端工程结果截图如下:

Webservice工作原理及實例



更多Webservice工作原理及實例相关文章请关注PHP中文网!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!