91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ServiceStack 項目實例 002 REST服務與客戶端模式

發布時間:2020-08-12 14:33:22 來源:網絡 閱讀:1418 作者:九界藍圖 欄目:編程語言

       ServiceStack框架提供三種模式的服務接口實現, REST  、Client 以及和WCF相兼容的SOAP WebService ,這三種模式統稱WebService,目前對于移動平臺和云服務火爆的情形下,最為普及的是REST模式。


WebService常用連接模式:

RESTClientSOAP WebService


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

XMLJSONJSVCSVSOAP

      

       在前文中提到啟動服務(SS項目),這種服務是一種×××面的,對外僅提供數據服務,通過一套自定義的API訪問,在大型網站廣為使用,比如微信、微博、淘寶及人人網、各種網盤開發API等。

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

       

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


通過REST方式訪問服務:


       

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


        其中service.后邊的Post為HTTP指令,接下來要詳細說明,NewsAll()為入口類,NewsResponse為出口類,使用時結構為:

HTTP 指令出口類("路由"入口類{ 傳入參數 }


通過Client方式訪問服務:


         

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

        Client模式的標志是使用Send函數 ,使用結構為:  

Send出口類入口類{ 傳入參數 }

       注意客戶端 模式是不使用路由的,它的執行方式很類似軟件中使用Socket連接模式,使用比HTTP協議更底層的高速數據通道來傳輸數據。


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


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

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


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

     POST用于獲取、提交、文件上傳等操作,傳遞的參數或數據通常使用表單提交,可以為文本也可以為二進制數據,二進制方式可以用于文件、圖片上傳,并且可自定義文件類型,POST提交的返回數據通常是狀態信息,比如操作是否成功,操作得到的ID、記錄條數等,而且通常會根據返回的狀態信息執行跳轉或處理異常等操作。在使用POST對REST模式的服務中,常用的是將其數據使用Insert語句保存到數據庫。

    PUT用于更新數據操作,通常在REST模式下,將其數據使用Update語句更新到數據庫。

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

    

    PATCH用于追加模式更新數據。

    TRACE回顯提交的數據,可以用于調試以及查看服務端數據的變更。



    附 : ServiceStack 內置的 客戶端實現,從中也可以看出無論REST還是客戶端都是使用同樣的類庫:  未翻譯

    

  • 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)



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

都兰县| 内乡县| 宁南县| 磐安县| 利辛县| 英山县| 班戈县| 铜山县| 新邵县| 尖扎县| 宜阳县| 葵青区| 东乌珠穆沁旗| 云南省| 大厂| 鞍山市| 宣汉县| 西贡区| 临洮县| 定西市| 神木县| 汉阴县| 湄潭县| 林芝县| 湘潭市| 镇江市| 军事| 苗栗县| 峨眉山市| 芒康县| 禹州市| 固安县| 台安县| 瓮安县| 高邑县| 丰顺县| 乌苏市| 浮梁县| 长沙市| 丘北县| 达州市|