Utilisation des ressources Web dans ASP.NET 2.0

Exclusion de responsabilité du contenu obsolète de la base de connaissances

Cet article a été rédigé sur les produits pour lesquels Microsoft n’offre plus aucune prise en charge. Par conséquent, cet article est proposé « en l’état » et ne sera plus mis à jour.

Colonne vocale d’assistance d’ASP.NET

Utilisation des ressources Web dans ASP.NET 2.0

Pour personnaliser cette chronique selon vos besoins, nous souhaitons vous inviter à soumettre vos idées sur des sujets qui vous intéressent et des problèmes que vous voulez voir traités dans de futurs articles de la Base de connaissances et des chroniques Support Voice. Vous pouvez nous envoyer vos commentaires à l’aide de l’écran Ask For It . Il existe également un lien vers le formulaire au bas de cette colonne.

Introduction

Salut ! Je m'appelle Praveen Yerneni, et je suis responsable technique travaillant avec le groupe de support ASP.NET chez Microsoft. Dans l'article de ce mois-ci, je vais discuter des ressources Web et comment les implémenter dans votre application.

Si vous êtes un développeur qui travaille fréquemment avec des contrôles COM, vous pouvez trouver cet article utile car il vous aidera à résoudre certains des problèmes clés que vous pouvez rencontrer lors du développement de contrôles. Auparavant, dans Microsoft ASP.NET 1.1, si vous souhaitiez déployer des fichiers statiques tels que les fichiers .html, fichiers .css, les fichiers image et les fichiers de script à l'aide d'un contrôle COM, vous deviez créer un programme d'installation et regrouper ces fichiers avec le contrôle COM. Bien que cette procédure fonctionne, il affiche de nombreux problèmes lors du déploiement du contrôle. Par exemple, peut avoir des problèmes avec des conflits de version, assurez-vous que les fichiers images ont été déployées vers le même emplacement ou endommagés ou supprimés des fichiers statiques qui pourraient provoquer l’échec du contrôle.

Les ressources Web dans Microsoft ASP.NET 2.0 résout ces problèmes en permettant au développeur d’incorporer ces ressources dans l’assembly comme de .resources. Pour accéder à ces ressources statiques, vous pouvez simplement appeler une méthode dans le code du contrôle.

Fonctionnement des ressources Web

Ressources Web se fier à un gestionnaire spécial nommé WebResource.axd, qui est conçu pour récupérer des ressources de l’assembly et lui répondre au navigateur Web. Le type de gestionnaire de WebResource.axd est AssemblyResourceLoader.

Lorsqu’une demande arrive à partir du client de WebResource.axd, le gestionnaire recherche l’identificateur de ressource Web dans la méthode QueryString de l’objet de la demande . En fonction de la valeur de l’identificateur de ressource Web, le gestionnaire puis essaie de charger l’assembly qui contient cette ressource. Si cette opération réussit, le gestionnaire recherche de l’attribut d’assembly et de charger le flux de ressources à partir de l’assembly. Enfin, le gestionnaire capture les données à partir du flux de ressources et l’envoyer au client ainsi que le type de contenu que vous spécifiez dans l’attribut d’assembly.

L’URL WebResource.axd ressemble à ceci :
WebResource.axd?d=SbXSD3uTnhYsK4gMD8fL84_mHPC5jJ7lfdnr1_WtsftZiUOZ6IXYG8QCXW86UizF0&t=632768953157700078
Le format de cette URL est WebResource.axd?d=identificateur crypté& t =valeur datage. « d » est l’abréviation de la ressource Web demandée. Le « t » est l’horodatage pour l’assembly demandé, ce qui peut aider à déterminer si les modifications apportées à la ressource a été.

Plonger dans le code

Dans mon exemple, j’ai développé un contrôle COM qui est utilisé par une application Web d’ASP.NET pour présenter cette nouvelle fonctionnalité.

Contrôle de COM pour la ressource Web

