1、创建一个WCF Service Application
2、创建一个实体对象Student,用作数据传输的载体,下面是Student.cs的内容
- using System.Runtime.Serialization;
- namespace WCFRest
- {
- /// <summary>
- /// DataContract 数据契约:服务端和客户端之间要传送的自定义数据类型
- /// </summary>
- [DataContract]
- public class Student
- {
- /// <summary>
- /// 在数据传送过程中,只有成员变量可以被传送而成员方法不可以。
- /// 并且只有当成员变量加上DataMember时才可以被序列进行数据传输,
- /// 如果不加DataMember,客户端将无法获得该属性的任何信息
- /// </summary>
- [DataMember]
- public int Id { get; set; }
- [DataMember]
- public string Name { get; set; }
- }
- }
同时我们创建一个类,用来模拟数据库的存储
- using System.Collections.Generic;
- namespace WCFRest
- {
- public class UserList
- {
- private static readonly UserList _Instance = new UserList();
- private UserList() { }
- public static UserList Instance
- {
- get { return _Instance; }
- }
- public IList<Student> Users
- {
- get { return _Users; }
- }
- private IList<Student> _Users = new List<Student>{
- new Student {Id = 1, Name = "张三" },
- new Student {Id = 2, Name = "李四" },
- new Student {Id = 3, Name = "王五" }
- };
- }
- }
3、创建服务契约
下面我们在项目添加一个WCF Service
首先修改IStudnetService接口,配置Rest的URL路径
- using System.Collections.Generic;
- using System.ServiceModel;
- using System.ServiceModel.Web;
- namespace WCFRest
- {
- [ServiceContract]
- public interface IStudentService
- {
- [OperationContract]
- [WebInvoke(Method = "GET",
- RequestFormat = WebMessageFormat.Json,
- ResponseFormat = WebMessageFormat.Json,
- UriTemplate = "GetStudentById/Id={Id}"
- )]
- Student GetStudentById(string Id);
- [OperationContract]
- [WebInvoke(Method = "GET",
- RequestFormat = WebMessageFormat.Json,
- ResponseFormat = WebMessageFormat.Json,
- UriTemplate = "GetStudentList"
- )]
- IList<Student> GetStudentList();
- }
- }
4、修改StudentService类,实现Rest方法
- using System.Collections.Generic;
- namespace WCFRest
- {
- public class StudentService : IStudentService
- {
- public Student GetStudentById(string Id)
- {
- return StudentList.Instance.Users[int.Parse(Id)];
- }
- public IList<Student> GetStudentList()
- {
- return StudentList.Instance.Users;
- }
- }
- }
5、配置Service和Behavior
在Web.Config中配置我们的Rest服务
- <system.serviceModel>
- <services>
- <service name="WCFRest.StudentService" behaviorConfiguration="serviceBehavior">
- <endpoint address="" binding="webHttpBinding" contract="WCFRest.IStudentService"
- behaviorConfiguration="web"></endpoint>
- </service>
- </services>
- <behaviors>
- <serviceBehaviors>
- <behavior name="serviceBehavior">
- <serviceMetadata httpGetEnabled="true"/>
- <serviceDebug includeExceptionDetailInFaults="false"/>
- </behavior>
- <behavior>
- <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
- <serviceDebug includeExceptionDetailInFaults="false"/>
- </behavior>
- </serviceBehaviors>
- <endpointBehaviors>
- <behavior name="web">
- <webHttp/>
- </behavior>
- </endpointBehaviors>
- </behaviors>
- <protocolMapping>
- <add binding="basicHttpsBinding" scheme="https" />
- </protocolMapping>
- <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
- </system.serviceModel>
OK,下面测试一下我们的程序,右击Student.svc文件,选择View In Browser,我们将会看到下面的运行结果
说明:本文绝大部分内容摘自下面文章
http://www.topwcftutorials.net/2013/09/simple-steps-for-restful-service.html