Le Post de MCNEXT

Les articles des consultants de MCNEXT

Les origines de résultats (results sources) pour faire une recherche Bing dans SharePoint 2013

La recherche sur SharePoint a été grandement améliorée depuis MOSS 2007. SharePoint 2010 pouvait être complété avec FAST, et SharePoint 2013 l’intègre désormais de base à l’installation permettant de trouver l’information bien plus efficacement.

Nous allons nous intéresser à la fédération de recherche, c’est-à-dire la possibilité de fédérer différentes sources de résultats lors d’une recherche dans l’intranet.

Nous allons voir comment il est possible de configurer les origines de résultats (results sources) pour réellement étendre les possibilités du moteur de recherche de SharePoint.

Le but sera à la fin de pouvoir afficher des résultats de recherche provenant de Bing et de Wikipedia, et ce directement lors d’une recherche dans SharePoint.

Les origines de résultats pour se connecter à Bing

C’est dans le concept des origines de résultats (results sources) où le moteur de recherche de SharePoint est très intéressant. Contrairement aux sources de contenus, le but n’est pas de spécifier à SharePoint ce qu’il doit indexer mais plutôt dire à SharePoint quel index utiliser, et éventuellement utiliser celui d’un autre moteur de recherche.

Sur SharePoint 2013, nous allons utiliser les « origines de résultats » (results sources), les « règles de requêtes » (query rules) et leurs « blocs de résultats » (results blocks) qui viennent remplacer les « emplacements fédérés » (federated search) ainsi que les « étendues de recherches » (scopes) de SharePoint 2010.

Nous allons configurer le moteur de recherche SharePoint pour qu’il puisse effectuer des recherches sur des moteurs tiers comme Bing.

Dans l’administration de l’application de service de recherche, nous allons dans le menu « Origines de résultats ». Nous créons une « Nouvelle origine de résultats ».

Après le nom et la description, nous pouvons configurer le protocole et avons le choix entre SharePoint local, SharePoint distant, OpenSearch 1.0/1.1, Exchange.

Dans notre cas, nous choisissons OpenSearch qui est un protocole permettant de fournir les résultats de recherche dans un format standardisé.

Ensuite, nous configurons l’URL Source en mettant
http://www.bing.com/search?q={searchTerms}&format=rss
 , {searchTerms} étant un token qui sera remplacé par le mot que vous recherchez. Si vous allez sur
http://www.bing.com/search?q=mcnext&format=rss
, vous arrivez sur le format RSS de la recherche du mot « mcnext » dans Bing ; format compatible avec OpenSearch.

Nous laissons l’authentification anonyme, Bing étant un moteur de recherche où nous n’avons pas besoin d’être authentifié.

Ajout d'une origine de résultats

Ajout d’une origine de résultats

Nous retournons sur la liste des origines de résultats, où nous pouvons faire un clic droit sur « Bing » celui que nous avons créé, puis « Source de test ». En fait c’est simplement pour tester sur l’URL que nous avons mis fonctionne. Une fenêtre s’ouvre et nous dit que le test a réussi … ou non.

Test d'une origine de résultat

Test d’une origine de résultat

A ce terme de la configuration, vous pouvez déjà utiliser les WebParts de recherche pour y sélectionner la source ainsi créée. En revanche si j’utilise la page de résultats par défaut du centre de recherche, pas de changement puisque cette page utilisera une origine de résultat par défaut sans tenir compte de celle tout juste créée pour Bing. Voyons comment nous pouvons y remédier avec les règles de requêtes (query rules).

Un result block Bing avec les Query Rules

Nous cherchons donc à configurer la recherche pour que la recherche par défaut puisse amener des résultats depuis Bing. Pour cela, nous utilisons les règles de requêtes ou query rules.

Concrètement notre WebPart de recherche est configurée sur l’origine de résultats par défaut de SharePoint : « Résultats SharePoint locaux ». Lorsque nous tapons « bing mcnext », ce texte est passé par les règles de requêtes configurées pour cette origine de résultats. Chaque règle permet de transformer la requête pour effectuer des actions particulières (comme ajouter un filtre sur le type de résultats par exemple).

Dans l’administration, cliquez sur « Règles de requêtes » (Query Rules). Avant tout, vous devez sélectionner votre origine de résultat. Nous voulons agir sur celle par défaut « Résultats SharePoint Locaux » (Local SharePoint results). Une fois sélectionnée, vous voyez les différentes règles prédéfinies. Nous créons une nouvelle règle de requête pour Bing.

Dans les conditions de requêtes, nous configurons le fait que lorsqu’on commence ou termine la requête par le mot « bing », notre règle doit s’appliquer. Nous ajoutons donc deux conditions avec « correspondance de texte de la requête avancée », une pour faire correspondre le début, l’autre pour la fin de la requête.

