Compartir a través de


Uso de la herramienta de utilidad de metadatos serviceModel con el adaptador de BizTalk para la base de datos de Oracle

Puede usar la Herramienta de utilidad de metadatos serviceModel (svcutil.exe) para generar una clase de cliente WCF o un contrato de servicio WCF (interfaz) para las operaciones que expone el adaptador de Microsoft BizTalk para oracle Database. Después de ejecutar svcutil.exe para generar una clase de cliente WCF o un contrato de servicio WCF, puede incluir el archivo generado en el código y crear instancias de la clase generada o implementar un servicio WCF desde el contrato para realizar operaciones en la base de datos de Oracle.

El uso de svcutil.exe requiere que proporcione un URI de conexión que contenga credenciales. Dado que, de forma predeterminada, el adaptador de base de datos de Oracle deshabilita las credenciales en el URI de conexión, debe configurar svcutil.exe usar un enlace no predeterminado para el adaptador de base de datos de Oracle.

En las secciones siguientes se muestra cómo configurar svcutil.exe y cómo usar svcutil.exe para generar código de cliente WCF o un contrato de servicio WCF con el adaptador de base de datos de Oracle.

Configurar svcutil.exe para un enlace no predeterminado

Para configurar svcutil.exe para usar un enlace no predeterminado, debe crear una copia local de svcutil.exe y, a continuación, crear o modificar una copia local del archivo de configuración de svcutil.exe.config.

  1. Cree una carpeta y copie svcutil.exe en la nueva carpeta. Normalmente, puede encontrar svcutil.exe en la ubicación de instalación de Windows SDK, en concreto, C:\Archivos de programa\Microsoft SDKs\Windows\v6.0\Bin.

  2. Cree un archivo denominado svcutil.exe.config en la nueva carpeta.

  3. Agregue un enlace y un punto de conexión de cliente al archivo svcutil.exe.config. Debe ejecutar svcutil.exe desde la nueva carpeta para asegurarse de que se usa la configuración correcta.

    Importante

    El atributo name del punto de conexión de cliente debe especificar el esquema usado en el URI de conexión. Este valor distingue mayúsculas de minúsculas.

    <configuration>
      <system.serviceModel>
        <client>
          <!-- the name should match the required scheme of the WS-Metadata Exchange endpoint
          and the contract should be "IMetadataExchange" -->
          <endpoint name="oracledb"
                    binding="oracleDBBinding"
                    bindingConfiguration="OracleDBBinding"
                    contract="IMetadataExchange" />
        </client>
        <bindings>
            <oracleDBBinding>
                <binding name="OracleDBBinding" acceptCredentialsInUri="true" />
            </oracleDBBinding>
        </bindings>
    
      </system.serviceModel>
    
    </configuration>
    

Nota

Puede establecer cualquiera de las propiedades de enlace del adaptador de base de datos de Oracle en la configuración de enlace.

Para obtener más información sobre cómo configurar un enlace no predeterminado para svcutil.exe, vea el tema "Punto de conexión de metadatos seguros personalizado" en la documentación de WCF en https://go.microsoft.com/fwlink/?LinkId=96077.

Configurar un enlace no predeterminado para la operación POLLINGSTMT

Para usar svcutil.exe para crear un contrato de servicio WCF para la operación POLLINGSTMT, debe configurar el enlace no predeterminado para incluir la propiedad pollingStatement , además de acceptCredentialsInUri. PollingStatement debe contener la instrucción SELECT que tiene como destino la tabla. El adaptador de base de datos de Oracle usa esta propiedad para generar la clase que representa el conjunto de resultados fuertemente tipado que devuelve la operación POLLINGSTMT. En el ejemplo siguiente se muestra una configuración de enlace que se usa para generar un contrato de servicio WCF para una operación POLLINGSTMT destinada a la tabla /SCOTT/EMP.

<bindings>
    <oracleDBBinding>
        <binding name="OracleDBBinding" acceptCredentialsInUri="true"
                                   pollingStatement="SELECT * FROM EMP FOR UPDATE" />
    </oracleDBBinding>
