情報応用演習Ⅰ(2024)

コンソールアプリからデータベースにアクセスする

ウェブアプリケーションでは多くの場合リレーショナルデータベースからのデータの読み込み,または書き込みの作業を必要とする. ただし,データベースへのアクセスを必要とするのはウェブアプリケーションばかりではない. データ処理などで,コンソールアプリケーションからリレーショナルデータベースにアクセスしてデータを取り出し,なんらかの処理を行うといった 場面は少なからずある.そこで今回はウェブアプリはいったん忘れて,単にC#のコンソールアプリケーションから既存のリレーショナルデータベースに アクセスする方法を学ぶことにする.

本コースではRDBMS,つまりデータベースサーバーのソフトウェアとしてPostgreSQLを使用することを想定しているが, 本題に入る前にC#プログラムとRDBMSがどのように協調動作するのかについて簡単に説明しておこう.

今回用いるPostgreSQLをはじめとして,ほかのさまざまなRDBMSも オペレーティングシステム上で動作する1つの完結したソフトウェアであることは共通している. また,読者らがいままで作成してきたC#プログラムもまた同様に1つの完結したソフトウェアであるといえる.

オペレーティングシステムとPostgreSQLやC#プログラムの関係は,スマートフォンなどで例えるならば, iOSやAndroidといったオペレーティングシステムと,そのうえで動作するLINEやYoutubeといった個々のアプリの 関係と同じである(_).

OSとアプリ,プロセス間通信

独立したプログラム同士で情報のやり取りを行うことを総称してプロセス間通信(IPC, interprocess communication)という. プロセス間通信を行う方法はファイルを仲介する方法や,パイプ,UNIXドメインソケット,TCP/IPソケットなど 様々な方式がある.

PostgreSQLはいくつかのプロセス間通信の方式をサポートしているが今回はC#プログラムと PostgreSQLの間でTCP/IPソケットを用いたプロセス間通信を用いることにする. TCP/IPは前提科目で学んでいるはずであるが,ネットワークを通じてデータをやりとりするための仕組みの一つであり, TCP/IPソケットはそれを応用した方法である. ウェブアプリケーションやシステムでは,アプリケーションが動作しているマシンとは別のマシンでRDBMSが動作している ということはしばしばあるため,アプリケーションとRDBMSの間でTCP/IPソケットを用いた通信を行うのは一般的な方法である.

今回は読者らのパソコン上でPostgreSQLを動作している状態にして,同じパソコン上で動作する C#プログラム(≒「コンソールアプリケーション」タイプのプロジェクト)から,TCP/IPソケットを用いてPostgreSQLに接続し, データの読み書きを行う,という環境で演習を行う(_). つまりは自分(=読者のパソコン)から自分自身へのネットワーク接続を行う,という形態となる.

今回の実験環境

さて,このプロセス間通信を自前で実装することも可能ではあるが,通常は使用する 各RDBMSごとに用意されている専用のデータベースドライバーと呼ばれるライブラリを用いるのが一般的である. 「ライブラリ」とはプログラム中で用いるクラスや関数などをまとめた部品集のようなものだと思えばよい.

C#プログラムからPostgreSQLにアクセスするには,Npgsql(えぬぴーじーえすきゅーえる)という ライブラリを用いる.また,C#プログラムからより簡便にデータの操作を行うためにEntity Framework Core(えんてぃてぃ・ふれーむわーく・こあ)というO/Rマッピング技術の一つも紹介する.

Last updated on 2024-04-26
Published on 2024-04-26

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.