• (翻译)Couchbasesdknet 使用手册 1.2 Chapter 1. 启程


    Chapter 1. 启程

    1.1. 取得服务端程序

    下载并安装Couchbase 服务端,安装完回到这里然后继续。

    1.2. 取得客户端类库

    两个途径都可以:

    1、  直接下载类库

    2、  通过执行NuGet Package Manger命令:

    PM> Install-Package CouchbaseNetClient

    1.3. 试用

    1.3.1 建立项目

    通过visual studio 新建一个控制台程序,并且添加Couchbase.dll, Enyim.Memcached.dll,

    Newtonsoft.Json.dll and RestSharp.dll这几个程序集的引用(这几个动态链接库可在下载的类库包中找到)

    1.3.2 添加配置

           你可以使用编程方式或者使用couchbase 配置节在app.config文件中配置。使用app.config文件更新灵活,是优先采用的方法。

        按照下面配置你的app.config:

    <?xml version="1.0"?>

    <configuration>

    <configSections>

    <section name="couchbase" type="Couchbase.Configuration.CouchbaseClientSection, Couchbase"/>

    </configSections>

    <couchbase>

    <servers bucket="default" bucketPassword="">

    <add uri="http://192.168.0.2:8091/pools"/>

    <add uri="http://192.168.0.3:8091/pools"/>

    </servers>

    </couchbase>

    </configuration>

    上面在Servers列表中的多个URI,是客户端获取信息的集群配置。如果在本机上运行,则只需要设置一个127.0.0.1的配置就可以了。

    默认的Couchbase 服务端安装是创建一个名为default、没有密码的存储区(bucket),所以这里存储区密码(bucketpassword)的属性为可选。如果你创建了一个已认证的存储区,你必须在上面的设置中配置那个值。

           警告:

                  在Windows系统默认分配了一些TCP/IP端口用于系统通信用。关于这个问题的更多信息,包括怎么去调整配置和增加可用的端口可以看Avoiding TCP/IP Port Exhaustion

    1.3.3 客户端举例

    在Program.cs文件中添加下面的声明:

    using Couchbase;

    using Enyim.Caching.Memcached;

    using Newtonsoft.Json;

    Couchbase命名空间中包含我们将会用到的客户端和配置类。

    Enyim.Caching.Memcached包含基础设施的支持,记得Couchbase支持Memcached协议,因此可以使用流行的Enyim Memcached客户端的key/Value操作方式。

    下一步在Main方法中创建一个客户端实例。

    var client = new CouchbaseClient();

    在这个练习中,这是一个不好的创建客户端的方式。这个客户端会引发创建连接池,并且建立一个线程去取得集群配置。因此,最好的方式是每个应用程序域和每个存储区(bucket)只创建一个客户端实例。为了这个目的,可以在一个类里面创建一个静态属性。

        public class CouchbaseManager

        {

            private readonly static CouchbaseClient _instance;

            static CouchbaseManager()

            {

                _instance = new CouchbaseClient();

            }

            public static CouchbaseClient Instance { get { return _instance; } }

    }

    1.3.4           CRUD操作

    在.Net 客户端,主要的CRUP API是使用标准的Key/Value存储方式。你创建或者更新文本需要提供一个key和value。检索和移除文本需要根据提供的key进行。举个例子:

    如果安装Couchbase Server和设置集群的时候把一个名为“beer-sample”存储区选中的话,可以在这个存储区中找到一个文本的key为“new_holland_brewing_company-sundog.”

    {

    "name": "Sundog",

    "abv": 5.25,

    "ibu": 0,

    "srm": 0,

    "upc": 0,

    "type": "beer",

    "brewery_id": "new_holland_brewing_company",

    "updated": "2010-07-22 20:00:20",

    "description": "Sundog is an amber ale as deep as the copper glow of a Lake Michigan sunset. Its biscuit malt give Sundog a toasty "style": "American-Style Amber/Red Ale",

    "category": "North American Ale"

    }

    可以简单的调用get方法,就能得到这个文本的内容。

    var savedBeer = client.Get("new_holland_brewing_company-sundog");

    如果添加一行代码打印savedBeer到控制台,可以看到里面包含了一个json格式的字符串:

    var savedBeer = client.Get("new_holland_brewing_company-sundog");

    Console.WriteLine(savedBeer);

    在这个例子里savedBeer 是一个Object类型,如果想得到一个string类型的对象,可以使用泛型版本的get

    var savedBeer = client.Get<string>("new_holland_brewing_company-sundog");

    为了演示添加文本,首先创建一个Json字符串。

    var newBeer =

                    @"{

                    ""name"": ""Old Yankee Ale"",

                    ""abv"": 5.00,

                    ""ibu"": 0,

                    ""srm"": 0,

                    ""upc"": 0,

                    ""type"": ""beer"",

                    ""brewery_id"": ""cottrell_brewing"",

                    ""updated"": ""2012-08-30 20:00:20"",

                    ""description"": ""A medium-bodied Amber Ale"",

                    ""style"": ""American-Style Amber"",

                    ""category"": ""North American Ale""

                    }";

    这里简单的创建一个key,key的名字使用啤酒厂的名字和啤酒的名字使用破折号连接而成,空白替换成下换线,文字全部小写。这里要强调的一点,key的产生规则是必须始终不变的。如果你通过key去检索数据,你必须能预测到使用哪个key。

    如var key = "cottrell_brewing-old_yankee_ale";

    通过这个新的key,json文本可以简单的保存。

    var result = client.Store(StoreMode.Add, key, newBeer);

    这里使用了三个参数去保存。第一个参数是保存的模式,是一个枚举,Add表示添加一个新的key,Replace表示更新一个已经存在的key,set表示如果key不存在则添加、存在则更新。如果key已经存在add就会失败,如果key不存在Replace操作会失败。第二和第三个参数分别是key和value。

    返回值是一个bool类型,表示操作是成功还是失败。

    删除操作使用key去调用Remove方法,类似其他方法,Remove返回一个bool类型的返回值,表示操作是否成功。

    var result = client.Remove("cottrell_brewing-old_yankee_ale");

    1.3.5. 存储为Json文本

    存储为Json格式的字符串是一个比较简单直接的操作,但是实际上我们很多时候会有存储领域对象的需求,更明白的讲我们会有很多直接存储数据的对象的需求。这个.Net 客户端类库支持存储可序列化的对象。当然这些可序列话的对象会作为Joson文本的二进制附件保存。它的影响是附件在查看的时候是没有索引的。更好的解决方案是在保存前,先把数据序列化成Json字符串;取出数据后,再反序列话Json字符串成对象。

    1.3.6. CouchbaseClient JSON 扩展方法

    如果想简单的读写JSON, 在Couchbase.Extensions命名空间下 CouchbaseClientExtensions类提供了两个方法, StoreJson 和 GetJson。这两个方法都是依赖于开源类库: Newtonsoft.Json library, (已经在Couchbase .NET类库的压缩包里面)。这两个只是简单的对get和store方法的重写,当前不支持复杂的CAS和TTL操作。

    这里创建POCO类Beer,需要添加声明

    using Newtonsoft.Json;

     

    public class Beer

        {

            [JsonProperty("name")]

            public string Name { get; set; }

            [JsonProperty("abv")]

            public float ABV { get; set; }

            [JsonProperty("type")]

            public string Type

            {

                get { return "beer"; }

            }

            [JsonProperty("brewery_id")]

            public string BreweryId { get; set; }

            [JsonProperty("style")]

            public string Style { get; set; }

            [JsonProperty("category")]

            public string Category { get; set; }

    }

     使用new 一个实例:

               var newBeer = new Beer

                {

                    Name = "Old Yankee Ale",

                    ABV = 5.00f,

                    BreweryId = "cottrell_brewing",

                    Style = "American-Style Amber",

                    Category = "North American Ale"

                };

     

    存储:

    var result = client.StoreJson(StoreMode.Set, key, newBeer);

    检索:

     

      var savedBeer = client.GetJson<Beer>(key);

    在Program里面可以如下:

    class Program

    {

    static void Main(string[] args)

    {

    var client = new CouchbaseClient();

    var key = "cottrell_brewing-old_yankee_ale";

    var newBeer = new Beer

    {

    Name = "Old Yankee Ale",

    ABV = 5.00f,

    BreweryId = "cottrell_brewing",

    Style = "American-Style Amber",

    Category = "North American Ale"

    };

    var result = client.StoreJson(StoreMode.Set, key, newBeer);

    if (result)

    {

    var savedBeer = client.GetJson<Beer>(key);

    Console.WriteLine("Found beer: " + savedBeer.Name);

    }

    }

    }

     完整例子程序,需要安装vs2012

  • 相关阅读:
    git 文件回滚
    常用函数
    触发器
    UPDATE
    DELETE
    INSERT
    完整性与约束
    流程控制
    SET ANSI_NULL ON 和 SET QUOTED_IDENTIFIFR ON
    SELECT 与 SET给标量赋值
  • 原文地址:https://www.cnblogs.com/tangruixin/p/3099672.html
Copyright © 2020-2023  润新知