Nouvelle règle de requête

Nouvelle règle de requête

En bas de page, vous pouvez ajouter des actions quand la règle est activée. Vous pouvez ajouter des résultats promus (best bets), ou des blocs de résultats (results blocks).

Résultat promu (best bet)

Résultat promu (best bet)

Bloc de résultats (results block)

Bloc de résultats (results block)

Nous ajoutons un bloc de résultat, une fenêtre s’ouvre. Dans la section « Requête », nous faisons chercher notre bloc de résultats dans l’origine de requête Bing tout juste créée. Dans la section « Paramètres », nous pouvons éventuellement configurer un lien « Plus de résultats » menant vers le site officiel de Bing. Nous mettons alors l’URL
http://www.bing.com/search?q={subjectTerms}
.

Une fois retournés sur le centre de recherche, nous cherchons donc « bing mcnext ». Les résultats s’affichent avec un bloc de résultats correspondant aux résultats du mot « mcnext » provenant de Bing. Le reste des résultats plus bas, sont les résultats de SharePoint qui correspondent aux mots clés « bing mcnext ».

Recherche Bing MCNEXT

Recherche Bing MCNEXT

Nous voyons donc comment il est possible de compléter le moteur de recherche SharePoint par un moteur de recherche externe comme Bing ou tout autre qui est compatible OpenSearch.

On peut par exemple se servir de Bing pour se connecter à Wikipedia ou autre site.

Recherche Wikipédia SharePoint

Recherche Wikipédia SharePoint

Nous avons donc vu comment le moteur de recherché SharePoint 2013 peut être étendu grâce aux origines de résultats en se connectant à d’autres moteurs de recherche. Par la suite, il est également possible d’incruster les résultats de ces moteurs dans les résultats même de SharePoint proposant aux utilisateurs une fédération de recherche efficace pour les utilisateurs.

Les blocs de résultats (results blocks) avec le moteur de recherche SharePoint 2013

Le moteur de recherche SharePoint 2013 a été amélioré en intégrant de base le produit FAST. Ce moteur intelligent peut être configuré pour les besoins de chaque organisation.

Nous allons voir comment le moteur peut être configuré pour analyser une requête, l’interpréter pour réaliser une action particulière.

L’objectif de la configuration est de faire en sorte que lorsqu’on cherche  « SFD SharePoint », SharePoint comprenne que nous cherchons des SFD (spécifications fonctionnelles détaillées), qui sont en général des fichiers Word avec une extension *.docx. Que nous cherchons donc des fichiers Word qui correspondent au mot-clé SharePoint.

Création d’une règle de requête avec un bloc de résultats

Les règles de requêtes (query rules) et les blocs de résultats (results blocks) font partie des nouveautés de SharePoint 2013.

Dans l’administration de la recherche SharePoint 2013, nous allons dans « Règles de requêtes ».

Nous sélectionnons un contexte, et plus précisément une origine de résultats. Nous prenons celle par défaut « Résultats SharePoint locaux » (Local Sharepoint results). Une liste de règles s’affichent, nous pouvons nous inspirer de celle créée par défaut pour « Word ». En faisant un clic droit sur celle-ci, nous cliquons sur « Copier ».

Dans la page qui s’ouvre, nous la nommons « SFD ».

Dans la section « Conditions de la requête », nous avons deux conditions où SharePoint cherche à reconnaître les mots comme « doc, docx, word etc. ». Une condition pour le début, l’autre pour la fin de la requête. Pour les deux conditions, nous remplaçons les différentes expressions par « SFD » et « specs », séparés par des « ; ».

Dans la section « Actions », nous pouvons sélectionner soit des résultats promus (best bets), soit des blocs de résultats (results blocks). Nous allons faire un bloc de résultat. Etant donné que nous avons copié la règle « Word », nous avons déjà un bloc configuré. Nous le modifions en cliquant sur « Modifier ».

Ajout d'une règle de requête

Ajout d’une règle de requête

Une fenêtre s’ouvre, où nous modifions le titre du bloc, en français et en anglais. Nous laissons les « paramètres » définis, ils permettent notamment de limiter le bloc à deux résultats, et d’afficher un lien « Plus ».

Edition d'un bloc de résultat

Edition d’un bloc de résultat

Une fois terminé, nous cliquons sur OK et enregistrer pour valider le bloc de résultat et la règle de requête.

Test de la requête "SFD SharePoint"

Lorsque nous retournons sur le centre de recherche, nous tapons « sfd sharepoint ».

Recherche SFD SharePoint

Recherche SFD SharePoint

Nous voyons qu’un bloc de résultats est formé en haut de tous les résultats. Ce bloc affiche les résultats de type Word d’une recherche du mot « sharepoint ». Nous voyons ensuite les autres résultats de recherche des mots « sfd sharepoint ».

