この記事は .NET Core Advent Calendar 2016 5日目の記事です。
11月中旬にAzure DocumentDBの .NET Core向けのSDKのプレビュー版の提供が始まりました。
Azure DocumentDBとは
Microsoft Azureが提供する フルマネージドなNoSQLデータベースサービス です。
これまでDocumentDBのSDKは下記の言語が提供されていました。
- .NET
- Node.js
- Java SDK
- JavaScript SDK
- Python
冒頭でも述べたようにこれらのSDKのラインナップに「.NET Core」が加わりました。
DocumentDB .NET Core Preview SDK available
私自身、待ち望んでいたところがあるので試してみました。
SDKのインストール
まずはVisual Studioで.NET Coreのプロジェクトを作成します。
作成したプロジェクトを右クリックして「NuGetパッケージの管理」をクリックします。
パッケージマネージャにて Microsoft.Azure.DocumentDB.Core
を検索し、インストールを行います。
もしくはパッケージマネージャーコンソールにてインストールコマンドを発行します。
PM> Install-Package Microsoft.Azure.DocumentDB.Core -Pre 'nuget.org' からパッケージ 'Microsoft.Azure.DocumentDB.Core 0.1.0-preview' を取得しています。 NuGet パッケージ Microsoft.Azure.DocumentDB.Core.0.1.0-preview をインストールしています。 'Microsoft.Azure.DocumentDB.Core 0.1.0-preview' が MyDocumentDB に正常にインストールされました NuGet の操作の実行に 42.79 ms かかりました 経過した時間: 00:00:01.3186288
機能
プレビュー公開についての記事によれば、.NET向けのSDKと同一の機能を有しているそうです。
なのでアプリケーションでDocumentDBを使う上での必要な機能は既に揃っていることになります。
DocumentDB .NET Core Preview SDK available
The DocumentDB .NET Core Preview SDK has feature parity with the latest version of the DocumentDB .NET SDK
データベースの作成、コレクションの作成、JSONドキュメントの作成など、基本的な機能の使い方はドキュメントを読んだほうが分かると思います。
とまぁこれだけだと大したブログにならないですね。
(オマケ)DocumentDBの環境をローカルに作る方法を試してみる
エミュレータを使ってローカルにDocumentDBの環境が作れるというもの。いつ頃でてたんだろう?
どうしてもDocumentDBを使ったアプリだと、ローカルでデバッグする際もデータベースだけはAzureにアクセスしないといけなかったので、オフラインだと開発しづらかった面がありました。これは早くに知っておきたかったですね。
元ネタはこちらです。
使用するのは DocumentDB Emulator というものです。Microsoftが提供しています。
必要なスペック要件としては、OSはWindows Server 2012 R2以上、またはWindows10のようです。
また、メモリは2GB、ディスク空き容量は10GBとのこと。
SDKを使用してDocumentDBにアクセスするには、エンドポイントとアクセスキーを用いた認証が必要となります。
エミュレータの場合、エンドポイントは https://localhost:8081/
、アクセスキーはドキュメントに記載されています。
接続先をエミュレータに変えてしまえば、他のコードを変更する必要はありません。
エミュレータのDocumentDBに格納されているデータを確認する場合は、タスクトレイのアイコンをクリックし[Open Data Explorer...]をクリックすればよいです。
DocumentDB Emulatorの標準ポートは8081ですが、このポート番号だと都合が悪い場合、Emulatorのコマンドラインでの起動引数にて別ポートを指定できるようです。
インターネット接続が必要なクラウドサービスを使ったアプリケーションの開発が、ローカルかつオフラインでできるのは素晴らしいですね。
最後にこの記事を書くために使用したコード(リポジトリ)を置いときます。
デバッグ実行時はDocumentDB Emulatorに接続するようなコードにしています。
※追記
この記事を書いてたらScott HanselmanさんのブログにDocumentDB Emulatorの記事が公開されていた。なんとタイムリーなw