31 votos

Cómo escribir una .Net aplicación que funciona tanto con SqlServer y Oracle (actualmente ese Sistema.De datos.OracleClient está en desuso)

véase también Sistema.De datos.OracleClient espacio de nombres interrumpido?

(En primer lugar, no se preocupe, el Sistema.De datos.OracleClient no está siendo eliminado por Microsoft, sin embargo no es en la versión de cliente de .net 4)

Este uso va a ser posible mediante el uso del Sistema.De datos.OracleClient, sin embargo, Microsoft ha decidido descartar OracleClient. (OracleClient es el ADO.NET proveedor de Oracle desarrollado por Microsoft y se incluye como una parte de el .NET Framework.)

Usted podría utilizar ODP.Net sin embargo, ¿desea su Servidor Sql server a los clientes a instalar ODP.Net? (¿Desea cualquiera de sus clientes a tener que instalar el software de Oracle?)

DataDirect no es una opción, ya que cuesta un brazo y una pierna; es posible que solo se trata de estar asequible si usted necesita para conectar un único servidor a un mainframe. Sin embargo no es una opción para esperar a todos los clientes a comprar.

Movimiento en forma de C# a Java no es una buena opción, ya que soy un programador de C# y el deseo de ser capaces de ganarse la vida!

Como la mayoría de los Isv que tiene que soportar múltiples RDBMS sólo necesitamos una solución que nos permite utilizar el pequeño subconjunto de Oracle que es el mismo como SqlServer. Por Lo Tanto, Del Sistema.De datos.OracleClient fue lo suficientemente potente como para nosotros.

(Tal vez deberíamos empezar a almacenar todos los datos en archivos planos, de modo que el cliente DBA parada tratando de decirnos cómo escribir software. Oracle Dba son los peores!)


Mi verdadera pregunta es ¿cómo puedo escribir .El software de RED que habla de Oracle que se nos libre de dolor a instalado como .NET software que se comunica con SqlServer. Tener que usar ODP.NET sólo hace que el cliente de oracle instalar aún más doloroso, con aún más a ir mal.

Si estaba usando JAVA me podría utilizar JDBC de tipo 4 conductores. Microsoft proporciona uno de SqlServer y Oracle provee una de Oracle. Sin embargo parece que Oracle quiere hacer .El uso de mosquiteros tan duro como sea posible y Microsoft quiere hacer de Oracle el uso de tan duro como sea posible.


Hasta ahora, la mejor opción parece devArt del dotConnect.

Sin embargo, estoy empezando a cuestionar el clima .NET es un buen sistema de desarrollo para ISV, ya que tarde o temprano siempre conseguir un cliente que exige el soporte de oracle. En el mundo de Java que parece tener este problema resuelto.


Parece que Oracle puede estar a punto de llevar a cabo un senible Totalmente Gestionado ADO.NET proveedor de themselfs incluso puede ser fácil de instalar! vemos aquí que las reclamaciones de Beta – 2011, para la Producción a Finales de 2011.

6voto

Christian Shay Puntos 847

EDIT: La gestión completa de los ODP.NET ya está disponible en la producción. Es muy pequeño (menos de 10 MB), y no depende de otros archivos. Usted puede obtener aquí:

http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html

Original respuesta:

Una manera fácil de asegurar que los requisitos de Oracle software del lado del cliente (incluyendo ODP.NET) está siempre disponible en la implementación de la máquina es integrarla con su aplicación. ODP.NET se ha hecho mucho más fácil incrustar ahora que XCOPY ODP.NET está disponible. Se puede descargar desde este enlace:

http://www.oracle.com/technology/software/tech/windows/odpnet/index.html

Con XCOPY ODP.NET, todo lo que usted necesita hacer cuando usted la implementación de la aplicación es la siguiente:

1) Copia de su solicitud a la máquina de destino

2) Ejecutar "install.bat" que copia un par de Oracle DLL a la máquina de destino (incluyendo ODP.NET y el Oráculo del lado del cliente (OCI) de software)

3) Ejecutar "configurar.bat", que hace un "gacutil" y actualiza el registro de la máquina de destino

4) Proveer su aplicación con conectar la información de la cadena. Usted puede utilizar el EZCONNECT cadena de conexión ("hostname@servicename") o usted (o su cliente) pueden compartir preexistentes sqlnet configuraciones de ajuste de la TNS_ADMIN registro de entrada de la variable de entorno o a punto a otro de Oracle casa que tiene sqlnet conectar alias ya configurado.

Eso es todo! Es realmente así de simple.

Espero que se tome una buena mirada en ODP.NET XCOPY en el enlace de arriba para ver por ti mismo lo fácil que es en estos días para incrustar ODP.NET con su aplicación.


