.net ネイティブアプリケーションからCloud Databaseへの接続 (CDBC-トライアル編)

#概要
クラウドへの移行が加速する昨今,.net アプリケーションからCloud 上のDatabaseへの接続の需要も高まった。
Cdbc (Cloud Database Connectivity) というCloud Databaseに接続できる.NETライブラリがリリースされ、Cloud databaseを利用する.net アプリケーション（特にWindowsネイティブアプリ）の開発に新たな選択肢が増えた。

#構成図
簡単にいうと、Cdbcはクラウト上のデータベースへのプロキシ接続を提供するツール。
<img src="https://www.cdbc.cloud/img/cdbc1.png" alt="CDBC構成図" title="CDBC構成図">
CDBCはCdbc ClientとCdbc Servieによって構成されている。 Cdbc ClientはCdbc Service経由してデータベースへアクセスする。Cdbc Serviceはプロキシ機能提供する。

#特徴
1. https プロトコルを使っている、クライアント側、サーバー側DBのポート開放不要。
2. 主要なデータベースを対応している（Oracle , SqlServer , MySql , PostgreSql）。
3. 開発方法はODP.net、SqlClient、MySQL Connector / NET、およびNpgsqlと同じ構文。
4. サーバー側（Cdbc Service）の開発不要、Cdbc Serviceはいくつかのセキュリティ対策を講じている。

#トライアル
CDBCの開発者はCDBC ClientのサンプルアプリケーションとCDBC service のサンドボックス環境を提供している、githubからサンプルアプリケーションを取得したらすぐサンプルソース、動作などを確認できる。
※試すだけならCDBC service、Databaseの用意、セットアップは不要。
demo環境：
http://demo.cdbc.cloud/

２つサンプル提供されている
1. シンプルなcdbc　Clientのサンプル
2. cdbcを使って開発したPC　online　Storeのサンプル。
  シナリオ：
　　店員はWindowsアプリケーションを使って商品メンテナンス
　　お客さんはweb applicationを使ってonlineショッピング　　

今回は２番のサンプルを試してみる。
  https://github.com/ricct/cdbcsystemsample

##手順
###前提
　git ,  Visual studio 2017 or 2019 を インストールされていること

###1. githubからclone する (フォルダー：　c:\test)

```
cd c:\test
git clone https://github.com/ricct/cdbcsystemsample.git
```
　　
###2. ダウンロードされたCdbcOnlineStoreSystemSample.slnを開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/f0ba26b2-7f9a-781b-fa1d-4c8eb1f7bdf9.png)

Management とPcStore二つのプロジェクトを確認できる。
Management - 商品管理サンプル
PcStore- online shopping siteサンプル


### 3.まずManagementの動作を確認してみる。
3.1 Managmentはデフォルトスタットアッププロジェクトなので、実行ボタンを押す。下記の画面出る。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/9b23ba9c-79d6-4036-ca38-fb57eefaf472.png)

https://github.com/ricct/cdbcsystemsample にuserIdとUserPasswordを記述されている。
2019/08/11現在：

|Property|Value|
----|---- 
| userId |demouser1|
| UserPassword |X7bgGMLh|

3.2 ログインしたら、商品一覧画面表示されている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/38f4fbc2-b2ea-dfe4-43c9-26456e284510.png)

3.3 商品を新規追加してみる
[New]ボタンを押して、ダミーの商品を追加して、保存
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/a8599f2d-5eba-4608-4c90-f4b3cad0242f.png)

3.4 一覧画面で追加されていることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/f6fd461e-5e40-e327-0c06-6f3135028006.png)

3.5 Web 画面で商品追加されていること確認。
ブラウザで下記のURLを開く
[https://demo.cdbc.cloud/pcstore/](https://demo.cdbc.cloud/pcstore/) 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/8f156220-c797-035a-5290-57a4389aa1b3.png)

※全員同じDB環境を使っている、管理人どのぐらいの頻度で環境リセットするのがわからないので、確認終わったら、追加した商品を削除しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/123679/5ec56e44-a794-cf5e-9ffc-d755d71ba509.png)


#ソースを確認
##Selectサンプル
https://github.com/ricct/cdbcsystemsample/blob/f3136ef70e3ab527231243296ee5e3e4b3907183/Management/FrmProduct.cs#L76

##DMLサンプル
https://github.com/ricct/cdbcsystemsample/blob/master/Management/FrmProduct.cs#L136

ODP.netと類似していること確認できる。

#おわりに
IaaS上インストールされたDBや、AWS RDS、Oracle Autonomous などのPaaSも対応している、複雑な設定なく簡単にCloud上のデータベースに接続するツールとしてCDBCは検討、検証する価値があると思う。
新規開発はもちろん、Windows Server 2008／2008 R2の延長サポート終了に伴うCloud移行の場合の活用も期待できる。c# , vb.net開発したclient/serverアプリケーションのcloud移行は短時間、少ない改修で実現できる。

#関連ページ
[CDBC公式ページ](https://cdbc.ricct.com/) 
[CDBC Client @ nuget](https://www.nuget.org/packages/Cdbc.Data/) 
[紹介動画（字幕有）](https://www.youtube.com/watch?v=pyQr6zmh7Rc)
[AWS RDSへ接続の構築手順](https://qiita.com/RiCCT/items/71c1c9a6e2cef5443c14)
[CDBC紹介 ](https://www.slideshare.net/RiCCTcom/cloud-databasenetcdbc-212607767)