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).

mercredi 28 novembre 2007

CodeFx.MySqlProviders, des providers MySql pour ASP.Net

Après le framework CodeFx présenté dans l'article précédent, voici le complément, toujours géré sur le site communautaire CodePlex:

CodeFx.MySqlProviders est un ensemble de providers pour Asp.Net:
  • MySqlMembershipProvider
  • MySqlPersonnalizationProvider
  • MySqlProfileProvider
  • MySqlRoleProvider
Mélange d'implémentation standard Microsoft (Sqlxxxprovider pour SqlServer) et utilisation du framework CodeFx.
Ces providers sont en production sur le site www.bestperf.com dans un environnement Medium Trust (un prochain article traitera de mon retour d'experience sur ces problématiques Medium Trust et référencement).

Les tables MySql pour le membership, personnalisation, profile et role ont la même structure que les tables équivalentes Sql Server. Cela permet de faciliter une éventuelle migration dans un sens ou dans l'autre.
English version
CodeFx.MySqlProviders is a set of providers:
  • MySqlMembershipProvider
  • MySqlPersonnalizationProvider
  • MySqlProfileProvider
  • MySqlRoleProvider
based on SqlProviders implementations for MySql using the CodeFx Framework.
This is a example of CodeFx use.
Those providers are in production with the site www.bestperf.com since may 2007.
This assembly can be used in a medium trust environnement.The tables for membership, personnalization, profile and role have the same structure as the Sql Server tables.
A file for the database creation is delivered with the solution.

mardi 27 novembre 2007

CodeFx, un framework de persistance

CodeFx est un framework OpenSource géré sur CodePlex, le site communautaire Open Source .Net. C'est un framework de persistance développé initialement pour le site TalentExpo puis réutilisé pour Bestperf. Il est en production depuis maintenant quelques mois.
Développé en C# sur le framework 2.0, il est utilisé avec des templates CodeSmith qui permettent de générér, en s'appuyant sur le schéma d'une base MySql, l'ensemble des classes
de type DAL, DTO et Persistance.

Ces classes peuvent également être définies manuellement afin de pouvoir définir des classes business.

La persistance, mix entre le mode de persistance (Cache, Session, IIS) et le niveau de persistance (Public, Private), est définie par attribut sur les classes de types Persistance:

[Persistance("ClassName" , EPersistanceMode.Cache, EPersistanceLevel.Public)]

Les classes DTO sont implémentées avec les attributs [DataObject] afin de pouvoir utiliser les ObjectDataSource d'asp.net de manière standard.

English version
CodeFx is a .NET based persistence framework (DAL, DTO, Persistence) working with attributes.
The mapping with tables can be made with codesmith templates or manually.
Either a table pattern or a business implementation can be made depending on the the architecture approach.
The DataBase used is MySql but the templates can be updated for others Db.
The type of persistance is defined is the Persistance classes with attributes:

[Persistance("ClassName" , EPersistanceMode.Cache, EPersistanceLevel.Public)]

Persistance is a mix between the persistance Mode (Cache, Session , Items) and the Level (Public or Private).
The DTO classes are implemented with [DataObject] attributes so that asp.net ObjectDataSource can be used in a standard way.

This framework is on production for the sites talentexpo and bestperf since beginning of 2007

Laurent Morisseau, auteur de ce blog, pour me contacter