用 C# 实现一个简单的 Rest Service 供外部调用

用 C#  实现一个简单的 Restful Service 供外部调用,大体总结为4点:

  • The service contract (the methods it offers).
  • How do you know which one to access from the URL given (URL Routing).
  • The implementation of the service.
  • How you will host the service.

 

详细的基本步骤如下所示: 

1):工程结构(Class Library Project)

 

2): IRestDemoService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Web;

namespace EricSunRestService
{
    [ServiceContract(Name = "RestDemoServices")]
    public interface IRestDemoServices
    {
        [OperationContract]
        [WebGet(UriTemplate = Routing.GetClientRoute, BodyStyle = WebMessageBodyStyle.Bare)]
        string GetClientNameById(string Id);
    }


    public static class Routing
    {
        public const string GetClientRoute = "/Client/{id}";
    }
}

 

3):RestDemoService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Activation;

namespace EricSunRestService
{
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Single, IncludeExceptionDetailInFaults = true)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class RestDemoServices : IRestDemoServices
    {
        public string GetClientNameById(string Id)
        {
            string ReturnString = "HaHa id is: " + Id;

            return ReturnString;
        }
    }
}

 

4):Host Service 工程结构 (Console Application)

 

5):Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EricSunRestService;
using System.ServiceModel.Web;

namespace EricSunHostService
{
    class Program
    {
        static void Main(string[] args)
        {
            RestDemoServices demoServices = new RestDemoServices();
            WebServiceHost _serviceHost = new WebServiceHost(demoServices, new Uri("http://localhost:8000/DemoService"));
            _serviceHost.Open();
            Console.ReadKey();
            _serviceHost.Close();
        }
    }
}

 

6):运行Host程序,在浏览器中输入对应Service的Url

 

 

更多信息请看如下链接:

http://www.progware.org/Blog/post/A-simple-REST-service-in-C.aspx 

 

 

posted @ 2014-05-22 14:33  Eric Sun  阅读(23204)  评论(3编辑  收藏  举报