Ainsi nous pouvons configurer le moteur de recherche afin qu’il comprenne nos contraintes métier comme le fait de retrouver un fichier Word lorsque nous parlons de « SFD », ou encore un fichier Powerpoint lorsque nous cherchons « diapos » ou « planches ».

Les Composed Looks dans SharePoint 2013

Introduction

Beaucoup de choses ont changé depuis l’arrivée de la nouvelle version de SharePoint. Vous rappelez-vous des thèmes dans SharePoint 2010 ? Et bien dites maintenant bonjour aux …  Composed Looks !

Change the look

Galerie des Composed Looks

Les Composed Looks, c’est quoi ?

Pour en donner une définition simple, les Composed Looks sont un assemblage de composants graphiques qui vont vous permettre en un minimum d’effort  de créer des thèmes.

Bien sûre, ces derniers ne seront pas pertinents pour tous vos projets mais ils ne sont pas à négliger car cette nouvelle fonctionnalité va vous permettre de composer une charte graphique de manière très simple en utilisant :

  • une Master Page
  • une palette de couleurs
  • une palette de polices
  • une image de fond

Lire la suite

Les Data Taps une nouveauté SQL Server 2012

Dans cet article nous allons découvrir les Data Taps, nouveauté sql server 2012.
Les data taps se rapprochent des data viewers que nous utilisons durant la phase de développement pour analyser les données qui transitent dans un data flow tasks.

Utilisation d'un dataviewer

Utilisation d’un dataviewer entre une source et une destination

Contrairement au dataviewer les data taps sont utilisables qu’en production et permettent d’extraire les données dans un fichier .csv .

Lire la suite

Focus sur SQL CE for Windows Phone

Introduction

Avec le déploiement de Windows Phone 7.5 (Mango), une nouvelle fonctionnalité très attendue est venue enrichir l’environnement de développement sur Windows Phone 7 : la base de données locale.

Depuis son lancement, de nombreux développeurs se sont heurtés à des problèmes de performance en utilisant cette version de SQL Compact Edition spécialement dédiée à Windows Phone.

Cet article vise à rassembler et à organiser un certain nombre d’astuces et de bonnes pratiques glanées sur internet dans le but de tirer le meilleur de cette base en terme de performance.

Bref historique de SQL Compact Edition for Windows Phone

Initialement disponible et éprouvé sur Windows mobile 6.5 , SQL CE Mobile brillait par son absence sur Windows Phone 7.

Plusieurs raisons pouvaient expliquer une telle situation :

  • Véritable volonté de réduire au maximum le stockage de grande quantité de données sur le téléphone au profit de synchronisation avec serveur distants?
  • Manque de temps à l’issue du gigantesque chantier qui a mené MS à concevoir Windows Phone 7 en un peu plus d’un an seulement?

Quelles qu’en soient les raisons, le besoin s’est rapidement fait sentir pour le développement d’applications en tout genre et la communauté de développeurs Windows Phone s’est rapidement mobilisée pour proposer des solutions.

En voici une liste non exhaustives :

La mise à disposition de SQL CE for Windows Phone a sonné le glas de bon nombre de ces projets. En effet, l’intérêt de solutions managées semblent limité face à ce port natif de SQL CE 3.5 spécialement conçu pour Windows Phone et officiel qui plus est.

Des alternatives sur Windows Phone 7?

Pour autant et à l’image de Sterling, les développements et la popularisation de certains projets se sont poursuivis car ils se sont démarqués pour des usages bien particuliers.

Sterling avec son orientation NoSQL et le soin tout particulier apporté à l’optimisation des opérations de sérialisation / désérialisation se distingue par exemple par sa simplicité d’utilisation et ses performances en lecture.

Néanmoins sur Windows Phone 7 et parmi les solutions existantes, SQL CE de par son implémentation native parait être le choix le plus adapté lorsqu’il s’agit de travailler sur de grande quantité de données à la fois en lecture et en écriture.

Pour une comparaison entre SQL CE for Windows Phone et Sterling, rendez vous à cette adresse.

Astuces et bonnes pratiques générales

Gardez un œil sur les requêtes soumises à la base

L’une des première surprise rencontrée lors de l’utilisation de SQL CE for Windows Phone est que l’exécution directe de Transact-SQL n’est pas supporté.

Le recours à LINQ to SQL sur Windows Phone est donc obligatoire pour communiquer avec sa base de données locale relationnelle. Ce dernier a la responsabilité de traduire les requêtes de LINQ vers Transact-SQL et de matérialiser les résultats retournés par la base.

Pour éviter l’effet boîte noire, il est possible de logger les requêtes générées par LINQ to SQL et soumises à la base.

Pour ce faire, tout se joue au niveau de l’objet DataContext qui comporte une propriété Log. Si cette dernière est affectée à un StreamWriter, toute l’activité du DataContext concerné sera loggée par son intermédiaire.

