Le Post de MCNEXT

Les articles des consultants de MCNEXT

Bienvenue sur le Post de MCNEXT !

  • MCNEXT , La Build 2014 et la SharePoint Conference

Chaque année, MCNEXT propose à des collaborateurs de l’entreprise de se rendre aux grandes conférences de Microsoft aux Etats Unis. L’objectif est de découvrir les nouveautés et de nous permettre de mieux appréhender les grandes évolutions technologiques. Chez MCNEXT, nous aimons partager et les comptes rendus de toutes les sessions auxquelles ils participent sont publiés sur mcnextpost.com .

Retrouvez ici tous les post pour la Microsoft Build 2014 et ici tous ceux de la SharePoint Conference 2014

  •  Windows 8 

Vous avez un projet d’application Windows 8 ? Rendez vous le 29 avril chez MCNEXT

MCNEXT vous invite à venir découvrir pourquoi et comment repenser vos applications d’entreprise en redéfinissant les usages, en bénéficiant du tactile, de l’innovation des nouveaux types de machines et en vous appuyant sur les atouts de Windows 8.

Entity Framework : Code First avec Migration 2/2

La 1ère partie de l’article concernait l’implémentation de Code First Migration.

Dans cette 2ème partie d’article sur La migration Entity Framework, nous allons voir:

  • Comment insérer ou mettre à jour des données en même temps que les changements de la structure de la base de données.
  • Configurer la migration pour qu’elle s’effectue automatiquement.
  1. Migration sur les données

    Dans la classe de configuration qui a été créé lors de l’activation de la migration, il y a une méthode Seed (créé par défaut) qui va permettre d’insérer des données.

    En effet lors des migrations il se peut que le (ou les) tables doivent être détruites pour être reconstruite, donc éviter de perdre des données il est possible de insérer dans la configuration de migration.

    Pour cela il faut utiliser la méthode AddOrUpdate qui a pour avantage de ne pas faire uniquement des insert mais s’il l’enregistrement existe déjà elle fera un update (ca évide donc d’avoir des doublons).


    Il y aussi une autre possibilité c’est d’utiliser un script SQL, et de l’exécuter dans la méthode seed, par exemple :

  2. Migration automatique

    La migration automatique permet d’appliquer automatiquement les changements à la base de données lors de l’exécution de l’application.

    Pour l’activer il faut:

  • modifier la propriétés AutomaticMigrationsEnabled et la renseigner à true, et rajouter une autre propriété AutomaticMigrationDataLossAllowed = true car la migration automatique ne permet pas la perte de données. On a donc dans la configuration :


  • Implémenter la méthode OnModelCreating:

    Dans la classe configuration il faut rajouter une méthode OnModelCreating avec :

    Database.SetInitializer(new MigrateDatabaseToLatestVersion<MvcApplicationEFCodeFirst.Models.MvcMusicStoreEntities, Configuration>());

    Ce qui nous donne:


Et voilà lors de l’exécution de l’application, la base de données sera mise à jour à partir du model.
Remarques sur la migration automatique:
La migration automatique peut se révéler pratique dans un cadre de développement, par contre à mon sens elle n’est pas à être utilisée en production car lors de modification de la base des données peuvent être perdues.

Comment lier une application Windows 8.1 à une application Windows Phone 8.1 (Universal app)

Les applications Universelles ou Universal Apps offrent la possibilité aux développeurs de créer une application qui cible différentes plateformes, du Windows Phone 8.1 au Windows 8.1 en passant par Windows RT.

En réalité lors de la création d’un projet Universal App, Visual Studio va créer deux projets (l’app Windows 8.1 + l’app Windows Phone 8.1) et un espace de partage.

On peut intégrer dans cet espace de partage tous les fichiers susceptibles d’être communs : les vues, le code business… Dans beaucoup d’applications, l’ergonomie va être spécifique pour chaque plateforme et le partage du code d’IHM risque donc d’être très compliqué, voir impossible.

Il est maintenant possible avec Windows Phone 8.1 de développer des applications en HTML5/JS, mais il faut obligatoirement passer par le modèle Universal App.

Et voici les étapes pour lier une application W8.1 à une app WP8.1 :

