国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ServiceStackWebService創(chuàng)建與調(diào)用簡單示列

2019-11-14 14:25:12
字體:
供稿:網(wǎng)友

目錄

ServiceStack 概念

ServiceStack Web Service 創(chuàng)建與調(diào)用簡單示列 

 

上篇文章介紹了ServiceStack是什么,本章進(jìn)入主題,如何快速簡單的搭建ServiceStack服務(wù)環(huán)境和調(diào)用。

ServiceStack服務(wù)搭建

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

第一種方法如下:

1.創(chuàng)建網(wǎng)站項(xiàng)目

2.安裝發(fā)布組件

packages.confing文件為您提供每一個(gè)ServiceStack dll 的版本和運(yùn)行時(shí)信息。

定義是 ServiceStack <Ticket> 請求數(shù)據(jù)契約

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ServiceStack;namespace Model{    /// <summary>    /// 創(chuàng)建票據(jù) 請求實(shí)體    /// </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> 響應(yīng)數(shù)據(jù)契約

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Model{    /// <summary>    /// 創(chuàng)建票據(jù)響應(yīng)數(shù)據(jù)實(shí)體    /// </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>    /// 票據(jù)所屬訂單    /// </summary>    public class OrderResponse    {        public int OrderId { get; set; }    }}

定義ServiceStack 接口方法

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

實(shí)現(xiàn)ServiceStack 接口方法

using Interface;using Model;using System;using System.Collections.Generic;namespace Service{    public class TicketService : ServiceStack.Service, ITicketService    {        /// <summary>        /// 方法請求模式和路由規(guī)則 后面再說        /// 請求票據(jù)列表        /// </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>        /// 刪除指定票據(jù)        /// </summary>        /// <param name="request"></param>        /// <returns></returns>        public bool POST(TicketDeleteRequest deleteid)        {            return true;        }    }}

實(shí)現(xiàn)ServiceStack服務(wù)宿主

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服務(wù)宿主

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

添加ServiceStack網(wǎng)站集成配置

<?xml version="1.0" encoding="utf-8"?><!--  有關(guān)如何配置 asp.net 應(yīng)用程序的詳細(xì)信息,請?jiān)L問  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服務(wù)已經(jīng)完成,運(yùn)行程序可以看到界面如下,其中TicketRequest和TicketDeleteRequest可以理解成實(shí)際的調(diào)用方法,里面定義的參數(shù)可以理解成方法的請求參數(shù),后續(xù)調(diào)用會繼續(xù)講解

整個(gè)項(xiàng)目解決方案的框架如下:

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

1.打開VS,工具擴(kuò)展和更新

2.搜索servicestack提供的組件

3.安裝完成后創(chuàng)建新項(xiàng)目,來自模板

創(chuàng)建完成后的項(xiàng)目框架如下

5.改成我們所需要的

 ServiceStack客戶端調(diào)用

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數(shù)據(jù)格式            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>    /// 創(chuàng)建票據(jù) 請求實(shí)體    /// IReturn<TicketResponse> 指該方法返回的數(shù)據(jù)實(shí)體    /// </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; }    }}

瀏覽器端調(diào)用:

 

請求URL如下:

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

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

 

參考: 

https://servicestack.net/features

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

http://www.survivalescaperooms.com/shanyou/p/3348347.html

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

 

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

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


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 金溪县| 盐源县| 资阳市| 石城县| 汉寿县| 长垣县| 舒城县| 珠海市| 馆陶县| 石城县| 沂南县| 深圳市| 武冈市| 海盐县| 隆回县| 东乡县| 齐河县| 扎鲁特旗| 光山县| 嘉鱼县| 吉林省| 阳原县| 武威市| 桂林市| 兴化市| 湾仔区| 云浮市| 北辰区| 云龙县| 奉化市| 新蔡县| 长顺县| 沂南县| 卢氏县| 兴文县| 会泽县| 莱阳市| 阿鲁科尔沁旗| 当阳市| 江都市| 临潭县|