こんばんは。今日は.NET6を触ってみている中でADO.NETというやつにぶつかりましたので、勉強がて調べて分かったことをこちらにまとめておこうと思います。
それではまいります。
ADO.NETの概要
ADO.NET概要の公式Docはこちら。
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/ado-net-overview
その他Webサイトなども見ながら分かったポイントを以下箇条書き。
- .NET Framework (ASP.NET / .NET Coreなど)でSQL ServerやOracle DBといったデータソースへの接続を実現・標準化するためのソフトウェアコンポーネント
- .NET Framework提供元であるMicrosoftにより開発された
- ActiveX Data Object (ADO)を.NET Framework環境で動作させるためのAPIとして開発された
- ただし、ADOの機能拡張ではなく、全く新規のアーキテクチャで開発されている
- 従来のADOと比べて、非同期データセット(データベースから引き出したデータをメモリ上に保持しておけるため高速かつ、処理中にデータベースとの接続を維持する必要がない)、データ転送形式にはXMLを使用(他環境との親和性向上)、各種データソースとの接続が標準化されている点が特徴
- ADO.NETには、データベースとの接続、コマンドの実行、結果取得を行うためのしくみが含まれている。
- ADO.NETはSystem.Data.dllにクラスとして含まれている
ADO.NETのアーキテクチャ
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/ado-net-architecture
上の記事を読んで以下を理解。
- ADO.NETは、大きく.NET Framework ProviderとDatasetという2つのコンポーネントから構成されている
- .NET Framework Providerは、データ操作・参照・接続の機能を担当。具体的にはConnectionオブジェクト(接続担当)、Commandオブジェクト(操作担当)、Readerオブジェクト(参照担当)、DataAdapter(データソースとDatasetの調整役を担いCommandオブジェクトの操作を裏でささえてくれる)が実現してくれる。
- Datasetは、データソースに依存しないデータアクセスを実現する。メモリ上にデータを保持。Datasetの中には、実際にデータを保持するDataTableオブジェクトのコレクションが含まれる)
- ユースケースによって、Readerを利用するか、Dataset利用するかのオプションがある。
- Datasetの利用が推奨されるのは、データをメモリ上に保持したい場合、データをリモート処理する場合(これはどういうことかちょっとよくわからなかった)、複数データソースと動的に対話する場合、データソースの接続を節約したい場合
- 一方で、DataReaderを利用する方がパフォーマンスに良い影響を与えるらしい(DataSetの機能が利用するメモリを節約できたり、DataSetの機能を実現するための動作のオーバヘッドが減るため)
なお、Data Providerが提供する機能の詳細は以下
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/data-providers
DataSetは以下に説明があります。
https://docs.microsoft.com/ja-jp/dotnet/framework/data/adonet/ado-net-datasets
以上、簡単ではありますがADO.NETの概要でした。関連するテクノロジとして登場するLINQ, Entity Frameworkなどについても今後追加Updateしたいと思います。
少しでも参考になりましたら幸いです。
おしまい
コメントを残す