Étape 1 : Le store

  1. Se connecter au backoffice du store Windows Phone : http://dev.windowsphone.com avec le même compte que celui utilisé pour le backoffice du store Windows http://dev.windows.com.
  2. Aller sur le Dashboard.
  3. Cliquer sur le bouton Submit App.
  4. Cliquer sur le chiffre 1 pour renseigner les informations de l’application.
  5. Il suffit maintenant de choisir le nom de l’application dans la liste (NB: il ne faut pas le renseigner manuellement) et de cliquer sur le bouton « Associate app ».store1store2
  6. Choisir une catégorie et enregistrer les modifications.

 

 

Étape 2 : Visual Studio

Pour transformer une application Windows 8 .1 en Universal App, il suffit de faire un clic droit sur le projet et choisir « Add Windows Phone 8.1 »

vs1

Deux nouveaux projets sont alors créés : l’application Windows Phone et le projet Shared.

vs2

Clic droit sur le nouveau projet Windows Phone, aller dans « Store » et cliquer sur « Associate App with the Store ».

vs3

 

Une fenêtre s’affiche, il faut se connecter avec le compte du store pour obtenir la liste des applications créées dans le dashboard.

vs4

On sélectionne la bonne application et on valide.

Il ne reste plus qu’à faire les développements et soumettre l’application pour la certification :) !

 

Entity Framework : Code First avec Migration 1/2

Entity Framework est pour rappel un ORM (Object RelationShip Manager) qui permet de faire :

  • Le mapping entre la base de données et les classes Entités
  • De proposer les méthodes du CRUD (Create Read Update Delete)

Il existe 3 workflows :

  • dataBase First
  • Model First
  • Code First

Lors de la création d’un projet MVC 4 dans Visual Studio 2012 , EF 5 est intégré par défaut
Cet article a pour but d’expliquer comme implémenter Entity Framework en utilisant le workflow Code First (et générer la base de données)

  1. Code First

    Le workflow Code First consiste à écrire comme son nom l’indique en 1er les classes entités (qui représentent le Model) puis:

  • soit de faire le mapping avec une base de données déjà existante
  • soit à partir de ces dernières de générer la base de données.
  1. Les classes Entités (Model)

    Dans notre exemple nous travaillons sur une application simple de gestion de Music (Music Store)
    Nous notre projets MVC dans le répertoire Models nous allons créer 2 classes qui représentent nos entités comme suit :

    Album.cs

    Genres.cs

  2. La classe de mapping (DbContext)

    Dans Models on crée une classe MvcMusicStoreEntities.cs qui hérite de DbContext, ça représente notre DBcontext



    Dans notre exemple on a fait le mapping :

    Table Albums –> classe Album

    Table Genres –> classe Genre

Lire la suite

Les blogs pour faire de la veille technologique en .NET

Les équipes de MCNEXT espèrent que ce blog vous permet d’améliorer toujours un peu plus vos connaissances des technologies Microsoft. Il existe néanmoins d’autres blogs qui valent le détour sur ce sujet. En l’occurrence, je vais vous parler des blogs que je consulte régulièrement – via leur flux RSS – pour me tenir au courant des dernières avancées en matière de développement en .NET.

Les auteurs de ces différents blogs, lorsqu’ils ne travaillent pas pour Microsoft, sont généralement des MVPs reconnus par la communauté pour leur expertise technique et leurs capacités à partager leurs connaissances. Par ailleurs ils ont tous un point commun : c’est un vrai plaisir de les lire.

Croyez bien que c’est tout à fait involontaire de ma part, mais tous ces blogs sont en anglais. J’espère donc que vous maîtrisez la langue de Shakespeare.

Scott Guthrie est le directeur de toute la stack web chez Microsoft, et même plus encore. Son blog lui sert à annoncer régulièrement les nouveautés dans le monde d’ASP.NET et d’Azure. Ses articles sont généralement pointus mais très bien expliqués, et il en publie de nouveaux à intervalle très régulier. Je lui reprocherais juste un côté un peu "corporate", et le fait que les sujets ont tendance à s’entrechoquer. En fonction de vos affinités, tout ne vous intéressera pas, mais cela reste néanmoins une source d’information incontournable si vous êtes du métier.

