真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

基于REST架構的WebService設計-創(chuàng)新互聯(lián)

來自: http://www.williamlong.info/archives/1728.html基于REST架構的WebServ
ice設計

先前我曾經(jīng)介紹過利用Apache Axis實現(xiàn)基于SOAP的Web Service實現(xiàn)技術和相關代碼,總的來說,SOAP的Web Service解決方案雖然較為成熟,且安全性較好,但是使用門檻較高,在大并發(fā)情況下會有性能問題,在互聯(lián)網(wǎng)上使用不太普及,因此并不太適合Web 2.0網(wǎng)站服務使用,目前大量的Web 2.0網(wǎng)站使用另外一種解決方案——REST。

我們一直強調(diào)成都做網(wǎng)站、成都網(wǎng)站建設對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)絡公司不一定是大公司,創(chuàng)新互聯(lián)作為專業(yè)的網(wǎng)絡公司選擇我們就是放心。

REST的架構設計

REST(Representational State Transfer)是一種輕量級的Web Service架構風格,其實現(xiàn)和操作明顯比SOAP和XML-RPC更為簡潔,可以完全通過HTTP協(xié)議實現(xiàn),還可以利用緩存Cache來提高響應速度,性能、效率和易用性上都優(yōu)于SOAP協(xié)議。

REST架構遵循了CRUD原則,CRUD原則對于資源只需要四種行為:Create(創(chuàng)建)、Read(讀?。?、Update(更新)和Delete(刪除)就可以完成對其操作和處理。這四個操作是一種原子操作,即一種無法再分的操作,通過它們可以構造復雜的操作過程,正如數(shù)學上四則運算是數(shù)字的最基本的運算一樣。

REST架構讓人們真正理解我們的網(wǎng)絡協(xié)議HTTP本來面貌,對資源的操作包括獲取、創(chuàng)建、修改和刪除資源的操作正好對應HTTP協(xié)議提供的GET、POST、PUT和DELETE方法,因此REST把HTTP對一個URL資源的操作限制在GET、POST、PUT和DELETE這四個之內(nèi)。這種針對網(wǎng)絡應用的設計和開發(fā)方式,可以降低開發(fā)的復雜性,提高系統(tǒng)的可伸縮性。

REST的設計準則

REST架構是針對Web應用而設計的,其目的是為了降低開發(fā)的復雜性,提高系統(tǒng)的可伸縮性。REST提出了如下設計準則:

網(wǎng)絡上的所有事物都被抽象為資源(resource);

每個資源對應一個唯一的資源標識符(resource identifier);

通過通用的連接器接口(generic connector interface)對資源進行操作;

對資源的各種操作不會改變資源標識符;

所有的操作都是無狀態(tài)的(stateless)。

使用REST架構

對于開發(fā)人員來說,關心的是如何使用REST架構,這里我們來簡單談談這個問題。REST不僅僅是一種嶄新的架構,它帶來的更是一種全新的Web開發(fā)過程中的思維方式:通過URL來設計系統(tǒng)結構。REST是一套簡單的設計原則、一種架構風格(或模式),不是一種具體的標準或架構。REST有很多成功的使用案例,著名的Delicious和Flickr都提供基于REST風格的API使用,客戶端調(diào)用也極其方便,下面是我用ASP寫的一個很簡單的REST舉例,從中可以看出REST是多么的簡單易用。

客戶端代碼:

Private Function httpGet(url, method, data)
    Dim xmlhttp
    Set xmlhttp= Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url+ "?" + data, False
    xmlhttp.setRequestHeader"Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader"Content-Length", Len(data)
    xmlhttp.send (Null)
    If (xmlhttp.Status= 200) Then httpGet = xmlhttp.responseText
    Set xmlhttp= Nothing
End Function

Private Function httpPost(url, method, data)
    Dim xmlhttp
    Set xmlhttp= Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url, False
    xmlhttp.setRequestHeader"Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader"Content-Length", Len(data)
    xmlhttp.send (data)
    If (xmlhttp.Status= 200) Then httpPost = xmlhttp.responseText
    Set xmlhttp= Nothing
End Function

Private Function httpPut(url, method, data)
    Dim xmlhttp
    Set xmlhttp= Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url, False
    xmlhttp.setRequestHeader"Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader"Content-Length", Len(data)
    xmlhttp.send (data)
    If xmlhttp.Status>= 400 And xmlhttp.Status <= 599 Then
        response.write" Error Occurred :" & xmlhttp.Status & " -" & xmlhttp.statusText
    Else
        response.write xmlhttp.responseText
    End If
    If (xmlhttp.Status= 200) Then httpPut = xmlhttp.responseText
    Set xmlhttp= Nothing
End Function

Private Function httpDelete(url, method, data)
    Dim xmlhttp
    Set xmlhttp= Server.CreateObject("MSXML2.ServerXMLHTTP")
    xmlhttp.open method, url+ "?" + data, False
    xmlhttp.setRequestHeader"Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
    xmlhttp.setRequestHeader"Content-Length", Len(data)
    xmlhttp.send (Null)
    If xmlhttp.Status>= 400 And xmlhttp.Status <= 599 Then
        response.write" Error Occurred :" & xmlhttp.Status & " -" & xmlhttp.statusText
    Else
        response.write xmlhttp.responseText
    End If
    If (xmlhttp.Status= 200) Then httpDelete = xmlhttp.responseText
    Set xmlhttp= Nothing
End Function

response.write httpPost("http://localhost/rest/service.asp", "POST", "do=POST")
response.write httpGet("http://localhost/rest/service.asp", "GET", "do=GET")
response.write httpPut("http://localhost/rest/service.asp", "PUT", "do=PUT")
response.write httpDelete("http://localhost/rest/service.asp", "DELETE", "do=DELETE")

服務端代碼:

Response.Write Request.ServerVariables("REQUEST_METHOD")
If (Request.ServerVariables("REQUEST_METHOD")="GET") Then
 Response.Write"DO GET" + Request("do")
ElseIf (Request.ServerVariables("REQUEST_METHOD")="POST") Then
 Response.Write"DO POST" + Request("do")
ElseIf (Request.ServerVariables("REQUEST_METHOD")="PUT") Then
 Response.Write"DO PUT" + Request("do")
ElseIf (Request.ServerVariables("REQUEST_METHOD")="DELETE") Then
 Response.Write"DO DELETE" + Request("do")
Endif

需要注意的是,IIS服務器默認是不支持ASP文件的PUT和DELETE操作,默認會返回“403 - Forbidden”錯誤,因此需要修改IIS的設置,修改方法是:管理根據(jù)-IIS信息服務器-網(wǎng)站-屬性-主目錄-應用程序配置-配置-映射,選擇ASP - 編輯 - 修改為全部動作。

關于更多關于REST方面的知識,建議閱讀《RESTful Web Services》這本書。


本文標題:基于REST架構的WebService設計-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/djisog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部