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

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

ServiceStackWebService創建與調用簡單示列

2019-11-14 14:34:30
字體:
來源:轉載
供稿:網友

目錄

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
国产在线一区二区三区| 亚洲欧美第一页| 精品国产成人在线| 美女国内精品自产拍在线播放| 国产精品一区二区性色av| 夜夜躁日日躁狠狠久久88av| 亚洲人成电影网站| 亚洲区bt下载| 夜色77av精品影院| 日韩中文在线观看| 久久人人97超碰精品888| 欧美精品999| 亚洲系列中文字幕| 影音先锋欧美在线资源| 欧美在线xxx| 国产精品户外野外| 日韩中文在线不卡| 中文字幕日韩视频| 国产精品99久久99久久久二8| 日韩福利伦理影院免费| 亚洲黄色有码视频| 国产一区二区三区久久精品| 国产精品扒开腿做| 亚洲国产天堂久久国产91| 性色av一区二区三区免费| zzjj国产精品一区二区| 国产一区二区三区在线观看视频| 国产精品极品美女粉嫩高清在线| 91av在线不卡| 奇门遁甲1982国语版免费观看高清| 久久网福利资源网站| 91产国在线观看动作片喷水| 亚洲a成v人在线观看| 欧美老女人xx| 韩剧1988免费观看全集| 精品久久久一区二区| 欧美在线播放视频| 亚洲国产精品久久久久秋霞蜜臀| 欧洲s码亚洲m码精品一区| 久久久久女教师免费一区| 亚洲国产成人精品女人久久久| 日韩av在线一区二区| 亚洲bt天天射| 久久久久久美女| 色综合老司机第九色激情| 国产一区二区三区网站| 69视频在线播放| 狠狠躁天天躁日日躁欧美| 色爱精品视频一区| 伊人成人开心激情综合网| 久久精品国产96久久久香蕉| 国产精品观看在线亚洲人成网| 国产精品777| 成人免费淫片视频软件| 中文日韩在线视频| 精品国产自在精品国产浪潮| 久久久久国产精品免费| 精品成人在线视频| 亚洲偷熟乱区亚洲香蕉av| 欧美极品xxxx| 91精品国产自产在线| 97涩涩爰在线观看亚洲| 亚洲日本欧美中文幕| 中文字幕国产精品久久| 久久99亚洲热视| 久久网福利资源网站| 欧美另类第一页| 国产精品黄色影片导航在线观看| 欧美综合激情网| 在线观看国产精品淫| 国产视频丨精品|在线观看| 久久久www成人免费精品张筱雨| 在线成人一区二区| 亚洲高清久久久久久| 国产97在线|亚洲| 国产成人亚洲综合青青| 欧美成人免费网| 日本国产一区二区三区| 国产精品久久久av久久久| 午夜精品美女自拍福到在线| 亚洲韩国日本中文字幕| 国内久久久精品| 欧美精品videofree1080p| 欧美日韩一区二区精品| 国产主播精品在线| 国产视频精品xxxx| 欧美日韩亚洲一区二| 欧美精品久久久久久久久| 欧美激情va永久在线播放| 久久精品青青大伊人av| 欧美成aaa人片在线观看蜜臀| 久久男人av资源网站| 日韩av中文字幕在线| 一区二区欧美日韩视频| 欧美激情videoshd| 日韩av在线网站| 狠狠综合久久av一区二区小说| 亚洲老头同性xxxxx| 日韩av在线直播| 日本人成精品视频在线| 91精品国产色综合久久不卡98| 色www亚洲国产张柏芝| 久久久久成人精品| 亚洲va码欧洲m码| 欧美日韩性视频| 亚洲人成伊人成综合网久久久| 91av福利视频| 中文一区二区视频| 色在人av网站天堂精品| 欧美激情综合色综合啪啪五月| 国产999精品视频| 久久国产精品免费视频| 久久精品99久久久久久久久| 国产欧美精品一区二区三区介绍| 欧美在线一区二区视频| www.日韩欧美| 国产主播喷水一区二区| 国产剧情日韩欧美| 色婷婷综合成人| 亚洲成人黄色网址| 午夜精品久久久久久久男人的天堂| 7m精品福利视频导航| 日本免费久久高清视频| 久久久亚洲欧洲日产国码aⅴ| 欧美成人中文字幕| 亚洲xxxx3d| 亚洲欧洲成视频免费观看| 97精品视频在线| 国产精品igao视频| 国产欧美一区二区白浆黑人| 日韩欧美有码在线| 日本不卡高字幕在线2019| 91色中文字幕| 国产不卡av在线免费观看| 亚洲成人1234| 亚洲福利视频网| 在线午夜精品自拍| 日韩中文字幕在线播放| 国产自产女人91一区在线观看| 亚洲最大成人在线| 亚洲男人天堂2023| 国产精品久久久久久久久久三级| 精品久久久久久中文字幕一区奶水| 91超碰中文字幕久久精品| 亚洲美女精品久久| 热门国产精品亚洲第一区在线| 亚洲自拍欧美色图| 国产精品免费久久久久久| 成人激情综合网| 成人免费高清完整版在线观看| 亚洲午夜女主播在线直播| 中文字幕精品网| 国产欧美一区二区三区久久人妖| 国产精品成人一区二区三区吃奶| 亚洲欧美在线播放| 亚洲男人av在线| 97在线日本国产| 在线亚洲欧美视频| 97在线视频国产| 热99在线视频| 欧美性xxxx极品hd欧美风情| 国产91在线视频| 日韩av在线精品| 在线一区二区日韩|