前回、「
Open棟梁プロジェクトの起源について。」の
第2回の投稿を行いましたが、今回は、その第3回の投稿です。
2007年からの社内 横展開を開始して以降、産業系の案件が中心でしたが、公共系や金融系のメガ・ステップ級の案件も経験しつつ、以下のような機能を順次追加していきました。
- 動的SQLとD層自動生成機能
- 複数ブラウザ・ウィンドウ
- 業務モーダル・ダイアログ
- ブラウザ・ウィンドウ別Sessionスコープ
- 不正操作防止機能
- 多用なアーキテクチャへの対応
- WPF / Silverlight、
ASP.NET MVC、WebAPI、UWP - 通信制御機能
- リッチクライアント対応
以下に、その経緯などをつらつらと書いていこうと思います。
<動的SQLとD層自動生成機能>
当時、既に、Seasar2のS2Daoや、iBATISなどの動的SQLフレームワークが存在していたため、始めは、S2Dao.NETを組み込む予定でしたが、いろいろ調査してみて、S2Container.NETと分離可能か?が良く解らなかったため、結局「
動的パラメタライズド・クエリ」の自作を行いました。
この判断は、後の、2-way-SQLの代替として、より正確なSQL定義検証が可能となる「
動的パラメタライズド・クエリ分析ツール」開発や「
D層自動生成ツール」開発時の動的SQL機能の拡張を容易にしたこと、The Seasar Projectの活動停止を考えると、結果的に吉と出たと考えています。
また、業務アプリケーションのドメインでO/Rマッパーの適合性があまり高くないということも本機能のニーズを押上ました。
<複数ブラウザ・ウィンドウ>
複数ブラウザ・ウィンドウ対応として「
業務モーダル・ダイアログ」、「
ブラウザ・ウィンドウ別Sessionスコープ」、「
不正操作防止機能」などの実装を行いました。
これらの実装は、「
フレームワーク側の実装」を見ると、難易度も高く、且つ、かなりの工数(恐らく3-5人月程度)を必要とするので、中小規模のスクラッチ開発にスクラッチ実装していくことは「殆ど不可能」と思いますが、Open棟梁の適用プロジェクトでは、これらの機能の実装を0コストで導入することを可能としました。
<多用なアーキテクチャへの対応>
当初の目的でもある、「
.NETのサポートする多種多様なアーキテクチャをサポートする。」を実現するために、
Windows Forms、バッチ(Console)、WPF / Silverlight、ASP.NET MVC、WebAPI、UWPなど、更に多様なPresentation層に対応するテンプレートが追加されていきました。
この際のキー・コンポーネントが以下の
P6 - 10の「
通信制御機能」で、
これにより、以下の
P20 - 23のような、リッチクライアントの3層C/S系アーキテクチャのサポートを拡充させることができました。
また、この「
通信制御機能」の設計のポイントとしては、「
異種透過性」の実現のため、よりスマートな設計に見える「
透過プロキシ」を採用しなかった点が挙げられます。
この「
異種透過性」サポートの取組は、ランタイムの異なる「
Silverlight / WinRT / UWP」のサポートを経て、現在は、「
SPA」や「
スマホ向けHybridアプリ、Nativeアプリ」など、「
Node.js製のCLI」と「
Visual Studio Code」などの任意のエディタを使用する新しい開発のサポートを可能にしています。
次回に続く。