Версия Oracle ODP.NET - независимая альтернатива - PullRequest
3 голосов
/ 11 сентября 2010

Я внедряю приложение x64, подключаясь к Oracle.

Какой драйвер следует использовать, чтобы убедиться, что не имеет значения, какую версию клиента установил пользователь.

ИтакСейчас я создаю свои версии с драйвером ODP.NET для x64 и x86, но я беспокоюсь, что это не сработает, если у пользователя установлена ​​более старая / более новая версия клиента Oracle (ODP.NET).

Должен ли я перейти к драйверам OleDB или System.DataAccess, чтобы избежать этой проблемы, или проблемы не будет вообще?

PS: Я ранее использовал драйвер ODBC,но в x64 для этого есть известные ошибки, так что это не вариант.

Ответы [ 2 ]

2 голосов
/ 13 сентября 2010

О, радости Oracle ... Хорошо, в общем, я никогда не беспокоился о версиях x64, я просто скомпилировал свои программы исключительно для 32 бит, поэтому, если это жесткое требование, не все может подойти для вас.

Но, как я понял, независимость от версии заключалась в том, чтобы просто не использовать драйверы, установленные клиентом;вместо этого я развернул в своем каталоге приложений и библиотеки для Oracle Instant Client, и двоичные файлы ODP;ODP будет использовать файлы OCI (мгновенного клиента), если они доступны.Это был самый простой выход, и я рад, что я решил его так легко, хотя информация для этого была не совсем легко доступна.

С текущими версиями (по крайней мере, они были текущими, когда я в последний раз создавалприложение), 11g, сочетание ODP и OCI обеспечило совместимость с версиями 9-11.

Теперь, разумеется, OCI довольно большой (англоязычная версия меньше всего на 35 мегабайт, если память работает), но мне пришлось с этим смириться (развертывание не было большой проблемой)для меня).Кроме того, у меня была другая зависимость от библиотеки, размер которой уже составлял 50 МБ - большая часть - в сборках сериализации XML!Не заводите меня ...

Надеюсь, это поможет!

0 голосов
/ 13 сентября 2010

Боюсь, это не сработает.Какой бы драйвер вы ни использовали, прямо или косвенно используйте нативную OCI.DLL в рамках одного и того же процесса.И в вашем случае это должна быть 64-битная версия.Таким образом, ваше приложение не будет работать с 32-битным OCI.DLL.

Чтобы обойти это, у вас есть два варианта:

  1. Написать отдельное ответственное 32-битное приложениедля доступа к Oracle и каким-либо образом взаимодействовать с этим приложением.

  2. Внедрить 64-битную версию Java VM и получить доступ к Oracle через OJDBC (единственный вариант, независимый от OCI.DLL).

Но я думаю, это не очень реалистичные варианты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...