mardi 25 décembre 2007

Le grand guide du métier de consultant


Le grand guide du métier de consultant:

Ce livre se lit bien. Il aide à comprendre le chemin qu'il y a à parcourir pour passer du statut de cadre-expert à celui de consultant, aussi bien en tant qu'indépendant qu'au sein d'une entreprise.

Il permet également d'aborder un bon nombre de points de manière analytique et à se poser de bonnes questions.

A trouver également des chiffres clefs de l'activité d'un consultant et un test pour situer son projet. On peut retrouver ce test en ligne bien que je n'ai pas réussi à obtenir les résultats sur le site.


.Net Framewrok 2.0 Application development Foundation:

Premier livre à lire pour le MCPD, il comporte pas mal de longueurs pour ce livre de 1000 pages... notamment sur les questions de sécurité qui s'éloigne un peu de la plateforme .Net.

Par contre, j'ai trouvé un vrai apport sur les attributs souvent sous-utilisés dans pas mal de domaines: authorization, sécurité, debugging, interop,... Bon, il fallait y passer!

CodeFx.MySqlProviders V1.0.0.1

Mise à jour du projet open source CodeFx.MySqlProviders:

* Accessibilité de la classe Aspnet_applicationsDTO accrue (internal => public)

* La chaine de connection et le nom de l'application des providers sont maintenant valorisés par les attributs ConnectionString et ApplicationName du web.config

English version

Open source project CodeFx.MySqlProviders updated:
* increase accessibility of the Aspnet_applicationsDTO class (internal to public)
* Change the ConnectionString and ApplicationName to be setted by the attributes applicationName of the element of the web.config

dimanche 23 décembre 2007

Hébergement et Medium Trust

Un petit retour d'expérience sur l'hébergement Medium Trust

Un changement d'hébergeur pour TalentExpo puis une mise en ligne de Bestperf cet été m'ont appris deux/trois choses à anticiper lorsque l'on choisit un hébergeur ayant une politique de sécurité de type Medium Trust, c'est à dire la bonne majorité des hébergeurs en mode mutualisé.