using (var context = new MyDataContext(MyDataContext.DBConnectionString))
using (context.Log = new StreamWriter(IsolatedStorageFile.GetUserStoreForApplication().CreateFile("logs.txt")))
{
    // Ecrivez ici les insert, update, delete dont vous avez besoin...
    context.SubmitChanges();
}

Il ne vous reste plus qu’à récupérer le fichier de log de votre émulateur ou téléphone vers votre PC à l’aide d’outils de développement spécifiques tels que IsoStorageSpy ou encore Windows Phone Power Tools.

Chiffrez votre base dégrade les performances

SQL CE for Windows Phone supporte le chiffrement des données contenues, il vous suffit d’ajouter le paramètre Password dans votre connection string. Mais n’oubliez pas que cette sécurité a un prix en terme de performance : des opérations supplémentaires de chiffrement et déchiffrement viendront respectivement s’ajouter à chaque opération d’écriture et de lecture en base.

Maitrisez la durée de vie de votre DataContext

Pour faire face aux problèmes de performance rencontrés avec SQL CE for Windows Phone, le DataContext présente un atout majeur  : son cache.  Les résultats des requêtes effectuées avec un DataContext donné sont conservés et réutilisés par la suite pour limiter les allers et retours avec la base. Ce mécanisme permet ainsi d’accélérer les prochaines requêtes pointant sur des données déjà chargées en mémoire.  Pour résumer, plus le cache de votre DataContext contient d’objets, plus les chances sont grandes pour que les données que vous souhaitez obtenir soient déjà chargées en mémoire, plus les résultats vous seront retournés rapidement.  Afin de tirer parti au maximum de ce cache, la tentation est donc grande de ne créer qu’une seule instance de DataContext pour l’ensemble de votre application.
Cependant, il peut être intéressant de rappeler certaines contraintes qui s’appliquent à notre cher DataContext :
  • Votre application Windows Phone 7 ne peut occuper plus de 90 mo en mémoire. A cause de son cache, votre instance de DataContext pourrait bien dépasser ce quota si vous n’y prenez pas garde.
  • Une instance de DataContext n’est pas thread-safe, les accès concurrents produisent une InvalidOperationException. En revanche, SQL CE supporte les accès concurrents de plusieurs DataContexts différents.
Ces limitations ne plaident pas en faveur d’une instance de DataContext unique. Les pistes plus pérennes pourraient être les suivantes :
  • Suivre les bonnes pratiques LINQ to SQL et Entity Framework : Regroupez et encapsulez les accès à la base dans des classes et des méthodes dédiées en fonction de vos besoins techniques et/ou fonctionnels. Instanciez et détruisez un nouveau DataContext dans chaque méthode (avec un using), ils sont conçus pour avoir une durée de vie assez courte. Pour plus d’informations, voir ici.
  • Définir des instances de DataContext pour des usages bien spécifiques et garantir un accès synchronisé à chacune d’entre elle.
Il n’existe pas de solution idéale universelle, tout dépend de vos besoins et de la complexité de votre application.

Veillez à toujours effectuer vos appels à la base sur un thread en arrière plan

Ce n’est certainement ni la première, ni la dernière fois que vous le lisez : Il est important de ne pas bloquer votre thread UI avec des traitements lourds.

Ceci a pour conséquence de bloquer l’affichage de votre application, comportement qui mène à de nombreux points négatifs :

  • Utilisateurs frustrés ne pas savoir ce qu’il se passe
  • Impression générale de manque de finitions
  • Clicks compulsifs jusqu’à ce que "quelque chose se passe" qui empirent la situation!

De plus pour les traitements massifs sur la base, il semblerait que l’utilisation d’un thread en arrière plan accélère assez significativement les choses, voir ce lien.

Améliorer les temps d’exécution en lecture

Stockez sous forme de blobs lorsque que la situation s’y prête

Dans certains cas, il est plus rentable de stocker un bloc entier de données sérialisées (en XML ou binaire) directement en base sous la forme d’un blob dans une colonne de type text, varbinary, binary par exemple.

Cela permet de limiter autant le nombre de requêtes et d’allers et retours avec le base que la complexité et la quantité de données à requêter sont grandes.

Créez des index sur les propriétés utilisées fréquemment

Un index est automatiquement crée pour chaque colonne de la base définie en tant que clé primaire. Mais vous pouvez également créer vos propres index sur les propriétés souvent utilisées dans vos requêtes LINQ, y compris celles utilisées pour trier les résultats des requêtes.

[Index(Column=”OrderID ASC, Quantity DESC”)]

Compilez vos requêtes LINQ

