c#中使用ServiceStack创建服务简单示例


http://www.cnblogs.com/yangecnu/p/Introduce-ServiceStack.html(转)
http://www.cnblogs.com/woxpp/p/5012947.html(转)


--------------------------------------例子--------------------------------
//在NuGet安装 ServiceStack包
//packages.confing文件有每一个ServiceStack dll 的版本和运行时信息。
//ServiceStack有三种请求方法,Get、POST、Any(post/get)
//它以请求对象(DTO)的名称来区分调用的方法

namespace ServiceStack1
{
    /// <summary>
    /// 创建DTO响应实体
    /// </summary>
    public class TicketResponse
    {
        /// <summary>
        /// id
        /// </summary>
        public int TicketId { get; set; }
        public int TableNumber { get; set; }
        public int ServerId { get; set; }
        public DateTime Timestamp { get; set; }
        public List<OrderResponse> Orders { get; set; }
    }

    public class OrderResponse
    {
        public int OrderId { get; set; }
    }
}



namespace ServiceStack1
{
    /// <summary>
    /// 实现接口方法
    /// </summary>
    public class TicketService:ServiceStack.Service
    {
        /// <summary>
        /// 返回集合
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public List<TicketResponse> Any(TicketRequest request)
        {
            List<TicketResponse> result = new List<TicketResponse>();
            result.Add(new TicketResponse()

            {
                ServerId = 1,
                TableNumber = 1,
                TicketId = 1,
                Timestamp = DateTime.Now
            });
            result.Add(new TicketResponse()
            {
                ServerId = 2,
                TableNumber = 2,
                TicketId = 2,
                Timestamp = DateTime.Now
            });
            return result;
        }

        public string POST(TicketDeleteRequest deleteid)
        {
            return "true";
        }
    }
}



namespace ServiceStack1
{
    /// <summary>
    /// 创建DTO请求实体
    /// </summary>
    public class TicketRequest:ServiceStack.IReturn<TicketResponse>
    {
        /// <summary>
        /// id
        /// </summary>
        public int TicketId { get; set; }
        public int TableNumber { get; set; }
        public int ServerId { get; set; }
    }

    public class TicketDeleteRequest
    {
        public int TicketId { get; set; }
    }
}




namespace ServiceStack1
{
    /// <summary>
    /// 实现宿主服务
    /// </summary>
    public class TicketHost : ServiceStack.AppHostBase
    {
        public TicketHost() : base("Service1", typeof(TicketService).Assembly)
        {
        }

        public override void Configure(Container container)
        {
           // throw new NotImplementedException();
        }
    }
}



namespace ServiceStack1
{
    public class Global : System.Web.HttpApplication
    {

        public void Application_Start(object sender, EventArgs e)
        {
            //启动ServiceStack服务宿主
            new TicketHost().Init();
        }

    }
}




 <?xml version="1.0" encoding="utf-8"?>
<!--
  有关如何配置 ASP.NET 应用程序的详细信息,请访问
  https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
  </system.web>


  <!--添加ServiceStack网站集成配置-->
  <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>



namespace ServiceStack1
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //SS中,客户端连接到服务端的方式主要有两种,通过REST方式或者Client方式,初始化客户端是相同的


            //在浏览器上请求TicketRequest方法的方式
            //http://localhost:11688//json/reply/TicketRequest

            //初始化客户端,采用json数据格式
            ServiceStack.JsonServiceClient service = new ServiceStack.JsonServiceClient("http://localhost:11688/");


            //通过REST方式访问服务
            List<TicketResponse> rest = service.Post<List<TicketResponse>>(new TicketRequest() { TicketId = 1, TableNumber = 2 });


            bool responseDelete = service.Post<bool>(new TicketDeleteRequest() { TicketId = 1 });


            //通过Client方式访问服务
            //TicketResponse client =service.Send<TicketResponse>(new TicketRequest()
            //{
            //    TicketId = 2,
            //    TableNumber=2
            //});
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值