Compartir a través de


Procedimiento para mejorar el rendimiento de la solución de Servicios de conectividad empresarial cuando se usa la memoria caché

Última modificación: miércoles, 30 de junio de 2010

Hace referencia a: SharePoint Server 2010

En este artículo
Uso de un campo de versión para reducir al mínimo los viajes al origen de datos externos
Habilitación de asociaciones solo si son absolutamente necesarias
Uso de dos suscripciones en vez de una sola cuando se necesitan datos relacionados
Especificación de los elementos para sincronizar mediante el uso de identidades explícitas en la suscripción.
Especificación de filtros para reducir la cantidad de datos que descarga la aplicación cliente
Ejemplo

Cuando diseñe una solución de Servicios de conectividad empresarial que usará la memoria caché, puede tener en cuenta los siguientes procedimientos recomendados para aprovechar al máximo la memoria caché y garantizar el rendimiento óptimo de la aplicación:

  • Use un campo de versión, si hay uno disponible, para reducir al mínimo los viajes a la aplicación externa.

  • Habilite asociaciones solo si la aplicación las necesita y asegúrese de que los usuarios finales no habilitan asociaciones por error.

  • Si necesita datos relacionados, considere el uso de dos suscripciones en vez de una sola suscripción con una asociación de suscripción.

  • Especifique los elementos para sincronizar mediante el uso de identidades explícitas en la suscripción.

  • Especifique filtros para reducir la cantidad de datos que descarga la aplicación cliente.

Veamos cada uno de los procedimientos recomendados anteriores en detalle.

Uso de un campo de versión para reducir al mínimo los viajes al origen de datos externos

Mediante el uso de un campo de versión en el origen de datos externos, se pueden reducir en gran medida las llamadas al origen de datos externos. Un campo de versión puede ser un campo de número incremental que denote la versión de la instancia de la entidad o una marca de tiempo LastModified que especifique cuándo se actualizó por última vez la instancia de la entidad en el origen de datos externos. Si este campo está disponible, debería ser parte del parámetro de devolución de los métodos Finder y SpecificFinder en el modelo. Si hay disponible un campo de versión, el proceso de sincronización obtiene tanto el identificador como la versión de la aplicación externa y solo realiza llamadas a SpecificFinder si la versión es diferente de la que está en la memoria caché.

Habilitación de asociaciones solo si son absolutamente necesarias

Si una suscripción contiene asociaciones habilitadas, el proceso de sincronización rellena la memoria caché con las instancias de la entidad relacionadas. Para ello, realiza la misma cantidad de llamadas a instancias del método Associate que el número de instancias de la entidad presentes en la memoria caché para esta suscripción. Devuelve los identificadores de las instancias de la entidad relacionadas. A continuación, llama al método SpecificFinder en cada uno de los identificadores devueltos para capturar el resto de los campos. Por lo tanto, solo debería habilitar asociaciones si son absolutamente necesarias, ya que representan una gran sobrecarga en la memoria caché y pueden afectar considerablemente al rendimiento de la aplicación.

Uso de dos suscripciones en vez de una sola cuando se necesitan datos relacionados

Como se mencionó en el tema anterior, las asociaciones agregan una gran sobrecarga a la memoria caché y pueden afectar considerablemente al rendimiento de la aplicación. Si necesita datos relacionados en la aplicación, considere la posibilidad de crear dos suscripciones, una para los clientes y otra para los pedidos, en vez de usar asociaciones de suscripción. Esto reducirá el número de llamadas a la aplicación externa y aumentará el rendimiento de la aplicación.

Especificación de los elementos para sincronizar mediante el uso de identidades explícitas en la suscripción.

Si sabe exactamente qué elementos desea sincronizar, simplemente puede agregar sus identidades a la suscripción de forma individual. Este procedimiento es mucho más fácil de hacer mediante programación, ya que se debe especificar la identidad serializada en el archivo XML de suscripción.

Para obtener la identidad serializada, cree una instancia de un objeto Identity con los valores de identificador adecuado y llame al método Serialize. Para obtener más información, vea la documentación de Identity.Serialize().

Una vez que tenga la cadena serializada de la identidad, agréguela a una etiqueta <Identity> dentro de la etiqueta <Identities>, como se muestra en un ejemplo más adelante en este tema (vea Ejemplo).

Especificación de filtros para reducir la cantidad de datos que descarga la aplicación cliente

La forma obvia de optimizar la sincronización es reducir la cantidad de datos que descarga el cliente y el método más sencillo para hacerlo es mediante el uso de filtros. Los filtros admitidos por el marco de sincronización que se pueden usar para reducir el número de elementos descargados son los filtros Wildcard, Comparison y Limit. Por ejemplo, puede usar un filtro Wildcard para descargar todos los empleados cuyos nombres empiezan con la letra "M", usando "M *" como valor del filtro. O bien, puede seleccionar todos los clientes que tienen el código postal "98052" mediante un filtro de comparación. Se puede usar un filtro Limit para limitar el número de productos a 100.

Ejemplo

El siguiente es un ejemplo de una suscripción cuyas identidades explícitas están por encima de 11003 y 11020, y de un filtro que devuelve sólo clientes con identificadores de cliente superiores a 11050.

<?xml version="1.0" encoding="utf-8"?> 
<Subscription LobSystemInstanceName="AdventureWorksContosoLOBInstance" 
    EntityNamespace="AdventureWorksContoso" EntityName="Customer" 
    Name="AdventureWorksContosoCustomerSubscription" View="GetCustomerById" 
    IsCached="true" RefreshIntervalInMinutes="360" 
    xmlns="https://schemas.microsoft.com/office/2006/03/BusinessDataCatalog"> 
  <Identities> 
    <Identity>i+yoAAA==</Identity> 
    <Identity>iDCsAAA==</Identity> 
  </Identities> 
  <Queries> 
    <Query Name="AdventureWorksContosoCustomerQuery" 
        MethodInstanceName="GetCustomers" 
        DefaultDisplayName="Customer Read List" 
        RefreshIntervalInMinutes="180" IsCached="true" Enabled="true"> 
      <FilterValues> 
        <FilterValue FilterDescriptorName="MinCustomerId" FilterIndex="0" 
            Type="System.Int32">11050</FilterValue> 
      </FilterValues> 
    </Query> 
  </Queries> 
</Subscription> 

Nota

Algunas consideraciones importantes:

  • Debe definir los filtros que usa el archivo de suscripción en el modelo BDC y el sistema externo debe admitirlos.

  • Además, al actualizar un modelo BDC existente de forma manual, debe aumentar la versión del tipo de contenido externo que se modificó para garantizar que los cambios no se pasan por alto durante la implementación.