misc.log

日常茶飯事とお仕事と

ODP.NETと.NET Framework 4.0

.NET Framework 4.0に対応したODP.NET(Oracle Data Provider for .NET)は、Oracle 11g対応のODP以降しか無いのですね。10g用として公開されているODP.NET(ODAC 10.2.0.2.21 に含まれるもの)は、.NET Framework 1.1と2.0用。

では、以下の疑問はどう解決すればいいのだろうかねぇ。

  • ODAC 11.X以降でOracle Database 10gに接続しちゃってOK?
  • ODPだけ10g/.NET Framework 2.0用を用いるけど、アプリは.NET 4.0でも問題ない?

11g用のODP.NETをOracle Database 10g用として使う

ここに「ODAC 11.2.0.1.2に含まれるODP.NETは10.xバージョンのOracle Databaseに接続できる」と書いてありますが、それはそのまま鵜呑みしていいのでしょうか。元ネタというかOracleの資料をきちんと読む必要がありますね。

ODP.Net for framework 4.0 for Oracle 10g
https://forums.oracle.com/thread/2314339

In-Proc SxSで.NET FW 2.0用のODP.NETを使う

.NET Framework 4.0では、1つのプロセス内で複数のランタイムを利用する「インプロセス サイドバイサイド(In-Proc SxS)」という機能を利用することができます。

CLR徹底解剖/インプロセスサイドバイサイド
http://msdn.microsoft.com/ja-jp/magazine/ee819091.aspx

これを利用すれば、.NET Framework 4.0で動くメインプログラムから、.NET Framework 2.0で動くアセンブリを呼び出すことも……多分できるはず。ODP.NETのバージョンを上げるとなると、「多分大丈夫だろうけど…」一通りのDBアクセス関連の処理は全部洗い直す必要がありそうですが、SxSを使えば、そこまで大がかりなテストは不要になるかもしれません。

どっちがいいのかなぁ。