Lors de chaque exécution de requêtes LINQ, LINQ to SQL traduit l’arbre d’expression défini vers le code Transact-SQL correspondant. Ce mode de fonctionnement s’avère peu optimal pour les requêtes LINQ qui sont exécutées de nombreuses fois au cours de la durée de vie de l’application.

Pour éviter que cette opération de traduction ne soit exécutée encore et encore, il est possible de compiler votre requête LINQ à l’aide de CompiledQuery.Compile.

Cette méthode produit une requête Transact-SQL paramétrée qu’il vous sera possible de réutiliser avec des paramètres d’entrés différents par l’intermédiaire de la Func retournée.

Effectuez les jointures par vos propres moyens?

Cela peut sembler étrange, mais lorsque l’on travaille avec de grandes volumétries, récupérer les données dont vous avez besoin avec des requêtes très simples puis effectuer les jointures par ses propres moyens se révèle bien souvent plus efficace que de laisser faire SQL CE. A condition bien sûr, que la quantité de données ne soit pas excessive! (quota de 90 mo par application sur Windows Phone 7)

Le post suivant y fait d’ailleurs référence dans sa conclusion.

Améliorer les temps d’exécution en écriture

Ajoutez la colonne RowVersion pour améliorer les updates et deletes

Avant d’effectuer des updates ou des deletes, LINQ to SQL doit s’assurer qu’il n’y pas de conflits dus à des accès concurrentiels.

Afin de vérifier que les entités reflètent bien les valeurs présentes en base en moment du SubmitChanges, ces opérations sont effectuées avec une clause where supplémentaire qui vérifie les valeurs de chacune des colonnes. Cette dernière alourdit donc autant les requêtes que la table concernée contient de colonnes.

Pour éviter ces traitements supplémentaires, il est possible de définir une colonne de type RowVersion.

[Column(IsVersion=true)]
private Binary _version;

Lorsqu’elle est présente, LINQ to SQL se base uniquement sur la valeur contenue dans ce champ pour déterminer si une entrée a changé ou non et la clause where supplémentaire, devenue inutile, disparaît.

Pour plus d’informations sur le sujet, rendez-vous ici et ici.

Quelques pistes pour améliorer les performances des inserts

Pour optimiser un scénario dans lequel une grande quantité de données doit être insérée en base vous pouvez utiliser le paramètre "Max Buffer Size". Par défaut, sa valeur est de 384 ko et 5120 ko au maximum. Ce paramètre indique à la base la plus grande quantité de données qu’elle peut stocker en mémoire avant de l’écrire sur le disque, 1024 KB semble être un bon compromis. Attention toutefois à ce pas trop l’augmenter, au delà d’une certaine valeur, cela n’aura plus d’impacts positifs mais négatifs! Pour plus d’informations voir cet article.

La présence de la colonne RowVersion fait gagner du temps sur les opérations d’updates et de deletes. A l’inverse, dans le cas d’un insert, RowVersion constitue une donnée de plus à insérer en base et à générer par LINQ to SQL. Si vous souhaitez privilégier les inserts sur les updates/deletes et les accélérer sensiblement, supprimez cette colonne. A noter que cette optimisation ne concerne à nouveau que les cas d’insertions massifs de données. Pour plus d’informations voir ce post traduit.

Privilégiez l’utilisation de InsertAllOnSubmit à InsertOnSubmit pour de nombreux inserts consécutifs

Enfin, si vous cherchez à injecter rapidement une grande quantité de données dans votre base, sachez qu’il existe un portage de SqlBulkCopy pour Windows Phone 7.5, vous le trouverez à cette adresse.

Minimiser la consommation mémoire

Désactivez le suivi de modifications lorsqu’il n’est pas utile

Par défaut, vos instances de DataContext sont configurées de manière à ce qu’une copie de toutes les entités issues de la base soit effectuée et conservée. Ces copies originales sont utilisées par la suite lors de l’appel à la méthode SubmitChanges pour déterminer ce qui a changé et générer les requêtes Transact-SQL adéquates (insert, update, delete etc…).

Ce mécanisme peut être désactivé pour les scénarios dans lesquels les données sont consultables et non modifiables et ainsi économiser la mémoire utilisée par ces copies. Pour ce faire, assignez false à la propriété ObjectTrackingEnabled de votre DataContext courant.

Implémentez l’interface INotifyPropertyChanging

L’interface INotifyPropertyChanging permet de modifier quelque peu la manière dont LINQ to SQL assure le suivi des modifications afin de réduire l’empreinte mémoire de votre application.

Sans implémentation de cette interface sur vos objet POCOs liés à LINQ to SQL, ce dernier est contraint de dupliquer toutes les entités lues à partir de la base de données afin d’en conserver une copie originale. Lors de l’appel à la méthode SubmitChanges, il détermine si une entité a changé et qu’est-ce qui a changé en comparant ses valeurs actuelles avec celles de sa copie originale.

