Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Playtime

"La technique est un moyen, pas une fin en soi"
Blog technique de Sébastien Carriere

Actualités


  • Mon messenger
Utiliser string.ToLower() c'est mal !

J'avoue que le titre de mon message est un peu racoleur :)

Nous allons cependant étudier le bout de code suivant :

if (val.ToLower() == "unevaleur")
{
   
// faire qqch
}

 

Ce type de test est présent dans de nombreux projets...

Rappelons juste que le Framework .Net fournit une méthode spécifique pour effectuer des comparaisons de "string".

On préférera donc écrire :

if (val.Equals("UneValeur", StringComparison.InvariantCultureIgnoreCase))
{
   
// faire qqch
}

 

Pourquoi ? L'une des raisons est les performances !

Voici le résultat d'une application testant les performances de chaque méthode :

 image

La méthode "string.Equals()" est juste 40 fois plus rapide que la méthode "xxx.ToLower() == yyy" !

L'utilisation de l'objet "StringBuilder" pour la concaténation de chaînes de caractères est entrée dans les mœurs, il faut faire pareil pour la comparaison des chaînes de caractères !

Note :
Pour plus d'information sur l'application console que j'ai utilisé pour tester les perfs, je vous invite a regarde le blog d'Antoine.

Faire un package d'installation facilement : Wix, WixEdit, WIA

La réalisation de package d’installation (MSI) est souvent fastidieuse. En effet, les projets de Setup proposé par Visual Studio manquent de flexibilité...

clip_image001

