RavenDB起步--客户端API(一)

简介: 上一小节我们演示了一个简单的实例,从本篇文章开始我将通过两篇文章带领大家学习一下 RavenDB 常用客户端 API。

上一小节我们演示了一个简单的实例,从本篇文章开始我将通过两篇文章带领大家学习一下 RavenDB 常用客户端 API。

Document Store

Document Store 是客户端 API 的主要入口点,它包括了包含所有客户端配置,包括序列化配置、故障转移行为、缓存选项等内容。一般来说每个单例应用程序都会拥有一个Document Store实例,因此 Document Store 是线程安全的,它初始化代码类似于下面这样:

public class DocumentStoreHolder
{
    private readonly static Lazy<IDocumentStore> _store = 
        new Lazy<IDocumentStore>(CreateDocumentStore);
    private static IDocumentStore CreateDocumentStore()
    {
        var documentStore = new DocumentStore
        {
            Urls = // urls of the nodes in the RavenDB Cluster
            {
                "https://ravendb-01:8080",
                "https://ravendb-02:8080",
                "https://ravendb-03:8080",
            },
            Certificate = 
                new X509Certificate2("tasks.pfx"),
                    Database = "Tasks",
        };
        documentStore.Initialize();
        return documentStore;
    }
    public static IDocumentStore Store
    {
        get { return _store.Value; }
    }
}

上面的代码中使用 Lazy 是为了保证 Document Store 只能被创建一次,因此在这里不需要担心线程安全和双重锁定问题。

约定

RavenDB 默认已经做了一些列的约定,这些约定既包含怎么保存内容,也包含如何序列化实体成文文档。在小型项目中使用这些默认的约定基本上已经满足了,但是对于中型项目甚至大型项目来说默认约定就显得有些鸡肋,因此在需要自定约定的情况下,我们可以调用 DocumentStore.Conventions 方法来设置符合项目情况的约定。比如说 RavenDB 默认使用 Id 作为文档内容的 ID ,但是我们并不希望这么做,我们希望使用实体名称加Id的形式来产生ID,那么我们可以这样定义:

documentStore.Conventions.FindIdentityProperty = 
    prop => prop.Name == prop.DeclaringType.Name + "Id";

这个例子只是展现 RavenDB 可以实现自定义约定,更多的属性我将会在后续课程中讲解。

身份验证

身份验证是我们在开发项目时必须要考虑到的问题,RavenDB 完全支持身份认证这个概念。一般来说我们的开发环境是如果用在线上的话是不安全,我们需要以安全的模式在线上环境中运行 RavenDB ,这时我们可以使用 RavenDB 支持的 x509 客户端证书来进行身份验证。这种认证方式表示出于特定原因授予数据库的特定访问权限。X509 是一种自然的验证方式,并且一般来说 X509 客户端证书是基于每个应用程序/角色授予的。具体的身份认证我将会在后面的专题中进行详细讲解。

Tip:默认情况下,RavenDB 会拒绝 localhost 在不安全模式下访问任何内容。这样做是出于安全原因,防止管理员在未经网络身份验证的情况下暴露 RavenDB。如果在禁用身份验证的情况下配置非本地 URL,那么 RavenDB 会显示错误页面,解释情况并提供有关如何解决问题的说明。

目录
相关文章
|
3天前
|
前端开发 JavaScript API
基于React的简易REST API客户端设计与实现
基于React的简易REST API客户端设计与实现
26 3
|
3天前
|
网络协议 Dubbo Java
【网络编程】理解客户端和服务器并使用Java提供的api实现回显服务器
【网络编程】理解客户端和服务器并使用Java提供的api实现回显服务器
10 0
|
3天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
16 3
|
3天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
34 11
|
3天前
|
JSON Java API
Java 编程问题:十三、HTTP 客户端和 WebSocket API
Java 编程问题:十三、HTTP 客户端和 WebSocket API
102 0
|
3天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
28 0
|
3天前
|
Java API
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
SpringBoot【集成ElasticSearch 01】2种方式的高级客户端 RestHighLevelClient 使用(依赖+配置+客户端API测试源码)
93 0
|
缓存 API
|
1天前
|
监控 安全 数据挖掘
Email 接口API有哪些?具体分析一下阿里云和AOK的优点
本文介绍了常见的Email接口API,如阿里云邮件推送、AOKSend、SendGrid、Mailgun和Amazon SES。阿里云API以其高稳定性和数据分析功能脱颖而出,支持批量发送和多语言;而AOKSend API以易于集成、高安全性和优秀客户支持为亮点。企业在选择时应考虑自身需求和预算,以优化邮件营销效果。
|
1天前
|
定位技术 API
Angular 调用导入百度地图API接口,2024春招BAT面试真题详解
Angular 调用导入百度地图API接口,2024春招BAT面试真题详解

热门文章

最新文章