En revanche, si l’interface INotifyPropertyChanging est implémentée, LINQ to SQL est directement informé de la modification des entités et seules ces dernières sont dupliquées. Ce qui réduit grandement le nombre de copies effectuées.

Conclusion

Après s’être longtemps fait désirée, Mango apporte enfin une solution de stockage de données native sur Windows Phone avec une version SQL CE spécialement dédiée à Windows Phone.

Malgré ses défauts et certaines alternatives viables, SQL CE for Windows Phone constitue une solution particulièrement adaptée pour les applications amenées à travailler sur de grandes quantités de données à la fois en lecture et en écriture sur Windows Phone 7. D’autant qu’iI existe bon nombres de solutions et d’astuces pour améliorer les temps d’exécutions ainsi que l’empreinte mémoire de l’indissociable couple SQL CE/LINQ to SQL.

L’arrivée de Windows Phone 8 souffle un vent nouveau dans le domaine du stockage de données sur les appareils mobiles Microsoft. Avec la possibilité de développer directement en natif, d’autres solutions de stockage, jouant désormais à armes égales avec SQL CE, pourraient bien faire leur apparition et représenter de très sérieuses alternatives. SQLlite for Windows Phone 8 en est déjà un exemple concret. Si vous souhaitez en savoir plus sur le sujet, je vous invite à consulter cet article ou encore celui-ci.

Les Transactions dans SSIS 2012

A quoi servent les transactions ?

Les transactions sont des suites d’opérations (Insertion, Suppression, Mise à Jour…) qui font passer la base de données d’un état A (état initial avant les opérations) à un état B (après les opérations).
Dans le cas où une opération échoue, la transaction permet de revenir à l’état antérieur B, c’est-à-dire avant le démarrage de la transaction.
Toutes les modifications seraient dans ce cas annulées.

Dans l’exemple qui va suivre, nous allons voir comment mettre en place les transactions afin d’annuler des opérations opérées sur une base de données en cas d’échec.
Lire la suite

Tour de France Windows 8 et Windows Phone 8 – Mai 2013

Tour de France Windows 8 et Windows Phone 8

Tour de France Windows 8 et Windows Phone 8

Microsoft organise un Tour de France autour des applications Windows 8 et Windows Phone 8

"Apprendre à développer, sécuriser et optimiser vos "back-end" pour vos applications Windows 8 et Windows Phone 8"

Au programme 4 heures de :

  • Formation
  • Démo
  • Code

L’objectif est de vous apprendre, en une demi-journée, à développer, sécuriser et optimiser vos "back-end" pour vos applications Windows 8 et Windows Phone 8.

Les thèmes suivants (autour de Windows 8 et Windows Phone 8) seront abordés :

  • Tour d’horizon de la plateforme
  • Concepts fondamentaux pour la mise enplace d’API et les best pratices d’utilisation dans vos applications
  • L’implémentation de services de notification et de push
  • Les différentes approches pour sécuriser vos API et la mise en oeuvre de ces mécanismes
  • L’optimisation des ressources et des services mis enplace ainsi que la montée en charge de vos applications mobiles avec Windows Azure.

Les intervenants :
Ce Tour de France sera animé par des intervenants MCNEXT :

  • John Thiriet, consultant DotNET et MVP Expression Blend
  • Guillaume Leborgne, chef de projet et expert DotNET

Ils ont développé de nombreuses applications Windows 8 et Windows Phone 8 présentes dans le Microsoft Store. Ce sont leurs retours d’expériences autour de Windows 8 et Windows Phone 8 qu’ils souhaitent vous apporter.

Le public visé :
Développeurs généralistes
Niveau technique : 300

Pour en savoir plus :

http://www.mcnext.com/evenements/microsoft/Pages/tour-de-france-windows-8-et-windows-phone-8.aspx

Microsoft Dev Camp : Réussir la partie serveur de vos applications Windows 8 et Windows Phone Jeudi 2 mai 2013

Microsoft Dev Camp : Windows 8 et Windows Phone

Microsoft Dev Camp : Windows 8 et Windows Phone

Rendez-vous le Jeudi 2 mai 2013 à partir de 13h30 !

Qu’est-ce qu’un Dev Camp ?

Le Dev Camp est un événement destiné aux développeurs professionnels comme non professionnels animé par les experts Microsoft et ses partenaires.

Au programme 4 heures de :

  • Formation
  • Démo
  • Code

L’objectif de ce Dev Camp est de vous montrer comment développer, sécuriser, et optimiser les API et les services qui vous permettront d’exposer vos données pour des applications mobiles.

Les intervenants :
Cet après-midi sera animé par des intervenants MCNEXT :

  • John Thiriet, consultant DotNET et MVP Expression Blend
  • Guillaume Leborgne, chef de projet et expert DotNET

