TransmitFile vs WriteFile en asp.net et c#

 
L’utilisation de WriteFile pour l’enregistrement d’un fichier sur le serveur ou le téléchargement d’un fichier via une page web pose apparemment des problèmes lorsque le fichier est trop volumineux et que la connexion du client n’a pas un débit important.
WriteFile mets les données du fichier transmit au client dans un buffer (en mémoire) géré par le processus w3wp.exe, utilisé pour le site web. Dans ce cas un seul processus gère le site web et une limite de mémoire avant recyclage a été configurée pour éviter les saturations de mémoire et ainsi recycler régulièrement le processus. Mais cette configuration couplée à WriteFile coupe la connexion lors du téléchargement car la mémoire dépasse  la quantité de mémoire maximale autorisée. Et il est impossible au navigateur client de se recnnecter au serveur sur le même thread qui était occupé à transmettre le fichier
Continuer la lecture de « TransmitFile vs WriteFile en asp.net et c# »

Mon livre : avancement sur le développement asp.net 4.0 et c#

Enfin presque un an de labeur et enfin presque au bout, la construction d’un service en ligne par l’exemple : gestion documentaire et des différents espaces : administrateur, utilisateur et éditeur.

Il est bien de préciser que la construction de cette gestion documentaire est utilisée pour illustrer la conception d’un service en ligne dans un cadre pédagogique. Il est entendu qu’une gestion documentaire peut être très complète dans sa gestion des flux, des versions et des cycles de vies des documents et qu’il est difficile de tout intégrer dans un ouvrage. ces éléments sont donc évoqués et ainsi que toutes les évolutions possibles pour compléter le service et en faire un vrai service en ligne.

Sortie prévue en septembre 2011.

Mise à jour le  08/09/2011 voilà l’ouvrage est sortie aux éditions ENI

Production d’un livre sur l’asp.net

Je commence à écrire un livre dans lequel je mettrais en place de façon pédagogique un service en ligne en prenant comme exemple une gestion documentaire. C’est un énorme chantier mais qui me tiens à cœur et qui me permettra d’expliquer ma façon de travailler au quotidien.

Treeview et performance

Le composant Treeview de Visual studio est très complet car on peut suffisamment le customiser pour changer toute son apparence. On peut également l’utiliser avec des méthodes POST ou GET ce qui est très utile. Il a une fonction collapse qui permet d’ouvrir tous les nœud sans aller-retour serveur. Sans écrire une seul ligne de code javascript en déposant seulement le composant et en travaillant sur le code c# il se suffit à lui-même.

Mais il a 2 défauts :

– Le 1er est de ne pas pouvoir fermer les nœuds précédent après avoir cliqué sur le dernier nœud ce qui provoque un manque de clarté de l’arborescence.

– Son 2ème défaut est qu’il se construit à l’ancienne avec des tables imbriquées ce qui le rend – inutilisable – lorsque les rubriques sont trop nombreuses sur un Intranet par exemple.

Donc à chaque problème sa solution

1. Il faut utiliser l’adapter friendly css

a. http://www.asp.net/cssadapters/ et http://www.asp.net/cssadapters/TreeView.aspx

b. http://www.techheadbrothers.com/Astuces.aspx/activer-css-friendly-control-adapters-code

2. Pour le 2ème point charger les nœuds filles au fil des ouvertures manuelles par les utilisateurs.

La dernière solution est de prendre des composants payants qui sont plus aboutis que les composants de bases comme ceux d’ Obout

Asp.Net Membership et sessions anonymes

Après avoir développé énormément sur Asp.net et sql serveur, je m’aperçois qu’il y a un défaut d’optimisation au niveau du système de gestion des membres sur la base de données sql : Des sessions anonymes engorgent la base de données qui gonfle à vue d’œil. Plus il y a de trafic plus la base croit c’est un vrai problème car rien n’a été prévu pour remédier à cela. On peut effectivement supprimer des profils non utilisés depuis un certain temps mais la base une fois qu’elle a prise une certaine taille elle la conserve. Comme il y a une solution à tout il faut prendre aussi  la casquette d’administrateur SQL Serveur et prévoir des tâches de travail de maintenance en supprimant régulièrement ces profils anonymes inutiles.

Voici un lien qui explique de façon précise le problème et donne une solution (Omar al Zabir s’attache particulièrement à la performance) : solution

