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

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

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

2019-11-14 14:34:30
字體:
供稿:網(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)站項目

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

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

定義是 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)用程序啟動時運(yùn)行的代碼        new Service.Host.TickServiceHost().Init();    }        void Application_End(object sender, EventArgs e)     {        //  在應(yīng)用程序關(guān)閉時運(yùn)行的代碼    }            void Application_Error(object sender, EventArgs e)     {         // 在出現(xiàn)未處理的錯誤時運(yùn)行的代碼    }    void session_Start(object sender, EventArgs e)     {        // 在新會話啟動時運(yùn)行的代碼    }    void Session_End(object sender, EventArgs e)     {        // 在會話結(jié)束時運(yùn)行的代碼。         // 注意: 只有在 Web.config 文件中的 sessionstate 模式設(shè)置為        // InPRoc 時,才會引發(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ì)信息,請訪問  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ù)講解

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

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

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

2.搜索servicestack提供的組件

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

創(chuà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ā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青田县| 米泉市| 富源县| 兴隆县| 穆棱市| 察哈| 广西| 司法| 全椒县| 丰顺县| 合川市| 明水县| 东海县| 双峰县| 宜丰县| 额济纳旗| 临汾市| 甘孜| 信宜市| 新晃| 黑山县| 西华县| 汉源县| 乡宁县| 宾阳县| 壶关县| 舞钢市| 皋兰县| 彩票| 康平县| 惠水县| 乌苏市| 绵阳市| 龙口市| 乐都县| 漳州市| 宁乡县| 邵东县| 天门市| 贵港市| 四会市|