Ils ont développé de nombreuses applications Windows 8 et Windows Phone 8 présentes dans le Microsoft Store. Ce sont leurs retours d’expériences autour de Windows 8 et Windows Phone 8 qu’ils souhaitent vous apporter.

Lieu  :
Campus de Microsoft – Issy les Moulineaux

Pour en savoir plus :
http://www.mcnext.com/evenements/microsoft/Pages/microsoft-dev-camp-reussir-la-partie-serveur-de-vos-applications-windows-8-et-windows-phone.aspx

Introduction à Data Explorer Preview pour Excel

Contexte

Nous travaillons avec beaucoup de fichiers Excel, mais n’avons pas forcément accès à un ETL de type SSIS. Ne vous inquiétez pas, Microsoft a pensé à cela et travaille actuellement sur une version finale de l’add-in Excel (2010 SP1 et 2013) permettant d’effectuer des tâches d’intégration basiques et courantes. Cet article a pour but de vous introduire le fonctionnement de cette preview add-in gratuit.

Lire la suite

Améliorer notre productivité avec Visual Studio 2012

Chaque sortie d’une nouvelle version de Visual Studio apporte aux développeurs son lot de nouveautés et d’innovations. La version 2012 de Visual Studio ne déroge pas à la règle. Par ce post, je souhaite vous faire partager mes différentes découvertes sur cette version, et principalement, tout ce qui peut et va améliorer notre productivité au quotidien.

 

Les généralités

Content before Chrome

La première constatation que j’ai fait, immédiatement après avoir ouvert Visual Studio 2012, est son apparence.
En effet, dès son ouverture, je me retrouve immergé dans un environnement quasi mono chrome. Il semble qu’il s’agit là d’une volonté de la part de Microsoft de revenir à la base de ce qu’est la conception de logiciel. Dans leur bonne pratique, Microsoft nomme cela Content before Chrome. Le contenu d’une application est l’élément principal de celle-ci. Microsoft a donc pris parti de ne plus ajouter de fioritures superflues à l’interface fourni aux développeurs, afin que ceux-ci puissent se concentrer sur le contenu, plutôt que de privilégier ce qui l’entoure.
On constate également le style épuré de la barre de menu, dont le texte est écrit en majuscule. Ainsi que le faible nombre de bouton raccourci de la barre de tâche.
On retrouve ce style dans tous les logiciels mis à jour en style Modern UI, comme Word 2013, Excel 2013, Etc.

La page de démarrage

Je parcours la page de démarrage. Elle propose une série de vidéos, type podcast, qui sont autant de tutoriels sur des sujets mise en avant par les équipes Microsoft. Ces vidéos se jouent directement dans Visual Studio 2012. Une coche apparait dans le coin inférieur droit pour indiquer celle que l’on a déjà joué.

StartPage

La recherche

L’un des raccourcis clavier, que tous les développeurs connaissent, après le copier/coller (Ctrl+C Ctrl+V), est la fonctionnalité de recherche (Ctrl+F). Visual Studio 2012 ajout le Quick Search aux outils de recherche fourni aux développeurs.
La fenêtre apparait en haut à droite de la page active. Tout d’abord, je la trouve moins intrusive. De plus, maintenant, elle est 100% compatible avec les expressions régulières (le RegEx). Et je garde le meilleur pour la fin, elle affiche le résultat en temps réel, en surlignant le texte d’une façon visible, en Jaune.
Ce mode de recherche est accessible sur chaque fenêtre présentée par Visual Studio 2012. On la retrouve dans l’explorateur de solution, la fenêtre de propriétés, etc.

QuickSearchQuickSearch2

Les performances

D’après des recherches effectuées par les équipes de Microsoft, le temps de chargement d’un projet à l’ouverture de Visual Studio est au minimum deux fois plus rapide. Il faut garder à l’esprit que cela dépend grandement de la technologie employée.

 

Les fenêtres

La gestion des fenêtres

Windows 8, permet de scinder l’écran affiché en deux moitié horizontal, par un simple glissé/déposé sur la partie gauche ou droite de l’écran.
Visual Studio 2012 a amélioré la gestion des fenêtres en les rendant totalement autonome. Microsoft, nous fait profiter là de toutes les innovations de Windows 8.
Voici une copie de mon écran. On constate qu’il est scindé en deux, j’ai affiché le fichier XAML d’un contrôle utilisateur à gauche et son fichier contenant le code behind à droite.
Naturellement, cela fonctionne avec toutes les fenêtres de Visual Studio 2012, l’explorateur de fichier, les fenêtres de débogage, etc.

DoubleEcran

La fenêtre de prévisualisation

