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 :
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.
La réalisation de package d’installation (MSI) est souvent fastidieuse. En effet, les projets de Setup proposé par Visual Studio manquent de flexibilité...

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/)
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 ».
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 :
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...
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 :
Pour le construire en C#, le code sera le suivant :
En utilisant les Xml Literal de VB9, le code sera le suivant :
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):
Pour consoler les développeurs C#, les « automatic property » n'existent pas en VB :)
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 linté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 :
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.

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 demplois 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 :
Une nouvelle version de la Smart Client Software Factory compatible avec Visual Studio 2008 est disponible en téléchargement.

Voici les liens :
Le MSDN Magazine d'avril propose un article complet sur le Speech Serveur 2007 :
Voici le sommaire :
- Voice App Basics
- Voice Response Workflow
- Building Prompts
- Prerecorded Prompts
- Keyword and Conversational Grammars
- Handling Responses
- Debugging and Testing
Bonne lecture
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 :

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.
Je 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 :
 |
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 :
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 !
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 :
web.config
En externalisant la section "appSettings", vous obtenez les deux fichiers suivants :
Web.config

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
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
-
[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
-
MVC Pratique #07 - Un projet concret et le transfert des objets avec les ModelBinders par
#Rui le 10-09-2008, 23:39
-
SQL Server 2008 : Certifié - TS Admin (70-432) par
SQL Server vu par Christian Robert le 10-09-2008, 10:58
-
[WPF] Comment changer la couleur utilisée pour sélectionner les éléments d’un ItemsControl ? par
Thomas Lebrun le 10-09-2008, 10:49
-
Hello World! par
Hamid's Place le 10-08-2008, 23:38
-
SQL Profiler - Configuration pour un développeur - tracer les requêtes SQL de votre application par
Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-08-2008, 15:52