自打学编程以来,蠢事干过不少,就“掉进坑里”这事而言,有不小心陷进去的,有心甘情愿跳下去的,还有被别人拉进去的...但是像过去两天一样一步一个坑的...真的是还没有体验过。“避之不得,弃之可惜”,人生最痛苦的事莫过于此。

好吧,“最近”REST很热门...我那么喜欢凑热闹的人,当然也想搞一搞,其实最主要的是SharePoint 2013搜索里面有一种API采用了这种模型,为了“备着用”,也应该了解下...当然这个很大程度上是个借口。百度一下或者谷歌一下教程真不少,全部声称构建支持“CRUD”的REST WCF,但是打开一看,简直就是坑爹啊...要么只实现了查询,要么只实现了服务没有调用示例,要么就是啪用一个模版然后改下代码...最后导航到服务页,声称构建完成。当然...看到几位前辈的文章还是很全面的..只不过是比较旧的方式,节点绑定比较麻烦就没有走那条路。本文“特点”:真正的CRUD全包含以及调用,货真价实童叟无欺;详细记录本人的爬坑史(有些时候我也不知道我怎么爬出来的,so...);收录各种解决方案的链接。

目的是完成一个叫“BookService”的服务,包含基础的增删查改操作。整个可用的解决方案只需要处理4个文件,所以没有必要提供文件下载只需要贴出源码就行。

[数据]为了区分重点,没有必要使用数据库这样的东西,使用代码引用一块内存当数据存储区就够了,先是实体类,代码如下。

    public class Book
    {
        static int id;
        private Book(Book book)
        {
            //参数只为签名
        }

        public Book()
        {
            //唯一标记
            id++;
            Id = id;
        }

        public Book(string name, int saledCount)
            :this()
        {
            //构造函数
            Name = name;
            SaledCount = saledCount;
        }

        public static Book Clone(Book book)
        {
            //复制部分属性
            Book clone = new Book(book);
            clone.Id = book.Id;
            clone.Name = book.Name;

            return clone;
        }


        //只有能够Get/Set的属性才能被序列化
        public int Id { get; set; }
        public string Name { get; set; }
        public int SaledCount { get; set; }
    }
View Code

相关文章: