Modèle objet du cache
Dernière modification : jeudi 30 septembre 2010
S’applique à : SharePoint Server 2010
Microsoft Business Connectivity Services (BCS) fournit un modèle objet public, l’espace de noms Microsoft.BusinessData.Offlining dans Microsoft.SharePoint.dll, qui permet d’utiliser le cache et de rechercher et de résoudre des erreurs.
L’extrait de code suivant montre comment énumérer les éléments d’un type de contenu externe dans le cache client.
RemoteSharedFileBackedMetadataCatalog catalog = new RemoteSharedFileBackedMetadataCatalog();
INamespacedEntityDictionaryDictionary entDictDict = catalog.GetEntities("*");
foreach (INamedEntityDictionary entDict in entDictDict.Values)
{
foreach (IEntity entity in entDict.Values)
{
entityDictonary.Add(entity.Name, entity);
}
}
IEntity entity = entityDictonary[0];
IEntityInstanceEnumerator instanceEnumerator = entity.FindFiltered(
entity.GetDefaultFinderFilters(),
entity.GetMethodInstances(MethodInstanceType.Finder)[0].Value.Name,
entity.GetLobSystem().GetLobSystemInstances()[0].Value,
OperationMode.CachedWithoutRefresh);
DataTable dt = new DataTable();
string finderName = entity.GetMethodInstances(MethodInstanceType.Finder)[0].Value.Name;
IView v = entity.GetFinderView(finderName);
foreach (IField f in v.Fields)
{
dt.Columns.Add(new DataColumn(f.Name, Type.GetType(f.TypeDescriptor.TypeName)));
}
while (instanceEnumerator.MoveNext())
{
IEntityInstance iei = instanceEnumerator.Current;
DataRow dr = dt.NewRow();
foreach (IField f in v.Fields)
{
dr[f.Name] = iei[f.Name];
}
dt.Rows.Add(dr);
}
return dt;
L’extrait de code suivant montre comment faire une actualisation du cache par programmation à partir d’une application cliente. Lorsqu’il est exécuté, ce code démarre le service BCSSync, s’il n’est pas déjà en cours d’exécution, et demande une actualisation du cache client BCS. Cet extrait de code suppose qu’une souscription de cache est déjà configurée pour le type de contenu externe référencé. Remplacez <EntityNamespace>, <EntityName>, <ViewName> et <SubscriptionName> par des valeurs valides provenant des fichiers de modèle et de souscription.
RemoteOfflineRuntime offlineRuntime = new RemoteOfflineRuntime();
ISubscriptionManager subManager = offlineRuntime.GetSubscriptionManager();
ISubscription sub = subManager.GetSubscription("<EntityNameSpace>", "<EntityName>", "<ViewName>", "<SubscriptionName>");
sub.RequestRefresh(true);
Les principaux points à prendre en compte lorsque vous travaillez avec le cache et le modèle objet sont présentés ci-dessous.
Dans le modèle objet d’exécution, au niveau de l’instance de méthode, Business Connectivity Services vous permet de transmettre un mode d’opération qui indique au runtime la façon dont vous souhaitez éventuellement utiliser le cache. Business Connectivity Services prend en charge deux types de modes d’utilisation du cache.
En ligne : si l’application est configurée pour le mode En ligne, le cache n’est pas utilisé. Tous les appels à la source de données externe, tels que les appels de lecture ou de mise à jour, sont routés directement vers la source de données externe via le runtime Business Data Connectivity (BDC).
Mis en cache : si l’application est configurée pour le mode Mis en cache, le cache est utilisé. Le cache est rempli avec les instances d’entités de la source de données externe au moment du déploiement et les données sont actualisées à partir de la source de données externe à intervalles spécifiques. Les opérations ne sont pas routées immédiatement vers la source de données externe, mais sont routées vers le cache. Celui-ci place ces opérations dans la file d’attente d’opérations et les exécute une par une.