Identification de l'état d'exécution
Le protocole HTTP (Hypertext Transfer Protocol) est un protocole sans connexion et sans état, ce qui signifie qu'il n'indique pas automatiquement si des requêtes différentes proviennent du même client ou si une seule instance de navigateur continue d'afficher activement une page ou un site. Les sessions créent une connexion logique pour maintenir l'état entre le serveur et le client sur HTTP. Les informations spécifiques à l'utilisateur relatives à une session particulière sont appelées l'état de session.
La gestion des sessions implique de mettre en corrélation une requête HTTP avec d'autres requêtes précédentes générées à partir de la même session. Sans gestion des sessions, ces requêtes apparaissent non liées pour le service Web Report Server en raison de la nature sans connexion et sans état du protocole HTTP.
Reporting Services n'expose pas un concept holistique de l'état de session tel que celui qui est exposé par ASP.NET. Toutefois, lors de l'exécution de rapports, le serveur de rapports maintient l'état entre les appels de méthode sous la forme d'une exécution. Une exécution permet à l'utilisateur d'interagir de plusieurs façons avec le rapport, notamment en chargeant le rapport à partir du serveur de rapports, en définissant des informations d'identification et des paramètres pour le rapport et en effectuant son rendu.
Pendant qu'ils communiquent avec un serveur de rapports, les clients utilisent l'exécution pour gérer l'affichage des rapports et la navigation des utilisateurs vers d'autres pages d'un rapport, ainsi que pour afficher ou masquer certaines sections d'un rapport. Une exécution unique existe pour chaque rapport que l'application cliente exécute.
En général, la durée de vie d'une exécution commence lorsqu'un utilisateur accède à un navigateur ou à une application cliente et qu'il sélectionne un rapport à afficher. L'exécution est ignorée à l'issue d'un court délai d'attente une fois que la dernière requête a été reçue (le délai d'attente par défaut s'élève à 20 minutes).
Du point de vue d'un service Web, la durée de vie commence lorsque les méthodes LoadReport, LoadReportDefinition ou Render du service Web Report Server sont appelées. L'application peut utiliser d'autres méthodes pour manipuler l'exécution active (par exemple, définir des paramètres et des sources de données). L'exécution est ignorée à l'issue d'un court délai d'attente une fois que la dernière requête a été reçue (le délai d'attente par défaut s'élève à 20 minutes).
Une application conserve une trace de plusieurs exécutions actives entre des appels des méthodes Render et RenderStream du service Web en enregistrant la propriété ExecutionID, laquelle est retournée dans l'en-tête SOAP des méthodes LoadReport et LoadReportDefinition.
Le diagramme suivant illustre le chemin d'accès de traitement et de rendu des rapports.
Pour prendre en charge les fonctions décrites ci-dessus, la méthode de rendu SOAP a été divisée en plusieurs méthodes qui comprennent des phases d'initialisation de l'exécution, de traitement et de rendu.
Pour effectuer le rendu d'un rapport par programme, vous devez :
charger le rapport ou la définition de rapport à l'aide des méthodes LoadReport ou LoadReportDefinition ;
vérifier si le rapport a besoin d'informations d'identification ou de paramètres en vérifiant les valeurs des propriétés CredentialsRequired et ParametersRequired de l'objet ExecutionInfo retourné par les méthodes LoadReport ou LoadReportDefinition ;
définir, si nécessaire, les informations d'identification et/ou les paramètres à l'aide des méthodes SetExecutionCredentials et SetExecutionParameters ;
appeler la méthode Render pour effectuer le rendu du rapport.
Lorsqu'un rapport est en session, le rapport sous-jacent stocké dans la base de données du serveur de rapports peut changer. Par exemple, la définition de rapport peut changer, le rapport peut être supprimé ou déplacé et les autorisations des utilisateurs peuvent changer. Si le rapport est dans une session active, il n'est pas affecté par les modifications apportées au rapport sous-jacent (autrement dit, le rapport stocké dans la base de données du serveur de rapports).
Vous pouvez également gérer une session de rapport à l'aide de commandes d'accès URL. Pour plus d'informations, consultez Gestion de sessions de rapport à l'aide d'une URL.
Voir aussi