Dans la vie d’un développeur, nous passons beaucoup de temps à chercher des informations spécifiques au travers de notre code. Pour cela, il utilise, généralement la fonction Go to reference (raccourci F12). Dans Visual Studio 2012, cela avait pour effet d’ouvrir des fenêtres, qui finissaient rapidement par polluer notre espace de travail. Pour éviter, cette pollution, on refermait manuellement les fenêtres superflues ouvertes de cette manière.
Visual Studio 2012 propose une vue de prévisualisation. Celle-ci affiche le contenu d’un fichier, en lecture seul. Il n’y a qu’une seule et unique vue de prévisualisation affichée. Dès lors, que l’on modification le contenu de cette fenêtre, ou que l’on clique sur le petit icône en forme de dossier se trouvant dans l’onglet, celle-ci passe en mode normal.

PreviewWindows

La multi-sélection des fenêtres

A l’aide du bouton Ctrl, on peut sélectionner plusieurs fenêtres, pour ainsi les déplacer toutes en même temps.

MultiWindowsSelection

Le pin’s

Visual Studio 2012 intègre, nativement, une fonctionnalité qui permet d’épingler une fenêtre. Une fenêtre épinglée reste en première position dans la barre de gestion des fenêtres de l’espace de travail.

Pins

Fermeture des fenêtres

Dans les évolutions anecdotiques, sur lesquels je me sens obligé de m’arrêter, il y a une nouvelle fonctionnalité qui permet lorsque l’on fait un clic droit sur l’onglet d’une fenêtre de fermer toutes les fenêtres de l’espace de travail, ainsi qu’une autre pour toutes les fenêtres épinglées. Ces fonctionnalités n’existaient pas sous Visual Studio 2010.

 

L’explorateur de solution

A première vue, l’explorateur de solution n’a pas beaucoup changé. La liste de bouton raccourci en haut de la fenêtre a été augmentée.
J’y retrouve les boutons de la précédente version, telle que Rafraichir, Afficher tous les fichiers, etc. Et puis, je découvre un bouton Tous réduire qui permet de réduire l’arbre de la solution à ces nœuds racines, ainsi qu’un bouton Propriété qui me permet d’ouvrir la fenêtre Propriétés de l’élément sélectionné dans mon arbre de solution.
Après une seconde, je découvre cependant un nouveau niveau logique ajouté à l’arbre. Celui-ci décrit et expose le contenu des fichiers ; Accesseur, Méthodes, Evènement, etc.
Un double clic sur l’un de ses éléments nous permet d’ouvrir le fichier, et positionne le curseur, sur celui-ci.
Sa manipulation a également changé. Un simple clic sur un élément de l’explorateur de solution l’ouvre dans la vue de prévisualisation. Un double clic l’ouvre en mode normal.
On trouve aussi un module de Quick Search, qui ouvre l’arbre sur tous les éléments trouvés (Voir image ci-dessous).

SolutionExplorerSolutionExplorerSearch

 

Les langages

Modern UI

Visual Studio 2012 fourni tous les outils pour permettre de développer des applications sous Windows 8 en Modern UI. Lorsque l’on souhaite lancer une application de Visual Studio 2012, on peut choisir le mode de lancement  (voir image ci-dessous).
Dans le cas des applications en Modern UI, on y trouve un simulateur qui ouvre une fenêtre qui ressemble à une tablette (voir image ci-dessous).
A l’aide de cette fenêtre, via les boutons à droite de l’écran, on peut simuler une touche du doigt (on ne peut pas tous être équipé d’écran tactile), faire pivoter la fenêtre (très important à tester), changer la résolution, etc.
Une autre innovation est la fonctionnalité Store, que l’on obtient grâce à un clic droit sur le projet. Il permet d’accédé à toutes les fonctionnalités de déploiement d’une application sur le Windows Store.

StartApp1Simulator

Web

Pour les développeurs web, l’auto complétion de Javascript, JQuery et des feuilles CSS est apparue. L’équivalant des commentaires C# (en ///) viens de faire son apparition. Permettant d’associer un commentaire à un paramètre d’une fonction, que l’on retrouve dans la bulle info de l’auto complétion.
Coté HTML, de petite innovation, bien pratique. Par exemple, lorsque l’on modifie une balise, sa balise homologue de fermeture est modifiée aussi, et vice-versa.
Tout comme Modern UI, les sites peuvent être lancés avec un navigateur (installé indépendamment sur la machine) ou à partir du Page inspector (voir image à gauche).
Le Page inspector permet de debugger plus efficacement le site en live.
Enfin, Visual Studio 2012 intègre les nouvelles normes de W3C appelé WAI-ARIA.
StartApp2

 

Conclusion

Il y aurait encore beaucoup de choses à explorer (l’explorateur de tests unitaires, la barre de Quick Launch, la connexion à TFS…), mais voilà déjà mes premières impressions sur cette  nouvelle version 2012 !

 

Suivre

Recevez les nouvelles publications par mail.