ServiceStack項(xiàng)目實(shí)例002REST服務(wù)與客戶端模式-創(chuàng)新互聯(lián)

     ServiceStack框架提供三種模式的服務(wù)接口實(shí)現(xiàn), REST  、Client 以及和WCF相兼容的SOAP WebService ,這三種模式統(tǒng)稱WebService,目前對(duì)于移動(dòng)平臺(tái)和云服務(wù)火爆的情形下,最為普及的是REST模式。

成都創(chuàng)新互聯(lián)公司的客戶來(lái)自各行各業(yè),為了共同目標(biāo),我們?cè)诠ぷ魃厦芮信浜希瑥膭?chuàng)業(yè)型小企業(yè)到企事業(yè)單位,感謝他們對(duì)我們的要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。專業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、網(wǎng)站制作、電商網(wǎng)站開(kāi)發(fā)、微信營(yíng)銷、系統(tǒng)平臺(tái)開(kāi)發(fā)。

WebService常用連接模式:

RESTClientSOAP WebService

     在不同模式下,可以使用不同的數(shù)據(jù)(流)格式,最為常用的是XML 、JSON , 主要使用在REST模式下,此外還支持JSV, CSV 以及SOAP格式的數(shù)據(jù)。

XMLJSONJSVCSVSOAP

 

     在前文中提到啟動(dòng)服務(wù)(SS項(xiàng)目),這種服務(wù)是一種×××面的,對(duì)外僅提供數(shù)據(jù)服務(wù),通過(guò)一套自定義的API訪問(wèn),在大型網(wǎng)站廣為使用,比如微信、微博、淘寶及人人網(wǎng)、各種網(wǎng)盤開(kāi)發(fā)API等。

     SS中,客戶端連接到服務(wù)端的方式主要有兩種,通過(guò)REST方式或者Client方式,初始化客戶端是相同的 :

   

var service = new JsvServiceClient("http://localhost:2790/");

通過(guò)REST方式訪問(wèn)服務(wù):

   

var storyResponses = service.Post<List<NewsResponse>>("newslist",
                new NewsAll() { cid=0 });

      其中service.后邊的Post為HTTP指令,接下來(lái)要詳細(xì)說(shuō)明,NewsAll()為入口類,NewsResponse為出口類,使用時(shí)結(jié)構(gòu)為:

HTTP 指令出口類("路由"入口類{ 傳入?yún)?shù) }

通過(guò)Client方式訪問(wèn)服務(wù):


         

service.Send<SubmissionResponse>(new Submission()
                {
                    Body = news.Text,
                    Headline = news.Headline,
                    SubmissionTime = news.Date
                });

        Client模式的標(biāo)志是使用Send函數(shù) ,使用結(jié)構(gòu)為:

Send出口類入口類{ 傳入?yún)?shù) }

       注意客戶端 模式是不使用路由的,它的執(zhí)行方式很類似軟件中使用Socket連接模式,使用比HTTP協(xié)議更底層的高速數(shù)據(jù)通道來(lái)傳輸數(shù)據(jù)。

  一般來(lái)說(shuō)客戶端模式是比REST模式效率要高,但在服務(wù)端和客戶端同時(shí)都使用了SS的情況下,框架會(huì)在內(nèi)部自動(dòng)將其都轉(zhuǎn)換為客戶端模式(可以支持二進(jìn)制傳輸、文件上傳下載等),所以使用REST模式和 使用客戶端模式的差異并不大,具體使用哪種方式可以根據(jù)自己的習(xí)慣和喜好使用。

  下面說(shuō)一下HTTP指令, 又稱HTTP verb(HTTP動(dòng)詞),我們通常訪問(wèn)網(wǎng)站數(shù)據(jù)的方式有GET和POST,用于指定獲取數(shù)據(jù)和交流的方式,它是被附加在HTTP的request請(qǐng)求上的,包含于HTTP頭中(可以使用HTTP傳輸工具查看),使用了REST模式后,可以使用全套的HTTP指令,常用的有除了GET和POST,還有PUT、DELETE和PATCH、TRACE。

   HTTP指令在HTTP頭中通常所有字母全部大寫。

   GET用于獲取數(shù)據(jù)操作,傳遞的參數(shù)通常是附加在URL上,數(shù)據(jù)大小限制一般為1-16k,可以返回單條或列表數(shù)據(jù);

   POST用于獲取、提交、文件上傳等操作,傳遞的參數(shù)或數(shù)據(jù)通常使用表單提交,可以為文本也可以為二進(jìn)制數(shù)據(jù),二進(jìn)制方式可以用于文件、圖片上傳,并且可自定義文件類型,POST提交的返回?cái)?shù)據(jù)通常是狀態(tài)信息,比如操作是否成功,操作得到的ID、記錄條數(shù)等,而且通常會(huì)根據(jù)返回的狀態(tài)信息執(zhí)行跳轉(zhuǎn)或處理異常等操作。在使用POST對(duì)REST模式的服務(wù)中,常用的是將其數(shù)據(jù)使用Insert語(yǔ)句保存到數(shù)據(jù)庫(kù)。

  PUT用于更新數(shù)據(jù)操作,通常在REST模式下,將其數(shù)據(jù)使用Update語(yǔ)句更新到數(shù)據(jù)庫(kù)。

  DELETE用于刪除操作,在REST模式下,可以使用兩種方式執(zhí)行刪除,一個(gè)方式是傳遞一個(gè)對(duì)象到服務(wù),比如一個(gè)order訂單對(duì)象(里邊實(shí)際有效的僅僅是id字段),另一種方式傳遞一個(gè)id或一組id,執(zhí)行數(shù)據(jù)庫(kù)的刪除操作。

  PATCH用于追加模式更新數(shù)據(jù)。

  TRACE回顯提交的數(shù)據(jù),可以用于調(diào)試以及查看服務(wù)端數(shù)據(jù)的變更。

  附 : ServiceStack 內(nèi)置的 客戶端實(shí)現(xiàn),從中也可以看出無(wú)論REST還是客戶端都是使用同樣的類庫(kù):  未翻譯

  • implements both IRestClient and IServiceClient:

    • JsonServiceClient (uses default endpoint with JSON) - recommended

    • JsvServiceClient (uses default endpoint with JSV)

    • XmlServiceClient (uses default endpoint with XML)

    • MsgPackServiceClient (uses default endpoint with Message-Pack)

    • ProtoBufServiceClient (uses default endpoint with Protocol Buffers)

  • implements IServiceClient only:

    • Soap11ServiceClient (uses SOAP 11 endpoint)

    • Soap12ServiceClient (uses SOAP 12 endpoint)

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。

文章標(biāo)題:ServiceStack項(xiàng)目實(shí)例002REST服務(wù)與客戶端模式-創(chuàng)新互聯(lián)
瀏覽路徑:http://bm7419.com/article44/dpdoee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站云服務(wù)器、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站