Pour la création et l’incorporation d’une ressource Web, j’ai développé un contrôle COM (SimpleControl). Il dispose des ressources intégrées suivantes :
  • Deux fichiers nommés smallFail.gif et smallSuccess.gif d’image. Ces fichiers image sont utilisés pour les effets de substitution dans le contrôle et sont utilisés dans le code de contrôle.
  • Un fichier HTML nommé Help.htm. Ce fichier ne contient-elle pas de texte et uniquement pour la démonstration.
  • Un fichier JavaScript nommé MyScript.js. Ce fichier contient du code JavaScript qui montre également la fonctionnalité de remplacement pour obtenir une référence à une autre ressource incorporée dans le même assembly.
  • Un seul fichier .css est nommé MyStyleSheet.css. Cette feuille de style est ensuite consommée directement à partir de l’application Web d’ASP.NET.
Dans cet article, j’aborderai les parties qui sont requis pour les ressources Web.
Incorporer des ressources Web
Vous devez d’abord vous assurer que tous les fichiers statiques qui sont ajoutés au projet bibliothèque de contrôles Web dans Microsoft Visual Studio 2005 sont des ressources incorporées. Pour incorporer ces ressources, tout ce que vous avez à faire est d’ajouter ces fichiers à Visual Studio et ensuite de modifier les propriétés de ces fichiers pour que l’action de génération est définie sur Ressource incorporée.

Après avoir fait cela, vous devez également vous assurer que ces ressources sont référencées par l’attribut WebResource d’assembly dans le fichier AssemblyInfo.cs, comme illustré ci-dessous.
[assembly: WebResource("SimpleControl.Help.htm", "text/html")][assembly: WebResource("SimpleControl.MyStyleSheet.css", "text/css")]
[assembly: WebResource("SimpleControl.smallFail.gif", "image/gif")]
[assembly: WebResource("SimpleControl.smallSuccess.gif", "image/gif")]
[assembly: WebResource("SimpleControl.MyScript.js", "text/javascript", PerformSubstitution = true)]


L’attribut d’assembly WebResource a trois paramètres comme suit :
  • Ressource Web: le nom de la ressource qui est incorporé dans l’assembly
  • ContentType: type de fichier MIME de la ressource
  • PerformSubstitution: une valeur de type Boolean qui détermine si les autres URL de ressource Web qui sont référencés dans cette ressource sont analysées et remplacées par le chemin d’accès complet de la ressource
L’extraction de ressources Web
Pour l’obtention de la ressource Web, j’ai utilisé la méthode GetWebResourceUrl , qui est une méthode de la classe ClientScriptManager qui est généralement utilisée pour gérer des scripts clients. Cette méthode retourne une référence d’URL à la ressource côté serveur incorporée dans un assembly. La méthode GetWebResourceUrl accepte les deux paramètres suivants :
  • Type: le type de la ressource côté serveur
  • Nom de la ressource: le nom de la ressource côté serveur
Pour utiliser cette méthode, vous devez d’abord créer une instance de la classe ClientScriptManager et obtenir le type de la classe, comme indiqué ci-dessous.
ClientScriptManager cs = Page.ClientScript;            Type rsType = this.GetType();


Lorsque vous avez une instance de cette classe, vous devez appeler cette méthode et passer les paramètres appropriés comme indiqué ci-dessous, où créer un bouton de lien hypertexte et définir la méthode NavigateURL pour pointer vers une ressource HTML incorporée.
HyperLink hlHelpFile = new HyperLink();            hlHelpFile.NavigateUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.Help.htm");
hlHelpFile.Attributes.Add("onmouseover", "ChangeImage('image1','Red')");
hlHelpFile.Attributes.Add("onmouseout", "RollbackImage('image1','Green')");

this.Controls.Add(hlHelpFile);

Image imgTest = new Image();
imgTest.ImageUrl = cs.GetWebResourceUrl(rsType, "SimpleControl.smallFail.gif");
imgTest.ID = "image1";
hlHelpFile.Controls.Add(imgTest);


Dans le même code ci-dessus, j’ai également créé un bouton d’Image , et l’attribut ImageUrl est l’obtention de sa valeur à partir d’une autre ressource d’image .gif incorporé.
À l’aide de la fonction de Substitution
Une autre fonctionnalité utile de l’utilisation de ressources Web est la propriété PerformSubstitution de l’attribut WebResource , comme indiqué dans la section « L’incorporation de la ressources Web » ci-dessus. Cette fonctionnalité vous permet d’obtenir effectivement des ressources Web à l’intérieur d’une autre ressource incorporée. Si cette propriété est activée, le Gestionnaire de ressource Web analyser la ressource incorporée et remplacer la syntaxe de l’attribut d’assembly WebResource par des ressources réelles avant de servir la page.