Ce choix peut être structurant sur votre architecture ou votre code, comme nous allons le voir.
Mais d'abord quelques points simples pour éviter les problèmes:

  1. D'abord se renseigner sur la politique de l'hébergeur,
  2. Lui demander le fichier web_mediumtrust.config qu'il utilise pour le tester dans votre environnement, sinon utiliser celui par défaut.
    C'est l'occasion de voir si votre futur hébergeur est transparent et réactif, ce qui est primordial par la suite.
  3. Le déposer sous %windir%\Microsoft.Net\Framework\{version}\Config
  4. Mettre à jour votre fichier web.config:
  5. Vérifier que votre site fonctionne avec cette nouvelle politique de sécurité (plutot que d'essayer vainement de faire changer votre hébergeur...). Par défaut, votre environnement est en full trust.

Voici les deux points majeurs que j'ai pu rencontrer et qui ont été impactant sur mes sites:

Côté Web (Asp.Net 2.0)
Le problème principal est l'utilisation de la sérialisation/désérialisation binaire qui lève une exception de sécurité, voir ce post pour plus de détail.
Il est préférable d'opter pour une sérialisation xml dans ce cas.

ReflectionPermission est restreint aux membres publiques. L'accès aux membres privés est interdite. C'est pour cela que la sérialisation xml est possible et non la sérialisation binaire qui sérialise également les membres privés.

Pour en savoir plus sur l'utilisation du Medium trust, lire la page Msdn.

On peut, entre autre, y trouver la liste suivante:

OleDbPermission : is not available. This means you cannot use the ADO.NET
managed OLE DB data provider to access databases. However, you can use the managed SQL Server provider to access SQL Server databases.


EventLogPermission is not available. This means you cannot access the Windows event log.


RegistryPermission is not available. This means you cannot access the registry.


WebPermission is restricted. This means your application can only communicate with an address or range of addresses that you define in the element.


FileIOPermission is restricted. This means you can only access files in your application's virtual directory hierarchy. Your application is granted Read, Write, Append, and PathDiscovery permissions for your application's virtual directory hierarchy.


Côté Base de donnée, MySql dans mon cas

N'ayant pas le droit d'utiliser la sérialisation binaire côté serveur, l'utilisation de type LOB est de fait interdite dans votre base. Cela peut être impactant si vous souhaitez par exemple sauvegarder des fichiers en binaire (une galerie photos par exemple), et peut nécessiter de rester sur un format fichier.


Par contre, l'utilisation de LOB reste autorisée (et même conseillée pour rester standard .Net) pour les tables de personnalizations si vous utilisez des WebParts ou le Profile, car la sérialisation est cette fois prise en charge par le framework .Net. Ainsi dans mon implémentation MySql de ces providers, CodeFx.MySqlProviders, on retrouve bien le type LongBlob dans les tables aspnet_Profile et aspnet_personalization* bien que ce framework tourne en medium trust.


Third Party API


Le fait d'utiliser du medium trust va peut être également vous interdire l'utilisation de certaines API externes tels que Flickr (pour l'upload de fichiers). Les Api Google ont elles-aussi mis un peu de temps afin d'être compatibles Medium trust.

Pour les assembly Open source, il sera peut être nécessaire de les recompiler avec l'attribut

[assembly: AllowPartiallyTrustedCallers()]

et une signature forte pour pouvoir les utiliser, ce qui est vrai également pour vos propres assemblies sous peine d'avoir une erreur du type partially trusted caller.


Ce sont donc autant de points à tester avant de partir sur une solution.

samedi 15 décembre 2007

Les livres lus cet automne

Open Source .NET Development: Programming with NAnt, NUnit, NDoc, and More:

Le problème de ces livres sur l'Open Source est qu'ils sont vite dépassés. Celui-là date de 2004 et depuis l'Open Source autour de .Net a évolué (depuis surtout que Microsoft essaye de ramener la communauté Open Source sur ses plateformes).

Cependant, c'est un bon livre pour démarrer sur le sujet et avoir une vue globale de la situation. Il permet également d'avoir quelques best practices, surtout sur Nant. L'annexe sur les tasks Nant, NantContrib ne sert pas à grand chose, on trouve plus d'informations sur les sites officiels de ces outils.


MCPD Self-Paced Training Kit (Exam 70-547): Designing and Developing Web-Based Applications Using the Microsoft .NET Framework:

Livre de préparation pour le niveau 3 de la certification Microsoft Web. Le livre en lui-même est intéressant, bien qu'un peu généraliste (il n'est pas assez axé web à mon gout).

D'un point de vue de la certification, je ne l'ai pas trouvé très adapté, peut être trop généraliste justement comparé aux questions souvent très précises de l'examen.


MCTS Self-Paced Training Kit (Exam 70-528): Microsoft .NET Framework 2.0 Web-Based Client Development:

Livre de préparation du niveau 2 de la certification. Dès lors que l'on est utilisateur de Visual Studio 2005, ce livre est rébarbatif. Le seul intérêt est alors son exhaustivité car on passe toujours à côté de la petite fonctionnalité qui change la vie de développeur.

Pour l'examen, je le trouve très bien.

mardi 11 décembre 2007

Ajax.Net & référencement

L'utilisation du framework Ajax.Net peut avoir des conséquences directes sur le référencement. Certains robots d'indexation tels que Googlebot , le robot d'indexation de Google, ne supportent pas toutes les fonctionnalités d'Ajax.Net.
Conséquence, le site peut ne pas se référencer. Il est recommandé de vérifier comment est vu votre site par ces robots en utilisant l'extension User Agent Switcher de firefox et en le configurant avec le user-agent du robot que vous souhaitez tester:
  • Googlebot/2.1 (+http://www.google.com/bot.html)
  • Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Googlebot-Image/1.0

Et voici l'erreur que renvoit le robot:

"Partial rendering requires a browser that supports W3C DOM Level 1.0."

Avec le framework Ajax.Net on peut tester si le browser supporte ou non le partial rendering, ce qui laisse l'opportunité de le désactiver:

protected void Page_Init(object sender, EventArgs e)
{
MasterScriptManager.SupportsPartialRendering = !Request.Browser.Crawler
&& MasterScriptManager.SupportsPartialRendering;
}

Pour compléter cela, il peut être interessant d'ajouter un répertoire app_browser avec un .browser adapté comme kowitz le suggére ce qui peut améliorer l'indexation de votre site.

Après cela, il faut être un peu patient pour que le site se référence!

lundi 10 décembre 2007

Certification MicroSoft Niveau 3

Après avoir obtenu le niveau 2 en septembre (Microsoft .Net Framework 2.0 - Web-Based Client Development), je viens de passer le niveau 3 (Designing and Developing Web Applications by Using the Microsoft .NET Framework).
Il me reste donc à passer le niveau 1 (les fondations c#) afin d'être certifié Professionnal web developper (MCPD).

Laurent Morisseau, auteur de ce blog, pour me contacter