Le succès des applications ASP dépend généralement du compromis entre l'architecture et la conception. Compte tenu du large éventail de technologies ASP et de la complexité inhérente des applications actuelles, ce compromis est très difficile. Voici une brève introduction aux principes et à l'utilisation de l'ASP dans la mauvaise chaîne de nouvelles technologies.
L'établissement de conventions de dénomination et la normalisation de la structure du répertoire peut vous aider à améliorer considérablement la lisibilité et la maintenabilité de vos applications ASP. Bien qu'il n'y ait actuellement aucune norme formelle pour les applications ASP, de nombreux développeurs ont établi certaines façons courantes. Ici, je vais partager avec vous quelques façons plus générales.
Parce que la technologie ASP s'appuie sur des moteurs de script pour travailler et que les scripts ont la nature de ne pas être stricts de type, les conventions de dénomination sont également vagues. Dans les langues avec des types très stricts, les variables seront déclarées en fonction de leur type réel. Lors de l'utilisation de la technologie ASP, les variables sont généralement déclarées dans le code ASP dans la façon dont elles traitent les variables, plutôt que leur type de données réel. Par exemple, lorsque vous utilisez "Visual Basic (R) Scripting Edition (VBScript)", bien que toutes les variables VBScript soient variantes, vous déclarez l'indicateur de réussite comme bsuccess (B pour booléen) au lieu de VSuccess (v pour variant).
Le tableau suivant est quelques conventions de dénomination courantes.
Préfixe variable:
| Préfixe | Variables utilisées | Exemple variable |
|---|---|---|
| B ou BLN | Booléen | bsuccess |
| c ou cur | Devise | camount |
| D ou DBL | Double | dbantity |
| dt ou dat | Date et heure | dtdate |
| f ou flt | Flotter | fratio |
| L ou LNG | Long | lmillisecondes |
| I ou int | Entier | iCounter |
| s ou str | Chaîne | sombre |
| A ou ARR | Tableau | AuSers () |
| O ou OBJ | Objet com | opipeline |
Préfixe variable pour les objets de base de données:
| Préfixe | Variables utilisées | Exemple variable |
|---|---|---|
| CNN | Connexion | cnnpubs |
| premier | Record | RSSTAUTHORS |
| CMD | Commande | cmDemployee |
| FLD | Champ | FldlastName |
Utilisation de la plage et du préfixe:
| Préfixe | illustrer |
|---|---|
| g_ | Créé dans global.asa. |
| m_ | Pour les pages ASP ou dans les fichiers incluent, il est local. |
| (Pas de préfixe) | Variables non statiques, les préfixes sont locaux au processus |
Un article dans la base de connaissances (KB) "Q110264 Info: Microsoft Consulting Services Naming Conventions for Visual Basic" (en anglais) fournit un aperçu des conventions de dénomination.
Utilisez des structures d'annuaire si possible pour fournir un emplacement cohérent pour vos différents composants d'application. La structure de répertoire réelle de votre application dépend bien sûr de vous, mais il s'agit généralement de placer des images, des documents, des fichiers et des composants dans des répertoires distincts. Ce qui suit est un exemple de structure de répertoire d'application ASP simple.
Exemple de structure de répertoire:
/ Simpleaspapp / docs / images / incluse
Une bonne structure de répertoire vous permet d'appliquer sélectivement les autorisations NTFS. Vous pouvez également utiliser des chemins relatifs à partir d'une application ASP. Par exemple, vous pouvez utiliser le code suivant pour référencer le fichier include top.asp dans le répertoire incluse à partir de la page default.asp située dans le répertoire SimpleaspApp:
./includes/top.asp
Notez que l'extension de mon fichier inclue est .asp, pas .inc. Cela est fait pour des raisons de sécurité et utilise l'extension .asp (plutôt que. INC), et permet également le codage des couleurs dans Interdev visuel (R).
Pour d'autres conseils et conseils sur les applications ASP structurées, consultez l'article "Conventions ASP" (en anglais).
L'ASP s'exécutera sous le service. Lors de la conception d'une application ASP, vous facerez immédiatement aux environnements de sécurité et aux problèmes de thread que vous ne rencontrerez pas dans votre application de bureau. Dans un environnement de bureau, seule l'exécution unique s'exécute en tant qu'utilisateur interactif est généralement gérée et a accès au système de bureau actuel. Dans Internet Information Services (IIS), plusieurs threads clients dans différents environnements utilisateur sont simulés pour appeler votre application, et votre application est limitée au bureau "Système".
Qu'est-ce que cela signifie pour vous? Veuillez apprendre le mode de sécurité de l'IIS. Rappelez-vous également: ce n'est pas parce que quelque chose peut fonctionner correctement sous l'IDE Visual Basic ne signifie pas qu'il peut fonctionner en toute sécurité dans la technologie ASP. L'IDE Visual Basic ne simule pas avec précision l'environnement d'exécution. Les erreurs de conception courantes incluent l'utilisation de contrôles .OCX qui nécessitent des interfaces utilisateur dans la technologie ASP, en utilisant des composants qui ne sont pas sans danger pour les threads et en utilisant des composants qui nécessitent des contextes utilisateur spéciaux. L'un des problèmes les plus simples à éviter est d'essayer d'accéder à la clé de registre HKEY_CURRENT_USER (HKCU) à partir de l'application (par exemple, n'appelez pas les fonctions GetSetting and enregistreting de Visual Basic, qui dépendent toutes deux de HKCU). De même, n'apparaissez pas les cases de message ou d'autres boîtes de dialogue qui nécessitent que l'utilisateur interagisse avec Human-Computer.
Les articles suivants sont de très bons livres d'introduction sur les problèmes de sécurité et de vérification dans la technologie ASP:
ASP Technology fournit un service de représentation en générant une sortie HTML. En bref, il génère une interface utilisateur. Vous devez séparer la logique métier du script de représentation ASP. Même si vous n'utilisez pas de composants COM pour séparer la logique métier à partir du code ASP, au moins une logique métier séparée en fonctions et inclure des fichiers pour une maintenabilité, une lisibilité et une réutilisabilité améliorées. Vous pouvez également apprécier les avantages des méthodes de conception modulaires lorsque des problèmes de dépannage et d'isolement sont nécessaires.
L'appel des fonctions et des méthodes à l'intérieur du script peut éviter de gâcher le code et d'ajouter des structures aux applications ASP. L'exemple suivant montre comment séparer la logique en appels de méthode du code ASP:
lt;% main () myBizMethod () ... sub Main () getData () displayData () end sous%>
Ce principe peut être appliqué lors de l'utilisation de techniques qui incluent la fonctionnalité ASP. Voici un exemple de la façon d'utiliser ce principe lors de l'utilisation de Visual Basic WebClass:
Un problème commun est la transition du système de bureau vers le serveur. De nombreux développeurs ayant des antécédents de systèmes de bureau n'ont jamais été inquiets pour certains problèmes de serveur et le partage des ressources. Dans les applications de bureau traditionnelles, la connexion à un serveur est un processus long. Pour améliorer l'expérience utilisateur, il est généralement utilisé pour acquérir des ressources tôt et retarder la libération des ressources. Par exemple, de nombreuses applications seront toujours connectées à la base de données tout au long de son temps d'exécution.
Cette méthode fonctionne correctement dans les applications de bureau traditionnelles. La raison en est que le nombre d'utilisateurs est très clair, facile à contrôler, et le backend et le frontend sont étroitement connectés. Cependant, pour les applications Web actuelles, cette approche n'est plus possible car les ressources du serveur limitées seront confrontées à de plus en plus d'utilisateurs. Pour que votre application fasse face à l'augmentation des utilisateurs, vous devez obtenir des ressources le plus tard possible et libérer les ressources le plus tôt possible.
Le partage aide à augmenter l'efficacité de cette approche. Grâce au partage, plusieurs utilisateurs peuvent partager des ressources, avec le temps d'attente minimum et un impact minimal sur le serveur. Par exemple, lorsque vous travaillez avec une base de données, le partage de connexions ODBC et le partage des ressources OLEDB peuvent permettre de sélectionner des connexions à partir d'un pool partagé, minimisant les frais généraux de connexion à la base de données.
Pour plus d'informations sur le partage de l'ADO, voir "Pooling in Microsoft Data Access Components".
Bien que le protocole HTTP soit apatride, les développeurs ASP utilisent souvent le mécanisme de maintien de l'État intégré aux fonctions ASP. Par exemple, en utilisant l'objet d'application intégré à la technologie ASP, les ressources enregistrées par les développeurs peuvent être partagées par tous les utilisateurs de l'application. En utilisant des objets de session intégrés d'ASP, les développeurs enregistrent les ressources uniquement pour un seul utilisateur.
Bien qu'il semble que l'enregistrement d'informations dans un objet de session de technologie ASP soit un moyen très pratique de garder l'état, cette approche est trop chère et peut également être l'un des plus grands facteurs limitants de l'évolutivité. L'évolutivité d'une application est essentiellement la capacité de continuer à maintenir ses performances à mesure que le nombre d'utilisateurs augmente. Pour chaque utilisateur, l'objet de session consomme les ressources du serveur avant que la session ne soit expulsée ou abandonnée. Les sessions vous lient également à un serveur, ce qui limite votre capacité à profiter du cluster Web. Veuillez ne pas utiliser autant que possible les objets de session ASP pour la gestion de l'État. Si vous n'utilisez pas du tout une session, vous pouvez désactiver l'état de session de votre application Web (voir la documentation IIS). Sinon, vous pouvez désactiver l'état de session pour chaque page en utilisant l'énoncé suivant:
<% @ ActiveSessionState = False%>
Pour certaines données simples, vous pouvez utiliser le cookie QueryString ou un domaine de formulaire caché pour maintenir l'état entre les demandes ASP. Ensuite, pour des informations plus complexes, il est généralement recommandé d'utiliser une base de données. L'approche générale consiste à générer un identifiant unique, puis à l'envoyer à chaque client demandé et à l'enregistrer en tant que champ de formulaire caché. Dans les demandes ultérieures, cet identifiant unique est utilisé pour rechercher des informations d'état liées à l'utilisateur dans la base de données. Cette approche offre une évolutivité plus élevée et un code plus concis et clair.
Pour plus d'informations sur l'utilisation des cookies QuerryString et des champs de formulaire cachés, voir "Q175167 Howto: Valeurs persistantes sans sessions".
Lors de la création d'un objet technologique ASP, vous pouvez choisir
Voici une exception possible: lorsque vous passez un appel via un pare-feu, vous devrez peut-être appeler CreateObject au lieu de Server.CreateObject . Pour plus d'informations, voir "Q193230 - PRB: Server.CreateObject échoue lorsque l'objet est derrière le pare-feu" (anglais).
Assurez-vous que la gestion des erreurs est incluse dans toutes vos applications ASP. Et assurez-vous de fournir des informations de diagnostic utiles. Je n'ai rencontré personne se plaignant que le message d'erreur est trop explicatif. Assurez-vous d'inclure les informations suivantes dans le journal d'erreur:
Parce qu'il s'exécutera sous ASP, vous voudrez peut-être rédiger ces informations dans un fichier ou un journal des événements de NT. Vous pouvez également créer des journaux d'événements d'application qui enregistrent des événements d'application critiques à utiliser lors du diagnostic des erreurs d'application.
L'article suivant fournit des informations détaillées sur les techniques de traitement des erreurs:
Un navigateur n'est pas le moyen exact de le tester, il ne peut que vous montrer les utilisations possibles de l'application. Veuillez définir des objectifs de performance spécifiques pour votre application et utiliser des outils de chargement tels que l'outil de contrainte d'application Web pour les tests de contrainte. Vous devez décider par vous-même ce que votre environnement peut accepter, et voici quelques directives communes pour vous aider à démarrer votre processus de test:
Faites correspondre l'environnement de test avec l'environnement de course réel, et même le pare-feu ne fait pas exception. Cela semble cher, mais j'ai entendu des développeurs perdre leur emploi parce qu'ils ne prennent pas en considération le pare-feu.
Pour plus d'informations sur le test d'une application ASP à l'aide de l'outil de contrainte d'application Web, consultez "Je ne peux pas le souligner suffisamment - Test de chargement votre application ASP".
La protection de votre processus d'application avec l'isolement peut améliorer considérablement la stabilité du serveur. En ce qui concerne les applications Internet, les conséquences de l'utilisation de l'isolement peuvent varier considérablement: l'une est le crash de l'application et l'autre est le crash du serveur. La protection du processus IIS principal (inetinfo.exe) est généralement dans une liste de priorités plus élevée. Ceci est particulièrement important lorsque vous utilisez des composants.
La technique couramment utilisée pour protéger le processus d'ISS principal consiste à permettre aux applications Web d'exécuter dans leurs espaces de mémoire respectifs. Dans Internet Services Manager, vous pouvez définir cette option pour chaque Web. Bien que les ressources système qui sont submergées par les processus de réduction des processus auront un léger impact sur les performances, l'effet de protection sur les applications en vaut la peine. Sous IIS 4.0, vous pouvez exécuter votre application dans le processus et le processus (OOP). L'application OOP s'exécute dans la nouvelle instance mtx.exe. Sous IIS 5.0, vous pouvez utiliser d'autres options d'isolement. Le niveau d'isolement peut être défini sur "Low" (application in-processus pour inetinfo.exe), "Medium" (instance partagée dllhost.exe), ou "High" (instance non partagée de dllhost.exe).
En plus d'isoler les applications Web dans leur propre espace mémoire, vous pouvez également isoler les composants non fiables. Les composants qui ne sont pas fiables sont généralement des composants qui ne passent pas le temps de test dans l'environnement réel. Vous pouvez exécuter ces composants dans le package de serveur afin qu'ils s'exécutent dans la nouvelle instance dllhost.exe.
D'une manière générale, si vous souhaitez adopter une approche modérée entre les performances et la protection, ce qui suit est le chemin: exécutez l'application Web dans un état d'isolement "élevé" et exécutez les composants dans le package de la bibliothèque. Cette approche minimise les dépenses de rassemblement tout en offrant la protection la plus forte entre les processus.
Pour plus d'informations, consultez l'article "Fiabilité du serveur via l'isolement des processus".
Sous IIS 4.0, le groupe commun par défaut d'ASP est 10 threads pour chaque processeur géré par MTS. Dans IIS 5.0, la valeur par défaut est de 20. Cela signifie que chaque thread est une ressource potentiellement précieuse qui peut gérer plusieurs demandes client. Vous devez également éviter les méthodes de blocage qui peuvent survenir, comme passer de grands appels de base de données. Si vous avez un travail pour ce faire, cela empêchera rapidement l'application ASP de renvoyer la réponse au client, envisagez d'utiliser la fonction de mise en file d'attente. Par exemple, dans NT 4.0, le MSMQ peut être utilisé. Dans Windows 2000, des composants en file d'attente peuvent être utilisés.
Un inconvénient commun de ne pas stocker les composants d'appartements à thread unique (STA) dans la session est qu'ils remplissent les objets de base visuels dans la portée de la session. Il verrouillera l'utilisateur sur un thread, qui s'exécutera contraire à l'objectif de partager un groupe par threads. Les utilisateurs potentiels seront bloqués derrière les autres utilisateurs, en attendant que les threads qui créent leurs composants deviennent valides. Vous devez utiliser d'autres façons de concevoir des composants sans état qui peuvent être créés et détruits en fonction de chaque page.
Conseils rapides: assurez-vous que la fonction de débogage du script ASP est désactivée sur le serveur (à l'aide de Internet Services Manager). Si le débogage du script ASP est activé, l'exécution d'ASP sera verrouillée sur un thread.
Pour plus d'informations, veuillez vous référer à l'article suivant:
La création d'une application ASP nécessite un éventail considérable de connaissances. Un défi pour les applications ASP est qu'il n'y a actuellement aucune règle courante (qui fait également partie du plaisir). Un autre problème est que de nombreux développeurs se sont engagés dans le développement du système de bureau avant d'entrer en contact avec le développement Internet. En appliquant les règles ci-dessus dans vos efforts de développement ASP, vous avez l'espoir d'éviter les erreurs coûteuses et d'être en mesure de développer de très bonnes applications ASP.
JD Meier est né et a grandi sur la côte est des États-Unis. Suivant les conseils d'Horace Greeley, il est devenu ingénieur de support de développeur, en se concentrant sur les composants côté serveur, notamment MTS et ASP Technologies ainsi que les applications ADN Windows.
Grâce au contenu introduit par le rédacteur en chef du canal de la nouvelle technologie, je crois que tout le monde a une certaine compréhension. Si vous voulez en savoir plus de contenu technique, continuez à prêter attention à la chaîne New Technology 未分!