Je ne vais pas vous donner ma solution car c’est finalement à peu près la même que celle d’Omar.

L’autre point qui peut altérer la performance est l’utilisation à outrance des Unique identifier dans le système SQL de gestion des membres mais là malheureusement on ne peut rien y faire (enfin à ma connaissance).

L’Active Directory et l’Asp.net

Après avoir passé beaucoup de temps à découvrir l’ADAM, le protocole Ldap et l’installation de la liaison de l’Active Directory avec Asp.Net, je vous transmets un bref retour d’expérience. Je dois mettre en place un Active Directory avec Asp.Net.

Pour cela je vais décrire brièvement les difficultés rencontrées Le plus simple est d’installer l’ADAM (Active Directory Application Mode) de préférence sur un serveur mais fonctionne très bien sur une station de travail. Viens ensuite le paramètre de l’AD. Une fois finie vous passez au paramétrage de votre site en mode Active Directory cela se passe surtout dans le web.config. Ensuite dans le code tout le système de gestion de membre se gèrent comme d’habitude c’est là tout l’intérêt. Attention car certaine données ne sont pas accessible via l’AD comme la date d’activité. Vous pouvez tester si le mode AD est activé pour basculer sur un autre système si nécessaire.

 

Voici quelques liens qui pourront vous servir :

Utiliser C# et Active Directory

How to: Enable or Disable User Accounts in Active Directory Domain Services

Authentification Active Directory depuis ASP .NET

Introduction à Active Directory Federation Services à destination des développeurs

 

Je prendrais plus de temps à vous expliquer en détail le paramétrage pas à pas mais pour le moment je manque de temps.

De nouveaux attraits pour les (nouvelles) technologies web (1)

De nombreuses librairies javascripts (jquery, extjs, scriptaculous,dojo,…) existent pour rendre plus intuitives vos interfaces web.
Mais une a plus particulièrement attirée mon attention : Jquery

Pourquoi choisir cette librairie ?
  1. – elle est très complète
  2. – la communauté est importante
  3. – les plugins importants
  4. – les bugs réparés rapidement
Qu’a t-elle de spéciale par rapport aux autres ?
  1. Son concept de base : utiliser la structure hiérarchique du document HTML (Le DOM)
  2. Le script ne parasite pas le code HTML : utilisation des attributs “id” et “class” des tags
  3. Elle supporte l’XmlHttpRequest (Ajax)
  4. Externalisation du script qui permet de gérer les événements
  5. Installation très facile par de simples liens (link) et l’étiquetage des tag Html via Id ou Class
  6. Légèreté de la librairie
Les principes de bases :
  1. Des actions sur les noeuds du DOM (choix d’éléments, boucle sur des éléments, événements : un langage dans le langage, …)
  2. Des effets et animations : fade, déplacement (sliding), de tremblement, de glissement, …
  3. Des widgets : drag and drop, accordéon, sliders, tri, barre de progression, datepicker, boite de dialogue, onglets, …

Beaucoup d’animations pour enrichir vos interfaces web et en améliorer l’expérience utilisateur.
On se rapproche de logiciels classiques avec peut-être encore plus d’esthétique et d’ergonomique.

Que peut-on faire avec Jquery ?
  1. des carrousels,
  2. des popup nouvelles génération (lightbox, thickbox, greybox)
  3. des menus de toutes sortes : verticaux, horizontaux, onglets, hierarchique, …
  4. des Glisser-Déplacer
  5. des menus déroulants plus ergonomiques
  6. des tooltips plus joli, plus paramétrables

sans rechargement des pages bien sûr!

voir le site www.jquery.com

et les sites en version française :
www.jquery-france.com
www.jquery.info
Un prochain article listera les différents plugins utiles : menus, boite de dialogue, lightbox, thickbox, greybox, drag and drop, …
Une autre libraire peut également faire des effets similaires mais je trouve qu’elle n’a pas tous ces avantages : c’est Library Ajax de l’ASP.NET. Fournie de nombreux exemples avec l’AjaxToolkit

LC.exe : erreur

Il détecte un fichier dans Visual Studio .licx incohérent

aller dans My Project, supprimer le fichier licenses.licx ou son contenu

et l’ erreur devrait disparaître.
Cela se produit en général à la suite de l’ ajout d’ un composant