亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ServiceStackWebService創建與調用簡單示列

2019-11-14 14:25:12
字體:
來源:轉載
供稿:網友

目錄

ServiceStack 概念

ServiceStack Web Service 創建與調用簡單示列 

 

上篇文章介紹了ServiceStack是什么,本章進入主題,如何快速簡單的搭建ServiceStack服務環境和調用。

ServiceStack服務搭建

服務的搭建有兩種方法,我會一一介紹。

第一種方法如下:

1.創建網站項目

2.安裝發布組件

packages.confing文件為您提供每一個ServiceStack dll 的版本和運行時信息。

定義是 ServiceStack <Ticket> 請求數據契約

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ServiceStack;namespace Model{    /// <summary>    /// 創建票據 請求實體    /// </summary>    public class TicketRequest : IReturn<TicketResponse>    {        public int TicketId { get; set; }        public int TableNumber { get; set; }        public int ServerId { get; set; }    }    public class TicketDeleteRequest    {        public int TicketId { get; set; }    }}

定義ServiceStack <Ticket> 響應數據契約

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Model{    /// <summary>    /// 創建票據響應數據實體    /// </summary>    public class TicketResponse    {         public int TicketId { get; set; }        public int TableNumber { get; set; }        public int ServerId { get; set; }        public List<OrderResponse> Orders { get; set; }        public DateTime Timestamp { get; set; }    }    /// <summary>    /// 票據所屬訂單    /// </summary>    public class OrderResponse    {        public int OrderId { get; set; }    }}

定義ServiceStack 接口方法

using Model;using System.Collections.Generic;namespace Interface{    public interface ITicketService    {        /// <summary>        /// 方法請求模式和路由規則 后面再說        /// 請求票據列表        /// </summary>        /// <param name="request"></param>        /// <returns></returns>        List<TicketResponse> Any(TicketRequest request);        /// <summary>        /// 刪除指定票據        /// </summary>        /// <param name="request"></param>        /// <returns></returns>        bool POST(TicketDeleteRequest deleteid);    }}

實現ServiceStack 接口方法

using Interface;using Model;using System;using System.Collections.Generic;namespace Service{    public class TicketService : ServiceStack.Service, ITicketService    {        /// <summary>        /// 方法請求模式和路由規則 后面再說        /// 請求票據列表        /// </summary>        /// <param name="request"></param>        /// <returns></returns>        public List<TicketResponse> Any(TicketRequest request)        {            List<TicketResponse> result = new List<TicketResponse>();            List<OrderResponse> orderlist = new List<OrderResponse>();            orderlist.Add(new OrderResponse() { OrderId = 1 });            result.Add(new TicketResponse()            {                Orders = orderlist,                ServerId = 1,                TableNumber = 1,                TicketId = 1,                Timestamp = DateTime.Now            });            result.Add(new TicketResponse()            {                Orders = orderlist,                ServerId = 2,                TableNumber = 2,                TicketId = 2,                Timestamp = DateTime.Now            });            return result;        }        /// <summary>        /// 刪除指定票據        /// </summary>        /// <param name="request"></param>        /// <returns></returns>        public bool POST(TicketDeleteRequest deleteid)        {            return true;        }    }}

實現ServiceStack服務宿主

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Service.Host{    public class TickServiceHost : ServiceStack.AppHostBase    {        // Register your Web service with ServiceStack.        public TickServiceHost()            : base("Ticket Service", typeof(Service.TicketService).Assembly) { }        public override void Configure(Funq.Container container)        {            // Register any dependencies your services use here.        }    }}

啟動ServiceStack服務宿主

<%@ application Language="C#" %><script runat="server">    void Application_Start(object sender, EventArgs e)     {        // 在應用程序啟動時運行的代碼        new Service.Host.TickServiceHost().Init();    }        void Application_End(object sender, EventArgs e)     {        //  在應用程序關閉時運行的代碼    }            void Application_Error(object sender, EventArgs e)     {         // 在出現未處理的錯誤時運行的代碼    }    void session_Start(object sender, EventArgs e)     {        // 在新會話啟動時運行的代碼    }    void Session_End(object sender, EventArgs e)     {        // 在會話結束時運行的代碼。         // 注意: 只有在 Web.config 文件中的 sessionstate 模式設置為        // InPRoc 時,才會引發 Session_End 事件。如果會話模式設置為 StateServer        // 或 SQLServer,則不引發該事件。    }       </script>

添加ServiceStack網站集成配置

<?xml version="1.0" encoding="utf-8"?><!--  有關如何配置 asp.net 應用程序的詳細信息,請訪問  http://go.microsoft.com/fwlink/?LinkId=169433  --><configuration>  <system.web>    <compilation debug="true" targetFramework="4.0" />  </system.web>  <!--Required for IIS 7 (and above) -->  <system.webServer>    <validation validateIntegratedModeConfiguration="false" />    <handlers>      <add path="*.aspx" name="DefaultHttpApplication" type="System.Web.UI.PageHandlerFactory" verb="*" />      <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true"/>    </handlers>  </system.webServer></configuration>

至此ServiceStack服務已經完成,運行程序可以看到界面如下,其中TicketRequest和TicketDeleteRequest可以理解成實際的調用方法,里面定義的參數可以理解成方法的請求參數,后續調用會繼續講解

整個項目解決方案的框架如下:

第二種創建方法比較簡單,快速,利用ServiceStack官方提供的模板直接生成,具體操作方法如下:

1.打開VS,工具擴展和更新

2.搜索servicestack提供的組件

3.安裝完成后創建新項目,來自模板

創建完成后的項目框架如下

5.改成我們所需要的

 ServiceStack客戶端調用

using ConsoleApplication1.model;using ServiceStack;using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1{    class Program    {        static void Main(string[] args)        {            //客戶端采用json數據格式            JsonServiceClient client1 = new JsonServiceClient("http://localhost:32617/");            Console.WriteLine("http://localhost:32617/");            //TicketRequest 為請求的方法            List<TicketResponse> responseSearch = client1.Get<List<TicketResponse>>(new TicketRequest() { TicketId = 1 });            Console.WriteLine(responseSearch.Count);            bool responseDelete = client1.Post<bool>(new TicketDeleteRequest() { TicketId = 1 });            Console.WriteLine(responseDelete);            Console.WriteLine("http://localhost:36107/");            List<TicketResponse> responseSearch1 = client1.Get<List<TicketResponse>>(new TicketRequest() { TicketId = 1 });            Console.WriteLine(responseSearch1.Count);            bool responseDelete1 = client1.Post<bool>(new TicketDeleteRequest() { TicketId = 1 });            Console.WriteLine(responseDelete1);                           Console.ReadLine();        }    }}

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1.model{    /// <summary>    /// 創建票據 請求實體    /// IReturn<TicketResponse> 指該方法返回的數據實體    /// </summary>    public class TicketRequest    {        public int TicketId { get; set; }        public int TableNumber { get; set; }        public int ServerId { get; set; }    }    public class TicketDeleteRequest    {        public int TicketId { get; set; }    }}

瀏覽器端調用:

 

請求URL如下:

瀏覽器輸入http://localhost:36107/json/reply/TicketRequest?TicketId=1

瀏覽器默認請求為GET,如果方法定義POST請求類型,可以采用第三方模擬Rest請求工具

 

參考: 

https://servicestack.net/features

https://msdn.microsoft.com/zh-cn/magazine/dn342871.aspx

http://www.49028c.com/shanyou/p/3348347.html

http://www.49028c.com/yangecnu/p/Introduce-ServiceStack.html

 

作者:釋迦苦僧 出處:http://www.49028c.com/woxpp/p/5012947.html 本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接。 

本文為新手試寫,如果有問題,歡迎博友指正,在下不甚感激,后續還會繼續更新ServiceStack其他相關文章。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲成人中文字幕| 亚洲精品成人久久| 成人免费观看49www在线观看| 国产美女精品视频| 亚洲精品有码在线| 九九精品视频在线观看| 欧洲成人在线视频| 国产婷婷成人久久av免费高清| 国产欧美久久一区二区| 国产精品福利观看| 亚洲精品国产精品久久清纯直播| 51视频国产精品一区二区| 久久久精品国产亚洲| 色综合视频一区中文字幕| 国产欧美亚洲精品| 欧美精品免费看| 另类视频在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品天天狠天天看| 91精品国产成人| 亚洲欧洲日产国码av系列天堂| 日韩在线观看视频免费| 91在线精品视频| 欧美精品www在线观看| 成人免费观看网址| 日韩中文在线中文网三级| 欧美日韩国产综合视频在线观看中文| 538国产精品一区二区免费视频| 国产精品av电影| 8090成年在线看片午夜| 国产啪精品视频网站| 2021久久精品国产99国产精品| 欧美中文字幕视频| 欧洲美女7788成人免费视频| 国产精品极品美女粉嫩高清在线| 久久久久久网站| 欧美日韩精品在线| 国产精品最新在线观看| 国产亚洲精品va在线观看| 在线观看日韩www视频免费| 亚洲一区二区三区乱码aⅴ| 日韩av一卡二卡| 亚洲最大成人网色| 伊人伊人伊人久久| 亚洲午夜av电影| 日韩经典一区二区三区| 日韩精品视频在线观看免费| 性色av一区二区三区红粉影视| 日韩电影中文字幕在线观看| 午夜免费日韩视频| 91国产高清在线| 69av成年福利视频| 美女福利精品视频| 国产一区二区三区在线视频| 5566成人精品视频免费| 国产一区二区三区日韩欧美| 久久精品小视频| 欧美一级黑人aaaaaaa做受| 亚洲精品一区二区久| 久久久久这里只有精品| 国产精品极品美女粉嫩高清在线| 成人亚洲综合色就1024| 国产精品中文字幕在线| 亚洲美女自拍视频| 午夜精品久久久99热福利| 国产精品久久久久久久久| 欧美成人免费全部| 国产视频福利一区| 欧美人与性动交a欧美精品| 欧美性猛xxx| 国产精品普通话| 琪琪第一精品导航| 久久99久久99精品免观看粉嫩| 国产精品视频1区| 日韩极品精品视频免费观看| 日本精品va在线观看| 成人免费网视频| 久久韩国免费视频| 亚洲精品乱码久久久久久金桔影视| 亚洲一区二区精品| 大荫蒂欧美视频另类xxxx| 57pao国产精品一区| 欧洲午夜精品久久久| 欧美精品电影免费在线观看| 欧美在线视频免费播放| 2019国产精品自在线拍国产不卡| 国产亚洲精品一区二区| 欧洲美女免费图片一区| 狠狠久久五月精品中文字幕| 中文字幕av日韩| 久久亚洲国产精品成人av秋霞| 欧美精品在线免费| 高跟丝袜一区二区三区| 国模gogo一区二区大胆私拍| 亚洲毛片一区二区| 日韩视频免费看| 久久久久久伊人| 亚洲国产古装精品网站| 永久免费看mv网站入口亚洲| 亚洲影影院av| 中文字幕日本欧美| 日韩精品免费电影| 日韩精品久久久久久久玫瑰园| 一区二区在线视频播放| 国产精品自产拍高潮在线观看| 日韩国产精品一区| …久久精品99久久香蕉国产| 国产精品激情自拍| 久久综合网hezyo| www日韩中文字幕在线看| 久久久精品美女| 精品国内产的精品视频在线观看| 久久精品这里热有精品| 国产精品欧美在线| 在线播放日韩av| 日韩美女写真福利在线观看| 欧美第一黄色网| 国产免费一区二区三区在线能观看| 欧美激情影音先锋| 久久97精品久久久久久久不卡| 久久免费在线观看| 国产欧美精品va在线观看| 久久久成人精品| 91久久精品国产91久久| 97成人精品视频在线观看| 国产精品久久久| 亚洲r级在线观看| 欧美疯狂性受xxxxx另类| 91精品国产精品| 国产免费观看久久黄| 欧美福利视频在线观看| 国产91精品久| 美女性感视频久久久| www.欧美三级电影.com| 亚洲精品一区久久久久久| 久久精品一区中文字幕| 久久亚洲精品国产亚洲老地址| 97香蕉超级碰碰久久免费的优势| 2019日本中文字幕| 18一19gay欧美视频网站| 中文国产成人精品| 国产伦精品免费视频| 亚洲精品自拍第一页| 日韩欧美国产成人| 国产99久久精品一区二区 夜夜躁日日躁| 精品国产自在精品国产浪潮| 亚洲欧美日韩第一区| 欧美精品激情视频| 俺去亚洲欧洲欧美日韩| 韩国国内大量揄拍精品视频| 国产精品久在线观看| 国产一区二区在线免费视频| 亚洲成av人乱码色午夜| 欧美性色19p| 黄色成人在线免费| 欧美午夜视频在线观看| 欧美性xxxxxxxxx| 亚洲免费人成在线视频观看| 亚洲欧洲日产国码av系列天堂| 久久精品成人动漫| 日韩国产精品视频| 欧美日本国产在线| 欧美激情在线播放| 久久影视电视剧免费网站|