8. Reactorフレームワーク

最終回は、予定を変えてReactorフレームワークを詳解します。
TCPServerはスレッドプールによるマルチスレッドのソケット通信ですが、クライアントの数が巨大なシステムではC10K問題を起こしてしまいます。それを解決するノンブロッキングI/Oを実現するのにPocoではReactorフレームワークを提供しています。

Reactorフレームワークを使うNetライブラリのサンプルとして、EchoServerプロジェクトがPOCOに付属しています。EchoServerプロジェクトを、Reactorフレームワークが提供するすべてのイベントハンドラをサポートするように改造してみます。
Continue reading

7. クラスローディング

今回は、POCOでのクラスローディングの実装例を詳解します。
まず、参考情報のポインタを示します。
http://pocoproject.org/slides/120-SharedLibraries.pdf

さて、このクラスローディングはPOCO独自の機能で、シェアドライブラリからプログラム実行時にクラスを動的生成することができます。
シェアドライブラリを追加・変更することで、プログラムの振る舞いを変更できますので、主な用途としてはプラグインが挙げられます。
クラスローディングのサンプルコードは、シェアドライブラリのコードとクラスローディングするコードの2つに分かれます。
Continue reading

6. バリデーション

今回は、POCOのバリデーションを詳解します。
POCOで用意されているバリデーションはコマンドラインオプションの入力値のバリデーションで、intと正規表現の2種類のバリデーションが提供されています。
オプションは、エラーメッセージに使われているだけなので、HTMLフォームのバリデーションに使うこともできます。ただ、実際のアプリケーションでは、エラーメッセージ体系を独自に決めるでしょうから、POCOの実装を参考にして自作することになると思います。
簡単なバリデーションのサンプルコードは以下のようになります。
Continue reading

5. プロパティファイル

今回は、POCOでのプロパティファイルの使い方を詳解します。
実は、「2. ロギングフレームワークの使い方」でプロパティファイルは既出なのですが、ロギングフレームワーク内でプロパティファイルの読み込みが行われているため、詳解したコードにはプロパティファイルの処理が含まれていませんでした。
MySQLの接続情報をプロパティファイルから読み込むサンプルコードは以下のようになります。
Continue reading

4. データベース利用の実装例

今回は、POCOでのデータベース利用の実装例を詳解します。
まず、参考情報のポインタを示します。
http://pocoproject.org/docs/00200-DataUserManual.html

英語サイトですが、データベースフレームワークの使い方を丁寧に説明しています。
英語を苦にしない人は、上記サイトを見てもらえればOKです。
でも、これだけだとこの記事が寂しすぎるので、MySQLでのCRUDのサンプルプログラムを紹介しておきます。
Continue reading