Dans le code ci-dessus, vous remarquerez que le contrôle de lien hypertexte possède un événement côté client qui est nommé ChangeImage. Cette fonction ChangeImage se trouve dans un fichier de script. Voici le code de ce script.
function ChangeImage(imgControl,varcolor){   document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallSuccess.gif")%>';
document.getElementById('Label1').style.color = varcolor;
}

function RollbackImage(imgControl, varcolor){
document.getElementById(imgControl).src = '<%= WebResource("SimpleControl.smallFail.gif")%>';
document.getElementById('Label1').style.color = varcolor;
}

Ce fichier de script nommé MyScript.js est également une ressource incorporée dans le même contrôle COM. Et notez que j’utilise la méthode WebResource pour faire référence à une autre ressource incorporée dans le fichier de script.

En outre, pour vous assurer que ce fichier JavaScript est enregistré dans la page, j’utilise la méthode RegisterClientScriptInclude de la classe ClientScriptManager comme indiqué ci-dessous.
cs.RegisterClientScriptInclude("MyScript", cs.GetWebResourceUrl(rsType, "SimpleControl.MyScript.js"));

Utilisation du contrôle dans ASP.NET

Une fois que vous avez créé le contrôle COM avec succès, vous devez utiliser ce contrôle dans un projet ASP.NET de client. Pour ce faire, il vous suffit d’ajouter le contrôle à la boîte à outils dans ASP.NET. Puis vous pouvez ajouter le contrôle à un formulaire Web dans le concepteur.

Lorsque vous ajoutez le contrôle à la boîte à outils, le contrôle est enregistré pour vous et le code suivant est ajouté lorsque vous regardez la syntaxe HTML.
<cc1:MSButton ID="MSButton1" runat="server" strText="Problems?"></cc1:MSButton>
Dans mon contrôle COM, j’ai également inclus un fichier de feuille de style, j’utilise dans mon application ASP.NET. Pour accéder à cette feuille de style, vous devez ajouter un lien HtmlControl dans la page HTML et la valeur de la propriété runat server comme indiqué ci-dessous.
<link rel="Stylesheet"  id="lnkStyle" runat="server"  />
Après cela, vous pouvez définir par programme l’attribut Href de ce contrôle pour pointer vers l’attribut d’assembly WebResource dans l’événement Page_Load , comme illustré ci-dessous.
protected void Page_Load(object sender, EventArgs e)    {
//Get the name of the Web Resource.
String rsname = "SimpleControl.MyStyleSheet.css";

//Get the type of the class.
Type rstype = typeof(SimpleControl.MSButton);

// Get a ClientScriptManager reference from the Page class.
ClientScriptManager cs = Page.ClientScript;
lnkStyle.Href = cs.GetWebResourceUrl(rstype, rsname);
}


Lorsque vous exécutez le code, vous verrez un contrôle qui ressemble à ceci :
 small fail
Et sur le passage de la souris, le contrôle ressemblera à ce qui suit :
 small success
Lorsque vous cliquez sur ce lien, il vous prendra à la page d’aide, qui est incorporée dans le fichier d’assembly COM.

Conclusion

Ressources Web est une nouvelle fonctionnalité très utile dans ASP.NET 2.0. Vous pouvez utiliser cette fonctionnalité à votre avantage si vous l’utilisez avec prudence. De nombreuses techniques de mise en cache ont été utilisés afin de vous assurer que les ressources Web n’affectent pas les performances de l’application.

Dans ASP.NET 2.0, WebResource.axd est utilisée en interne par le.NET Framework de Microsoft pour récupérer des ressources incorporées. Par exemple, le.NET Framework utilise WebResource.axd pour récupérer le fichier de script WebUIValidation.js qui est utilisé pour les contrôles de Validation et pour récupérer le fichier de script Menu.js pour les contrôles de Menu .

Références

Pour plus d’informations, visitez les sites Web de Microsoft à l’adresse suivante :
Comme toujours, n’hésitez à soumettre des idées sur des sujets que vous souhaitez traités dans de futurs des colonnes ou dans la Base de connaissances à l’aide de la
Formulaire Ask For It .
Propriétés

ID d'article : 910442 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Microsoft ASP.NET 2.0

Commentaires