本記事では、Oracleが提供する.NETプラットフォーム開発向けのミドルウェアやツールを使って、.NET環境でOracleアプリケーション開発を効率的に行うためのノウハウを解説する。(編集部)
Oracle Database 10g Release 2では、データベースのストアド・プロシージャ/ファンクション(以下、ストアド・プロシージャ)を.NET準拠言語であるVB.NETやC#で作成できるようになりました。これらの.NET準拠言語で作成されたストアド・プロシージャを「.NETストアド・プロシージャ」と呼びます。そして、これを実現するのがOracle Database Extensions for .NET(以下、ODE.NET)です。SQL Server 2005では、SQL CLRという機能が追加されていますが、これと同等の機能になります。
.NETストアド・プロシージャの開発は当然Visual Studio .NET(以下、VS.NET)で行いますし、ビルドした.NETアセンブリの配布もVS.NETからシームレスに行うことが可能です(図1)。
Oracleデータベースのストアド・プロシージャとしては、PL/SQLと呼ばれるOracle独自の開発言語を使用するのが一般的です。PL/SQLはSQLトランザクション処理に特化した開発言語であるため、データアクセスがメインのロジックではPL/SQLで開発されたストアド・プロシージャが適しています。しかし、データ取得後の加工・計算、ローカルファイルの操作などが多い場合、.NETストアド・プロシージャを使用するメリットは十分にありますし、何より使い慣れた.NET準拠言語でストアド・プロシージャを作成できることには大きなメリットがあるといえるでしょう。
.NETストアド・プロシージャに限りませんが、アプリケーションではなく、ストアド・プロシージャとして、ロジックをデータベース・サーバに実装することのメリットは以下のようなものになります。
すべてのロジックをアプリケーション側で実装するのではなく、データベース・サーバに集約することで、パフォーマンスの向上やセキュリティの強化を図ることが可能となります。さらにODE.NETによって、ストアド・プロシージャの開発は.NET準拠言語で行えます。これによって、アプリケーションの開発とストアド・プロシージャの開発を同じ言語でできるようになり、開発者の作業効率を上げることが可能となりました。
ODE.NETは図2のようなアーキテクチャにより動作します。
Oracleデータベースでは以前から、Cなどで作成されたプロシージャを外部プロシージャとしてデータベースから実行することが可能でしたが、Oracle Database 10g Release 2からは、外部プロシージャとして動作するCLRのホスト機能を提供することで.NET準拠言語を使用して作成されたプロシージャの実行を可能としています。
また、.NET準拠言語以外のCやJavaなどの外部プロシージャでは、データベースにデプロイするために、LIBRARYの作成や呼び出しの窓口となるPL/SQLラッパーを手動で準備する必要がありました。しかし、.NET準拠言語で作成された.NETアセンブリは、VS.NETから簡単にOracleデータベースにデプロイすることが可能であり、それを呼び出すPL/SQLラッパーも自動的に作成されます。
作成された.NETストアド・プロシージャは、通常のストアド・プロシージャと同様に、SQL文内や、.NETアプリケーションから呼び出すことが可能となります。(次ページへ続く)
Copyright © ITmedia, Inc. All Rights Reserved.