Notas adicionales:

Si usted elige no embed ODP.NET con su aplicación, tanto en el caso de Microsoft OracleClient y en el caso de ODP.NET, se necesita adicionales de Oracle lado del cliente (OCI) software instalado en cualquier máquina de despliegue. La única diferencia entre los dos casos es que cuando usted está utilizando ODP.NET, también debe existir en la implementación de la máquina. La buena noticia es que un típico Oracle instalar en su máquina cliente se incluyen ODP.NET ya.

Ahora, si el equipo de destino ya ha ODP.NET instalado, usted no necesita hacer nada más. Usted necesidad justa de distribuir la aplicación. Si usted necesita para instalar ODP.NET mediante el instalador estándar, también puede descargar desde el enlace proporcionado arriba. El estándar ODP.NET instalar sólo toma unos minutos y configura todo para usted.

Y de nuevo, puede utilizar EZConnect conectar las cadenas para hacer de configuración de red de un pedazo de la torta, o el uso de la TNS_ADMIN registro de entrada de la variable de entorno o de tomar ventaja de los pre-existentes conectar alias que su cliente ya está acostumbrado a utilizar.

Espero que esto ayude,

Cristiano Shay

Oracle

Siéntase libre de dar su opinión sobre este y otros futuros características en nuestra función de solicitud del sitio web: http://apex.oracle.com/pls/apex/f?p=18357:46

5voto

Thomas Beck Puntos 932

Has mirado en alternativas de Oracle proveedores como devArt del dotConnect? Este controlador, como un ejemplo, es 100% de código administrado, es compatible con muchos avanzadas características de Oracle, proporciona el Marco de entidades de apoyo (que llegará algún día en ODP.NET estoy seguro).

Hay un montón de otras características (como ASP.NET modelo de proveedor de apoyo) que no llegamos hasta el ODP.NET 11g release. Bastante liberal de concesión de licencias y de precios razonables. También viene con su propio generador de perfiles, si recuerdo correctamente.

En sus pruebas, realiza de manera favorable en comparación con ODP.NET. Me gustaría señalar algo de código abierto, pero, en mi experiencia, una vez que hayas comprado en Oracle como base de datos, ya has aceptado el hecho de que usted será el que se establecen algo de dinero para su base de datos relacionados con las herramientas.

3voto

davewasthere Puntos 2210

Hay una gran diferencia entre ser obsoleto y ha de ser eliminado.

Si usted está usando sólo el subconjunto de la funcionalidad que es común a ambos SQL Server y Oracle, entonces usted debe estar bien en movimiento a través de ASP.Net 4.0 y continuar el programa de cómo lo hacen en la actualidad.

El uso de algo como EntitySpaces, dejaría de ser relativamente proveedor independiente. (utiliza OracleClient en DAL)

Totalmente de acuerdo con Philippe acerca de Oracle software de cliente de ser un dolor. He perdido la cuenta del número de veces que me la he instalado y odiaba a la experiencia. Me dan MySQL, SQLServer o incluso de Acceso en la preferencia.

(En realidad, retomo el Acceso de comentarios) :-)

3voto

Bob The Janitor Puntos 5526

Utilizar el "El Proveedor Patrón de Fábrica", que es básicamente el uso de una fábrica para dar un proveedor de datos que es completamente abstraído de distancia de la base de datos de métodos de petición en el que se usa aquí es una publicación de blog con el código de ejemplo que muestra cómo hacer esto también Jean-Paul Boodhoo en la Desmitificación de Patrones de Diseño de la Parte 1 en dnrtv.com muestra cómo así.

Esto es algo muy interesante todo esto básicamente usted tiene una fábrica que proporciona un método para obtener una conexión

public IDbConnection GetConnection()
{
     IDbConnection connection =  _frameworkDBProviderFactory.CreateConnection();
     connection.ConnectionString = _authenticationSettings.ConnectionString;            
     return connection;
}

a pesar de una interfaz de modo que usted puede llamar a cualquier tipo de Base de datos y que la conexión del objeto que implementa la interfaz IDbConnection (SQLServer, MySQL, Oracle, etc.) y simplemente funciona.

Por abstracción de lo que DB su uso incluso se puede intercambiar en tiempo de ejecución y su aplicación nunca se sabe, no es necesario para la conexión a un Orical DB, descargar el ODP.NETlo mismo con mysql connector implementar IDbConnection, y escribir el código en contra de la abstracción de la conexión.

2voto

RichardOD Puntos 19942

En adición a lo que otros han sugerido que usted podría considerar la posibilidad de utilizar el Proveedor de patrón y Oracle ODP.NET.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X