</bindings>

Crear una clase de cliente WCF o un contrato de servicio WCF con svcutil.exe

Para usar svcutil.exe para generar código de cliente WCF o un contrato de servicio WCF (interfaz) para el adaptador de base de datos de Oracle, debe proporcionar un URI de conexión que especifique un punto de conexión de WS-Metadata Exchange (MEX) y la operación o las operaciones para las que desea svcutil.exe generar código. También debe especificar las credenciales de conexión para la base de datos de Oracle en el URI de conexión.

Nota

Para poder usar svcutil.exe con el adaptador de Oracle Database, debe configurarlo para usar un enlace no predeterminado; para obtener información sobre cómo hacerlo, consulte Configuración de svcutil.exe para el adaptador de base de datos de Oracle.

Especifique un punto de conexión MEX y operaciones de destino en el URI de conexión del adaptador de base de datos de Oracle de la siguiente manera:

  • Debe incluir el parámetro "wsdl" en el query_string. Si es el primer parámetro de la query_string, se especifica justo después del signo de interrogación (?). Si no es el primer parámetro, debe ir precedido de una y comercial (&).

  • Debe seguir el parámetro "wsdl" por uno o varios parámetros "op". Cada parámetro "op" está precedido por una y comercial (&) y especifica el identificador de nodo de una operación de destino.

    En los tres ejemplos siguientes se muestra cómo dirigirse a varias operaciones mediante svcutil.exe.

    En este ejemplo se crea una clase de cliente WCF para una operación Insert en la tabla /SCOTT/EMP.

    .\svcutil "oracledb://User=SCOTT; Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert"

    En este ejemplo se crea una clase de cliente WCF para las operaciones Insertar y Eliminar en la tabla /SCOTT/EMP.

    .\svcutil "oracledb://User=SCOTT; Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Insert& op=http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Table/EMP/Delete"

    En este ejemplo se crea un contrato de servicio WCF para la operación POLLLINGSTMT. (Para usar svcutil.exe para generar un contrato de servicio WCF para la operación POLLINGSTMT, debe configurar un enlace no predeterminado para svcutil.exe que incluya una instrucción de sondeo).

    .\svcutil "oracledb://User=SCOTT; Password=TIGER@ADAPTER?wsdl&op=http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT"

Importante

Debe colocar el URI de conexión entre comillas en la línea de comandos. De lo contrario, svcutil.exe intenta recuperar metadatos para las operaciones que el adaptador de base de datos de Oracle no admite. Los resultados de este intento no están definidos.

De forma predeterminada, svcutil.exe coloca el código generado en el archivo output.cs; Sin embargo, puede cambiar el nombre del archivo de salida y muchas otras opciones que svcutil.exe usa estableciendo modificadores de línea de comandos. Para obtener más información sobre las opciones que admite svcutil.exe, vea el tema "ServiceModel Metadata Utility Tool (Svcutil.exe)" en la documentación de WCF en https://go.microsoft.com/fwlink/?LinkId=72777.

Svcutil.exe no proporciona la capacidad de buscar operaciones (por ejemplo, mediante caracteres comodín). Debe especificar explícitamente los identificadores de nodo para las operaciones específicas de destino. No se pueden especificar identificadores de nodo que solo hacen referencia a categorías. Para obtener más información sobre los identificadores de nodo que muestra el adaptador de base de datos de Oracle, consulte Identificadores de nodo de metadatos.

El complemento Agregar referencia del servicio adaptador de Visual Studio proporciona funcionalidades avanzadas de exploración y búsqueda que pueden simplificar considerablemente la generación de una clase de cliente WCF y un contrato de servicio WCF. Para obtener más información sobre el complemento agregar referencia de servicio de adaptador, consulte Generación de un cliente WCF o un contrato de servicio WCF para artefactos de la solución de base de datos de Oracle.

Consulte también

Mensajes y esquemas de mensaje para el adaptador de BizTalk para la base de datos de Oracle