Scott Hanselman est le pendant plus "geek" de Scott Guthrie. Lui aussi travaille pour la stack web, à un degré de hiérarchie moindre, et lui aussi publie très régulièrement de nouveaux articles. Mais il est par ailleurs très drôle, a un don pour savoir mettre en avant des connaissances vraiment utiles, et il n’hésite pas à parler de sujets très variés tout en réunissant à les connecter au monde du développement informatique. A lire absolument : ses réflexions sur sa condition de diabétique de niveau 1 et l’état de la technologie dans ce domaine.

Ayende Rahien, de son vrai nom Oren Eini, est une sommité dans le monde Microsoft. Spécialiste du développement .NET, il publie au minimum un article par jour, et ceux-ci sont souvent passionnants. Il a la particularité de publier des articles à suivre sous forme de feuilleton, autour d’un sujet bien précis : NHibernate, le développement de son propre moteur de stockage de données (VORON), ou plus récemment le fonctionnement de Lucene.NET. Au fil des ans il est devenu de plus en plus pointu, et j’avoue avoir parfois du mal à suivre lorsqu’il explique les algorithmes à l’œuvre dans certains produits que commercialise sa société (Hibernating Rhinos), mais c’est aussi un très bon moyen de se remuer les méninges.

Rick Strahl est aussi un auteur très prolifique. Il n’est d’ailleurs pas rare de tomber sur son blog au détour d’une recherche depuis Google sur le monde ASP.NET. Cette technologie est sa grande spécialité et ses articles sont une vraie mine d’or en matière de bonnes pratiques, astuces diverses et solutions aux nombreux problèmes auxquels il a pu lui-même été confronté. Un gros défaut cependant : ce salaud habite à Hawaï.

Jeff Atwood et son blog Coding Horror. Jeff Atwood n’est autre que l’un des fondateurs de Stackoverflow que je ne vous ferai pas l’insulte de présenter. Son blog est moins technique et parle d’avantage de choses comme la motivation, comment recruter les bons collaborateurs, comment s’organiser, et c’est tout aussi passionnant, surtout sous sa plume.

K. Scott Allen est un vieux briscard du monde .NET qui partage ses astuces et réflexions en matière de développement informatique. Ses connaissances épousent tout un pan de la galaxie .NET, et il est n’est pas avare en exemples de code que vous passerez de nombreuses heures à étudier.

Kraig Brockschmidt est l’auteur du très bon livre Programming Windows Store Apps With HTML CSS and JavaScript, disponible gratuitement au téléchargement chez Microsoft Press, dont la seconde édition vient juste de sortir. Ce grand spécialiste de WinJS profite de son blog pour distiller des connaissances de base sur son sujet de prédilection, ou aborder des aspects qui ne trouvaient par leur place dans l’ebook.

Troy Hunt est une découverte récente pour ma part. Spécialiste d’Azure et de sécurité informatique (en particulier autour de la stack web .NET), Troy publie très régulièrement des articles longs et très détaillés. Il a par exemple abordé les bonnes pratiques à appliquer en matière de mot de passe informatique, de quelle manière selon lui une grande compagnie américaine s’est faite pirater sa base de comptes clients. Dans un billet plus récent, il explique avec brio comment fonctionne le bug qui frappe actuellement OpenSSL, pourquoi il faut s’en émouvoir, comment s’en protéger, et quels impacts celui-ci peut avoir sur un système informatique. A lire absolument.

[Asp.net MVC] – Obtenir l’url complète d’une image

Voici une méthode  d’Extension qui permet d’obtenir l’url complète d’une image (ou autre fichier)

public static class UrlExtensions
{
public static string AbsoluteContent(this UrlHelper urlHelper, string contentPath)
{
Uri requestUrl = urlHelper.RequestContext.HttpContext.Request.Url;
string absolutePath = string.Format("{0}{1}",
requestUrl.GetLeftPart(UriPartial.Authority),
urlHelper.Content(contentPath));
return absolutePath;
}
}

Et son utilisation :

Url.AbsoluteContent("~/media/image.jpeg") 

retourne

http://domain/media/image.jpeg