Une solution est l’utilisation de WIX (Windows Installer XML). C’est une boite a outils open sources qui permet de créer des packages d’installation a partir d’une description XML de ceux-ci. (http://wix.sourceforge.net/)

Le format XML de WIX, n’est pas immédiatement appréhendable, alors, voici un outil « WIXEdit » qui permet l’édition du package d’installation WIX de manière graphique. (http://wixedit.sourceforge.net/)

image

Même avec ces deux outils, faire un package d’installation complet pour une application Web reste difficile. Voici en bonus un projet sur Codeplex qui vous permettra de réaliser un Msi complet en 30 mn (http://www.codeplex.com/wai)

Celui-ci permet de :

  • Créer un nouveau site web
  • Ajouter une virtual directory a un site web existant
  • Créer des « Application Pool” et configurer les sites web pour Asp.Net/PHP/Perl
  • Créer une base de données et ces utilisateurs.
  • Configurer automatiquement des fichiers (comme le Web.config) en fonction de valeurs entrées dans le wizard d’installation.
  • Etc...

Il faut noter que le projet WIX est « sponsorisé » par Microsoft puisque l’installation d’Office 2007 est réalisée avec.
Cet outil sera inclus en standard dans la prochaine version de Visual Studio « Rosario ».

Ressources et liens sur Speech Serveur 2007

Voici une compilation (non exhaustive) de liens qui vous permettrons de débuter sur Speech serveur :

Blogs :

Site de la communauté :

Chez Microsoft :

Webcasts :

Je vous conseil aussi l'excellent livre de Michael Dunn :

image 

En cadeau voici tous les liens nécessaire à l'installation d'un poste de développement pour speech serveur :

Cette liste sera complétée au fils de mes découvertes...

VB9 : Xml Literal, les développeurs C# vont être jaloux !

Avec Visual Basic 9, le framework .Net 3.5 et Visual Studio 2008, Microsoft introduit une nouveauté appelée « XML Literal ». Celle-ci a la particularité d'être présente uniquement dans VB9.

Les XML Literal vous permettent de manipuler les documents XML directement depuis le code VB. Avant, vous aviez les solutions suivantes pour générer et manipuler du XML :

  • Utiliser XmlDocument,
  • Utiliser XmlWriter et XmlReader
  • Travailler directement avec de chaînes de caractères (C'est mal !) 

Ces techniques sont toujours valables. Pour des documents « complexe » il est presque impossible de voir la structure du document généré en lisant le code...

.Net 3.5 introduit un nouveau namespace : System.Xml.Linq.

Prenons l'exemple du fichier Xml suivant :

image

Pour le construire en C#, le code sera le suivant :

image

En utilisant les Xml Literal de VB9, le code sera le suivant :

 image

Sympa non ?
Et je ne parle pas de l'auto complétion et de l'import des namespaces XML de l'éditeur VB9…

En y ajoutant un peu de linq, vous pourrez faire ce genre de choses  (et même bien plus):


image

Pour consoler les développeurs C#, les « automatic property » n'existent pas en VB :)

L'Enterprise Library 4.0 est disponible en release

L'équipe pattern & practices vient de publier la version Release de l'Enterprise Library 4.0.

Cette version inclue :

  • Unity, un conteneur léger d'injection de dépendance,
  • Le support de Visual Studio 2008 et de .Net 3.5,
  • Des améliorations sur le support de WMI,
  • Des améliorations du cache manager,
  • Des améliorations des performances.

Pour résumer, elle contient quelques améliorations et corrections de bug, mais la grande nouveauté est l’intégration de « Unity IoC ».

Celui-ci permet de construire ses objets par injection des dépendances. Le fonctionnement d'Unity est proche de celui de Castle Windsor, SpringFramework.NET ou StructureMap.

Pour le téléchargement :

 

A Propos des Software Factory

L'objectif des « Software Factory » est d'assister les architectes et les développeurs dans la création d'applications Windows, Web et de Services.
Elles sont mis à disposition par l'équipe Patterns & Practices de Microsoft.

clip_image002

Les Factory proposent :

  • De extensions à Visual Studio 2005 ou 2008,
  • Des templates de projets et de classes.
  • Des assistants,
  • Des exemples de code,
  • Des modes d’emplois et "How-to",
  • Une documentation

Avantages :

Il y a plusieurs avantages à utiliser les Software Factories :

  • Accélérer le début du développement,
  • Réduire les risques,
  • Améliorer la qualité,
  • Accroître la productivité,
  • Rendre le code plus adaptable,
  • Réduire la courbe d'apprentissage.

Types de factory

On trouve principalement 3 software factory :

Smart Client Software Factory pour Visual Studio 2008 (SCSF)

Une nouvelle version de la Smart Client Software Factory compatible avec Visual Studio 2008 est disponible en téléchargement.

SCSF Architecture.png

Voici les liens :

Speech Serveur dans le MSDN Magazine d'avril

image

Le MSDN Magazine d'avril propose un article complet sur le Speech Serveur 2007 :

Voici le sommaire :

  1. Voice App Basics
  2. Voice Response Workflow
  3. Building Prompts
  4. Prerecorded Prompts
  5. Keyword and Conversational Grammars
  6. Handling Responses
  7. Debugging and Testing

Bonne lecture

Sources de l'Asp.Net MVC Framework

Scott Guthrie viens d'annoncer la mise à disposition de l'Asp.Net MVC Framework sur Codeplex.

Pour le télécharger, c'est ici :

Voici un aperçu de la solution dans Visual Studio 2008 :

image

Présentation de Speech Serveur 2007

image Microsoft Office Communications Server 2007 Speech Server permet de créer des applications téléphoniques/vocale.

Beaucoup d'entre vous ont découvert ce produit lors de la troisième session plénière des techdays 2008.

Pour ceux qui ont raté l'événement, voici la vidéo :

http://blogs.technet.com/mstechdays/archive/2008/02/14/la-pl-ni-re-de-mercredi-13-f-vrier-2008-en-images.aspx

La démonstration est réalisée en live par Damien Caro et Eric Vernie.

Comment développe-t-on avec Speech Serveur ?

Le développement est extrêmement simple. Il se base sur Windows Workflow Foundation.

Lorsque vous avez installé le SDK, vous trouverez de nouvelles activités dans la toolbox de Visual Studio.

imageJe les classe en deux groupes :

La téléphonie :

  • Répondre,
  • Raccrocher,
  • Transférer,
  • Refuser,
  • Appeler un numéro,
  • etc.

Les interactions vocales:

  • Reconnaissance,
  • Synthèse,
  • Enregistrement,
  • Menu,
  • etc.

Workflow Foundation

En ce qui concerne les interactions avec l'utilisateur, le développement d'une application vocal est similaire au développement d'un workflow classique.

Voici un exemple de workflow Speech Serveur :

image

 

1. Décroche le téléphone

2. Dit "Bienvenu dans l'application de démonstration Speech Serveur"

3. Dit "Choisissez un nombre entre 0 et 10"

4. Obtient la réponse

5. Dit "Vous avez choisit X"

6. Raccroche

Les grammaires

Afin d'effectuer de la reconnaissance vocale, vous devrez créer des grammaires. Celle-ci permettent de définir ce que l'application doit reconnaître (ex : un chiffre, un nom etc.). Grâce à ce système speech serveur sera capable d'extraire des valeurs utilisables ensuite depuis le code C#.

Voici un exemple pour reconnaître un chiffre :

 image

Je suis très enthousiaste autour de Speech Server. Sa facilité de mise en œuvre et sa forte intégration avec les technologies .Net ouvre le champ a de nouvelles interactions pour les applications !

Web.config : utiliser l’attribut « configSource »

image Depuis Asp.Net 2.0, toutes les sections d’un fichier web.config définissent l’attribut "configSource".

Il permet d’externaliser une section de configuration dans un fichier.  

Pourquoi externaliser ?

Plusieurs raisons peuvent vous pousser à externaliser des sections de configuration :

  • Amélioration de l'organisation,
  • Meilleur lisibilité,
  • Facilité de mise à jour,
  • Gestion des droits,
  • Mutualisation,
  • etc.

Syntaxe & exemple

La syntaxe est simple, il suffit d'ajouter l'attribut "configsource", la valeur de l'attribut sera le chemin relatif vers le fichier de configuration.

<section configSource="chemin_relatif_vers_le_fichier"/>

Prenons le fichier web.config suivant :

image
web.config

En externalisant la section "appSettings", vous obtenez les deux fichiers suivants :

 image
Web.config

image
appSettings.config

Quelques scénarios d'utilisation.

Voici trois cas concrets où cela m'a été utile :

  • Sur plusieurs projets, cet attribut a permis de séparer la configuration de chaque module à moindre coût. Le résultat est une meilleur lisibilité et la facilité de mise à jour.
  • L'externalisation permet de gérer finement les droits sur les fichiers de configuration. Vous pouvez dire que seul les membres du groupe "Administrateurs" peuvent modifier le fichier "web.config" tandis que les membres d'un autre groupe pourront modifier le fichier appSetting.config.
  • Selon l'environnement (dev, integration, prod...) seule une partie du fichier web.config change. L'externalisation de ces sections permet de gérer plus simplement la configuration des différents environnements.

Et la sécurité ?

Vous ne voulez pas qu'un internaute accède à votre fichier depuis son navigateur web.

Pour cela deux solutions :

  • Nommer les fichiers avec l'extension ".config"
  • Placer les fichiers dans le répertoire "App_data".

La référence sur la MSDN

Message.First()

helloworld

Salut à tous !

Je rejoins avec joie l’équipe de bloggeurs de Codes Sources.

En tant que nouveau venu, il convient que je me présente :

Je m’appelle Sébastien Carrière, je suis développeur, architecte, consultant .Net (choisissez ce que vous préférez) dans une SSII Lyonnaise.

Dans ce blog, je compte vous faire partager mes découvertes autour du développement en .Net. Mes activités du moment m’amèneront sans doute à vous parler de Speech Server 2007, Asp.Net 3.5 extensions, LINQ, etc…

Mon ancien blog est à l’adresse suivante : www.blogtech.fr

Ps : je remercie Cyril de m’avoir ouvert ce Blog.



Les 10 derniers blogs postés

- SQL Server 2008 : Un livre en cours de préparation ! par SQL Server vu par Christian Robert le il y a 8 heures et 41 minutes

- IIS7 : à quel pool d'application correspond le processus w3wp.exe par Atteint de JavaScriptite Aiguë [Cyril Durand] le il y a 9 heures et 38 minutes

- PDC 2008 - J-14 ! par Nix's Blog le il y a 11 heures et 23 minutes

- [Silverlight] La version finale de Silverlight 2 sera disponible en téléchargement demain ! par Thomas Lebrun le il y a 13 heures et 16 minutes

- SharePoint 2007 : Professional Developers Conference 2008 par Philippe Sentenac [MVP SharePoint] le il y a 19 heures et 9 minutes

- [Silverlight] En attendant Silverlight 2 RTW par Blog Technique d'Audrey PETIT le 10-11-2008, 21:55

- Le nouveau Gojira, c’est pour lundi… par CoqBlog le 10-11-2008, 01:18

- SharePoint : nouvel article sur la mise en place des Scopes dans MOSS Searchs par Blog Technique de Romelard Fabrice le 10-10-2008, 17:52

- Hello CS par Le Blog de julz le 10-10-2008, 12:26

- MSDN/TechNet/Microsoft Days Tour 2008 à Lille les 13 et 14 Octobre ! par RedoBlog - The .NET Gentleman !!! le 10-10-2008, 09:35