[70-461] Querying Microsoft SQL Server 2012 – Avril 2014

Suite au passage de la certification 70-461 "Querying Microsoft SQL Server", voici mon compte rendu.

Concernant le contenu de l’examen c’est la même chose que ce qu’on dit mes collègues. Pour ne pas faire doublon je vous renvoie vers leurs posts :

 

Les questions m’ayant posées le plus de problèmes sont celles portant sur la différence entre une procédure stockée et une UDF (User-Defined Function).

L’UDF et les procédures stockées sont toutes deux des objets SQL Server qui stockent une ou plusieurs instructions T-SQL sous un seul nom, prenant la forme d’une routine exécutable. Même si vous pouvez mettre en œuvre la même fonctionnalité ou une similaire en utilisant soit une UDF ou soit une procédure stockée, le code sera significativement différent selon la technique que vous choisissez.

Les avantages de l’utilisation des procédures stockées ou des fonctions sont les suivants :

  • Vous pouvez créer la procédure ou la fonction une fois, la stocker dans la base de données et l’appeler autant de fois que vous le voulez dans votre programme.
  • Les procédures stockées et les fonctions Transact-SQL définies par l’utilisateur réduisent le coût de compilation du code Transact-SQL en mettant en cache les plans pour les réutiliser au cours d’exécutions répétées. Elles n’ont donc pas besoin d’être ré-analysées et ré-optimisées à chaque utilisation, ce qui réduit nettement les durées d’exécution.
  • Les commandes d’une procédure ou d’une fonction sont exécutées comme un seul lot de codes. Cela peut réduire considérablement le trafic réseau entre le serveur et le client, car seul l’appel pour exécuter la procédure ou la fonction est envoyé sur le réseau.

 

Voici les principales différences entre les fonctions et les procédures stockées :

  • Une UDF doit renvoyer un seul et unique jeu de résultat. Une procédure stockée peut quant à elle retourner une valeur ou même plusieurs jeux de résultats ou voir même ne rien retourner du tout.
  • Vous pouvez utiliser une UDF directement dans une instruction SELECT ainsi que dans les clauses ORDER BY , WHERE ou FROM, tandis que vous ne pouvez pas utiliser une procédure stockée dans une instruction SELECT.
  • Une UDF ne peut pas utiliser une fonction non déterministe (qui retourne un résultat différent avec les mêmes paramètres d’entrée) comme GETDATE(), NEWID(), ou RAND(), alors qu’une procédure stockée peut utiliser ces fonctions.
  • Une UDF ne peut pas modifier les variables d’environnement du serveur; une procédure stockée peut .
  • Une UDF arrête toujours exécution du code en cas d’erreur, alors qu’avec une procédure stockée on peut continuer à l’instruction suivante en utilisant le code de gestion d’erreur approprié.
  • Une UDF peut être appelée à partir de procédure alors qu’une procédure ne peut pas être appelée à partir de l’UDF.
  • Une procédure ne peut pas être utilisée dans une instruction SELECT alors qu’une fonction peut être intégrée dans une instruction SELECT.

 

Il existe plusieurs types de fonctions définies par l’utilisateur :

  • Fonction scalaire :Les fonctions scalaires définies par l’utilisateur retournent une valeur de donnée unique dont le type est défini dans la clause RETURNS. Une fonction scalaire incluse ne contient pas de corps ; la valeur scalaire est le résultat d’une instruction unique. Le corps d’une fonction scalaire à instructions multiples, défini dans un bloc BEGIN…END, contient une série d’instructions Transact-SQL qui retournent la valeur unique. Le type de retour peut être n’importe quel type de données à l’exception de text, ntext, image, cursor et timestamp.
  • Fonctions tableLes fonctions table définies par l’utilisateur retournent un type de données table. Une fonction table incluse ne contient pas de corps ; la table est le jeu de résultats d’une instruction SELECT unique.
  • Fonctions inlineLes fonctions définies par l’utilisateur inline sont un sous-ensemble de fonctions définies par l’utilisateur qui retournent un type de données table. Les fonctions inline peuvent offrir une fonctionnalité équivalente à celle des vues paramétrées.
  • Fonctions systèmeSQL Server fournit de nombreuses fonctions système que vous pouvez utiliser pour effectuer diverses opérations. Elles ne peuvent pas être modifiées.

 

 

 

70-461: Querying Microsoft SQL Server 2012

Voici un récapitulatif de quelques points à connaitre pour mieux réussir votre certification :

1. Questions XML (4 questions)

C’était parmi les questions qui me faisaient peur vu que nous n’utilisons pas vraiment du XML dans nos missions, mais je vous rassure ce n’est pas aussi difficile que ça, il suffit de connaitre la différence entre :

  • FOR XML RAW
  • FOR XML RAW, Elements
  •  FOR XML AUTO
  •  FOR XML AUTO, Elements
  •  FOR XML PATH

2. Il y a aussi des questions sur l’optimisation, par exemple :

Le temps de traitement est très long, il faut trouver une solution afin de réduire le temps de réponse

3. Il faut connaitre la différence entre :

  • GROUPING SET / ROLLUP/ CUBE
  • Union / union all
  • LAG / LEAD
  • RANK () / DENSE_RANK () / NTILE ()…

4. Autres types de questions

Exemple : vous devez faire un lot de traitement, ils vous décrivent l’attendu de ce traitement et c’est à vous de choisir quel objet il faut utiliser :

  • Scalar user-defined function
  • Inline user-defined function
  • Stored procedure…

Bon courage :)

laila

70-461: Querying Microsoft SQL Server 2012

Vous trouverez ci-dessous quelques points utiles pour ceux qui souhaitent passer la certification 70-461

Il y’avait 2 types de questions :

-        Les QCM : un ou plusieurs choix possibles pouvant aller jusqu’à 8 choix !

-        Les constructions de batch : création d’une requête par drag and drop

Plusieurs sujets retombaient sur de nombreuses questions:

  • Utilisation des fonctions d’ordre : rank(), dense_rank(), ntile().
  • Rendu XML des requêtes FOR XML. Bien connaître la subtilité entre FOR XML RAW vs AUTO vs PATH avec l’option ELEMENTS ou pas.
  • Gestion d’erreurs : utilisation de @@ERROR, XACT_STATE(), @@TRANCOUNT
  • Les triggers surtout l’utilisation de « instead of »

Eléments qui tombent dans une ou deux questions :

  • Incrémentation automatique avec cycle.
  • Utilisation de SCHEMABINDING

Eléments qui m’ont posés problèmes :

  • A priori l’opérateur « + » est mieux que la somme …
  • « NOT IN » équivalent à « <> ALL »
  • Différence entre UNION et UNION ALL, le dernier garde les doublons

Voilà pour mon retour,

Bon courage aux prochains !

Ezra

[Build 14] – Microsoft Build Developer Conference | April 2 – 4, 2014

Envoyée par Alexandru

BUILD 2014

 

 

[Build 14] – How to Analyze Performance Issues in Your Windows and Windows Phone Apps

Mail de John
Samedi 5 avril 2014 20:33
How to Analyze Performance Issues in Your Windows and Windows Phone Apps

La performance est un problème d’expérience utilisateur. C’est l’utilisateur qui jugera. Avoir une application performante améliore les notes dans le store.

Les outils :
- Visual Studio
- WP 8.1 SDK VS Dev Power Tools
o Tracer l’application
- Windows Performance Toolkit
o Tracer l’application et faire une analyse approdonfie
o http://aka.ms/downloadWPT

Identifier les scenarii :
- Se focaliser les scenarii qui
o Ont une vraie valeur pour les utilisateurs
o Sont les clefs de l’utilisation de l’application
o Ont des problèmes de performances visibles
- Fast scenarios
o App launch
o Page navigation
o User Interaction
- Fluid scenarios
o Glitch free animation
o Glitch free panning
o Keeping up with the panning

Demo :
- Capturer une trace
- Localiser un scenario dans la trace
- Investiguer les problèmes de vitesse
- Investiguer les problèmes de fluidité

Cette démonstration utilise à la fois de XAML et du HTML pour montrer que WPA fonctionne dans les deux environnements à la fois sur Windows et sur Windows Phone.
John

Suivre

Recevez les nouvelles publications par mail.