Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide
Les années passent et se ressemblent, beaujolais nouveau, fête de la musique et bien entendu, le WygDay !

Réservez dès aujourd'hui la date !

Nous ressentons tous les effets du ralentissement économique. On le voit, les décisions d'investissement se font de plus en plus rares et difficiles. Mais, à l'instar de Microsoft qui, à l'encontre de l'avis des analystes, annonce 1 milliard de dollars d'investissements supplémentaires en R&D, ne devriez-vous pas également investir maintenant pour créer votre après-crise et gagner des parts de marché ?

Au programme

Lors de son WygDay 2009, Wygwam(TM) va vous montrer les technologies qui seront fondamentales à votre business de demain. Nous parcourrons, tour à tour avec nos partenaires, des thèmes tel que Green IT, Cloud Platform, Microsoft Surface, Live Mesh, Virtual Earth/Google Maps, .NET 4 ou encore Azure. Fidèle à son habitude, Wygwam vous présentera ces technologies par l'usage et sous forme d'un retour d'expérience sur des projets concrets.

Et maintenant ?

Nous vous avons réservé un panel d'orateurs d'exception pour couvrir ces thèmes clés, alors n'hésitez plus, réservez dès aujourd'hui le 9 juin 2009 et venez comprendre comment les technologies vont supporter votre futur.



Aurelien
Member of WygTeam

Les équipes de Redmond viennent de mettre à disposition la version Beta ASP.NET MVC.

Vous pouvez la télécharger à l'url suivante :
http://www.microsoft.com/downloads/details.aspx?familyid=a24d1e00-cd35-4f66-baa0-2362bdde0766&displaylang=en

PS: N'oubliez pas de désinstaller les CodePlex Preview précédentes

Aurelien
Member of WygTeam

C'est dans la nuit que l'équipe Microsoft ASP.NET Ajax a publié sa nouvelle Preview de la future version du Framework JavaScript.

Vous pouvez retrouver cette release à l'url suivante : Ajax Preview 2.

Alors quoi de neuf me direz vous ??? Et bien au menu de cette deuxième Preview, nous allons retrouver :

  • Meilleur gestion du binding
  • Modification du DataView
  • Apparition de l'Observer Pattern
  • Réecriture des MarkupExtensions

Pas mal de modifications de code, l'idée d'ensemble reste la même et semble très prometteuse.

Stay Tunned, prochaine release prevue courant Octobre !

Aurelien
Member of WygTeam

C'est avant-hier que les équipes ASP.NET de Microsoft ont publié une nouvelle Preview sur CodePlex.

Pour cette nouvelle release, nous avons le droit à l'arrivée d'un nouveau package intitulé ASP.NET Generated Image.

Ce projet a pour but de fournir une API ainsi qu'une méthodologie de mise en place d'image dynamique au sein des applications ASP.NET.


Rappelant de loin le contrôle DynamicImage qui était présent lors des versions bétas de Visual Studio 2005, ASP.NET Generated Image se veut plus global et ne sert pas uniquement à sortir des images d'une base de données.

Proposant un système de Transformation pouvant être étendu, ce type de handler permettra, par exemple, de traiter une gestion de miniature.

Un des exemples fournis montre comment créer une classe dérivant ImageTransform afin d'inclure un copyright paramétrable à la volée.

Je vous invite à découvrir cette Preview en détail à l'url suivante :

http://www.codeplex.com/aspnet/Wiki/View.aspx?title=WebForms


Ainsi que la partie Downloads (Release + Exemples) :

http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=16449

Que penser de cette release lorsque l'on pense aux possibilités de module IIS7 ??? Pensez donc aux hébergements mutualisés, nous n'avons pas forcement accès aux modules IIS7 / HttpModules, il deviendra alors très simple de reproduire ce comportement au sein de nos applicatifs.

Aurelien

Member of WygTeam

Lors du développement de DataBoundControl, nous utilisons la persistence de propriétés pour les éléments de la collection "bindée".

Je me suis retrouvé face à un effet de bord de l'utilisation de cette propriété. Voici la première déclaration utilisée :

1
2
3
4
[Category("Data")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[PersistenceMode(PersistenceMode.InnerProperty)]
public virtual TabHeaderCollection Items

L'utilisation de mode InnerProperty a pour effet de proposer 2 éléments dans l'intellisence de Visual Studio, la propriété Items ainsi que le type des éléments sous-jacents :

Afin d'arriver au même comportement qu'une DropDownList et masquer de l'intellisence la propriété Items, il vous suffit d'utiliser le mode InnerDefaultProperty :

1
2
3
4
[Category("Data")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public virtual TabHeaderCollection Items

Et voici le résultat :

Aurelien
Member of WygTeam

C'est suite à la publication de Loic Bar et après être remonté à la source de cet exemple que j'ai décidé de faire ce billet.

L'idée de cet exemple est de faire un effet de "rollover" sur une ligne de tableau avec selection/deselection d'une ligne via click.

Rien de bien compliqué, cet exemple est juste là pour comparer l'utilisation de jQuery et de msAjax.

Je vous propose donc ici de voir cet exemple d'un autre oeil de façon à comprendre que ces benchmarks ne sont pas forcement pertinents.

Utilisateur des deux Framework mis en compétition, j'avoue avoir une préférence pour msAjax. Cependant, l'utilisation de jQuery est tout aussi agréable.

J'apporte ici juste une autre façon d'aborder le problème et surtout de le voir !

Regardons donc de plus près la partie scripting nous permettant de faire les effets mouseover, mouseout et click sur notre tableau.

jQuery - Nous utilisons ici la méthode $(document).ready() pour déclencher notre script au chargement de la page.
L'utilisation du "jQuery selector" nous permet de directement boucler sur tous les TR de la table afin d'y associer les évènements correspondants.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$(document).ready(
function() {
$('table#<%= this.gv.ClientID %> tr')
.mouseover(
function() {
if (this.className != 'row-select') {
this.className = 'row-over';
}
}
)
.mouseout(
function() {
if (this.className != 'row-select') {
this.className = 'data-row';
}
}
)
.click(
function() {
this.className = (this.className == 'row-select') ? 'data-row' : 'row-select';
}
);
}
);

msAjax - Nous utilisons ici la méthode Sys.Application.add_load() pour déclencher notre script au chargement de la page.
L'utilisation de la méthode Array.forEach() nous permet de directement boucler sur tous les TR de la table afin d'y associer les évènements correspondants au travers de $addHandlers().

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Sys.Application.add_load(
function() {
Array.forEach(
$get('<%= this.gv.ClientID %>').getElementsByTagName('TR'),
function(element, index, array) {
$addHandlers(
element,
{
mouseover: function(eventElement) {
var tr = eventElement.target.parentNode;
if (tr.className != 'row-select') {
tr.className = 'row-over';
}
},
mouseout: function(eventElement) {
var tr = eventElement.target.parentNode;
if (tr.className != 'row-select') {
tr.className = 'data-row';
}
},
click: function(eventElement) {
var tr = eventElement.target.parentNode;
tr.className = (tr.className == 'row-select') ? 'data-row' : 'row-select';
}
}
);
},
null
);
}
);

Comme vous pouvez le constater ci-dessus, la partie scripting diffère très peu entre jQuery et msAjax une fois cette dernière réecrite.

L'utilisation de la méthode Array.forEach() permet à la partie msAjax d'utiliser une syntaxe se rapprochant d'un "jQuery Like".

Voici donc les résultats associés à ces 2 pages :

jQuery : 134 KB

msAjax : 159 KB

Cela correspond aux différents tests déjà paru sur la toile ces derniers temps.

Je vais maintenant vous montrer comment cela peux devenir une question de point de vue !

En effet, si l'on creuse un peu pour comprendre ce qu'il se passe, la page msAjax charge beaucoup plus de scripts que nécessaire.

Effectivement, les scripts nécessaires aux UpdatePanel, PageMethods, Globalization, Localization sont inclus dans cette page exemple.

Cependant, nous n'avons besoin que du "Core Framework" pour réaliser cette démonstration.

Modifions donc notre ScriptManager de la manière suivante :

1
2
3
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="false" EnablePartialRendering="false"
EnableScriptGlobalization="false" EnableScriptLocalization="false" ScriptMode="Release">
</asp:ScriptManager>

Que donne ce nouveau paramétrage ??

jQuery : 134 KB

msAjax - 129 KB

Etonnant, non ???

Je dirais pas tant que cela, il ne faut pas oublier que la qualité d'un Framework se juge par la connaissance qu'en ont ces utilisateurs. Connaissant très bien le Framework msAjax, il est très facile pour moi d'inverser le résultat de ce benchmark comme je viens de vous le démontrer.

Le meilleur avis que vous pouvez vous faire sur ces deux Framework sera en les utilisant au quotidien.

PS: Vous trouverez le code complet de ces exemples en attachement de ce billet.

Aurelien
Member of WygTeam

Le Device Filtering est une fonctionnalité très peu connue dans le monde ASP.NET.

A l'origine, cette fonctionnalité a été mise en place pour filtrer en fonction du "Device", par exemple PIE pour Pocket Internet Explorer (présent sur Pocket PC) mais elle peut être utilisée dans bien d'autre contexte car elle repose sur les identifiants du fichier .browser qui se situe dans "<SysDrive>\Windows\Framework\v2.0.50727\CONFIG\Browsers".

L'idée est donc de prefixer une propriété par un identifiant du fichier browser de la façon suivante :

1
2
3
4
5
<asp:Label ID="lbl" 
runat="server"
Text="Hello"
ie:Text="Hello IE"
mozilla:Text="Hello Mozilla" />

Cette fonctionnalité, disponible uniquement en déclaratif, vous permettra donc d'adapter votre controle au device ou navigateur précisé.

Cela peut être utile dans bien des cas comme la gestion des styles par exemple :

1
2
3
4
5
<asp:Label ID="lbl" 
runat="server"
Text="Hello"
ie:CssClass="IEOpacity"
mozilla:CssClass="MozillaOpacity" />

Cet exemple évitera d'avoir des "hacks" CSS dans vos feuilles de styles et donc d'adapter le comportement au navigateur précisé.

Mais cela va bien plus loin, prenons l'exemple d'un Menu :

1
2
3
4
5
6
7
8
9
10
<asp:Menu runat="server" ID="menu">
<StaticMenuStyle CssClass="StaticMenu" />
<ie:StaticMenuStyle CssClass="IEStaticMenu" />
<ie:items>
<asp:MenuItem Text="IE Item" />
</ie:items>
<Items>
<asp:MenuItem Text="Other Item" />
</Items>
</asp:Menu>

Le "Device Filtering" peut donc s'appliquer à un grand nombre d'éléments de la plateforme ASP.NET, très utile pour gérer les périphériques de type "mobile" (PIE par exemple), il peut aussi s'averer être utile dans vos développements quotidiens.

Aurelien
Member of WygTeam

Petite liste de liens sur mes occupations actuelles :

Guidance Automation :

Pattern & Practices : http://msdn.microsoft.com/en-us/practices/default.aspx
GAX Extensions Library : http://www.codeplex.com/GEL
Guidance Templates : http://www.codeplex.com/GuidanceEngineering
Design for Operations : http://www.codeplex.com/dfo

Développement SharePoint :

L'arrivée de Renaud au sein de la WygTeam n'est pas étrangère à ma découverte du développement sous SharePoint !!

WebParts : http://msdn.microsoft.com/en-us/library/ms476318.aspx
Sites / Pages : http://msdn.microsoft.com/en-us/library/ms464558.aspx
Features / Templates : http://msdn.microsoft.com/en-us/library/ms439657.aspx
Custom Field Type : http://msdn.microsoft.com/en-us/library/ms446361.aspx

Développement Jeux :

L'arrivée de SilverLight 2.0 Beta 1 fait ressortir des cartons certains projets qui n'avaient pas aboutis en JavaScript ...

SilverLight Games 101 : http://silverlightrocks.com/Community/blogs/silverlight_games_101/
Tile Based Games : http://www.tonypa.pri.ee/tbw/
Outside of Society : http://oos.moxiecode.com/

Les premiers tests que nous avons effectués sont positifs, petite "preview" de notre travail :

Maintenant, il ne me reste plus qu'à soudoyer Guillaume et Axel, j'ai besoin de "Sprites" !!!!!!!!!

Aurelien
Member of WygTeam

Le développement de WebControls ou de Contrôles Ajax ne se limite pas à du rendu HTML, il ne faut en aucun cas oublier leurs intégrations au sein de l'environnement Visual Studio. Il est donc primordial d'offrir à l'utilisateur tous les outils qui lui faciliteront l'intégration et l'utilisation de nos WebControls.

Après cette courte introduction, prenons un cas précis. Travaillant actuellement beaucoup autour des contrôles Ajax, il m'arrive de plus en plus souvent d'implémenter la notion de ServicePath / ServiceMethod sur mes contrôles. Pour rappel, ces propriétés permettrons à mon contrôle Ajax d'appeler une méthode de WebService afin de faire un quelconque traitement. Ces méthodes sont vraiment intéressantes, mais rien n'est mis à notre disposition pour intégrer de façon optimale la propriété ServicePath.

Effectivement, le screenshot suivant vous montre qu'il n'existe pas d'éditeur afin de sélectionner l'url de notre WebService au sein de notre projet.

WebServiceUrlEditor1

Ceci nous oblige donc à saisir l'url de notre WebService, ce qui n'est pas des plus optimale en terme d'intégration au sein de Visual Studio.

Il existe cependant une solution permettant d'associer un éditeur à cette propriété, mais il n'existe aucun éditeur pour les WebServices. Aucun problème, voici comment implémenter votre propre éditeur afin de proposer une interface de sélection à l'utilisateur.

Tout éditeur d'url de la plateforme .Net hérite de la classe System.Web.UI.Design.UrlEditor, par exemple System.Web.UI.Design.ImageUrlEditor, nous allons donc ici créer un WebServiceUrlEditor qui nous permettras d'obtenir une interface de sélection.

Pour ceci, nous hériterons de System.Web.UI.Design.UrlEditor et nous allons surcharger les propriétés Caption et Filter.
La propriété Caption permettant de définir le titre du formulaire de sélection, Filter permettant de filtrer les fichiers qui apparaîteront dans ce dernier.

Voici donc mon implémentation de Wygwam.Design.WebServiceUrlEditor :

using System.Web.UI.Design;

namespace Wygwam.Design
{
    public class WebServiceUrlEditor : UrlEditor
    {
        protected override string Caption
        {
            get
            {
                return "Sélectionner un WebService";
            }
        }
        protected override string Filter
        {
            get
            {
                return "WebServices (*.asmx)|*.asmx|All files (*.*)|*.*|";
            }
        }
    }
}

Une fois cette implémentation effectuée, nous n'avons plus qu'a renseigner l'attribut Editor au niveau de notre contrôle :

[UrlProperty]
[ExtenderControlProperty]
[TypeConverter(typeof(ServicePathConverter))]
[ClientPropertyName("servicePath")]
[Editor(typeof(Wygwam.Design.WebServiceUrlEditor),
 typeof(System.Drawing.Design.UITypeEditor))]
public virtual string ServicePath
{
    get { return (string)(ViewState["ServicePath"] ?? string.Empty); }
    set { ViewState["ServicePath"] = value; }
}

Au dela des attributs habituels de la méthode ServicePath, nous venons d'ajouter l'attribut qui permettra à Visual Studio d'afficher notre propre éditeur.

Voici donc le résultat de l'intégration de notre éditeur au sein de Visual Studio :

WebServiceUrlEditor2

WebServiceUrlEditor3

Lorsque l'on voit que l'implémentation d'un tel éditeur ne prends que quelques lignes de code, il serait dommage de ne pas en profiter pour simplifier l'utilisation de nos WebControls.

 

Aurelien
Member of WygTeam

Ma dernière session de ce MIX07 fût orientée Designer. La présentation de cette brique E-Commerce était vraiment sympathique, tant au niveau développeur que designer car elle faisait bien comprendre que la séparation des interfaces via fichiers XAML permettait l'utilisation de Expression Blend sans avoir notion du code se trouvant derrière. La séparation en terme physique des fichiers XAML est donc une piste des plus intéressante pour arriver à ce résultat.

La facilité de paramétrage de l'ensemble en fait un projet des plus intéressants pour les hebergeurs qui pourront, comme ils le font aujourd'hui avec des produits comme DotNetNuke, étendre leur offre avec une solution E-Commerce. Solution rêvée pour les petites et moyennes entreprises n'ayant pas forcement besoin de sur-mesure.

Le but de cette brique E-Commerce était de nous présenter un site nouvelle génération utilisant des vidéos pour les présentations de produits (la démo était basée sur AdventureWorks).

[Image]

Mais ce projet va bien au dela de ce que je pensais car il s'agit en fait d'une brique logicielle paramétrable permettant à tout un chacun de monter un site E-Commerce. Nous connaissons tous les problématiques liés au E-Commerce qui en font une des briques logicielles les plus difficiles à génériser lorsque l'on arrive au processus de commande / adresses / transporteurs ... Microsoft propose donc ici une implémentation d'un Pipeline basé sur Workflow Foundation pour réussir au mieux son paramétrage de ce processus final. Vraiment sympathique comme approche.

[Image]

En terme d'architecture pure, le tout repose sur l'ADO Entity Framework pour amener une souplesse ultime à la partie développement.

[Image]

Il a été annoncé lors de cette session que la première CTP de ce projet serait disponible d'ici 1 mois avec une prévision de RTM pour courant 2008.

Je vous conseille donc de surveiller ce projet au travers de ces différentes url :

Stay Tuned...

PS: Ayant un petit soucis avec LiveWriter, je mettrais les images de ce post dès mon retour en France.

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 18:29 par Aurelien | 0 commentaire(s)
Classé sous :

Après avoir vu le composants codename "Oryx" lors du TechEd de Barcelone, me voici maintenant dans une session sur un projet "Incubateur" de Microsoft codename "Jasper".

Alors qu'est ce que Jasper ?? Jasper se veut une technologie à base de language dynamique faite pour les Data-Driven Web Application.

Je vous avouerais que la démo de Japser était assez bluffante lorsque l'on voit la vitesse ou le site à été mis en place devant nous. Effectivement, en moins de 10 minutes, nous étions devant une interface ressemblant beaucoup à la homepage des blogs codes-sources, à savoir un listing de posts avec tagcloud.

L'ensemble de se projet repose sur les Entity Framework et propose un certains nombre de WebControls permettant une mise en place rapide d'interfaces. Petite mise en bouche de Jasper via une console python :

Le plus impressionant est le composant nommé <jasper:AutoDataSource />, imaginez, vous mettez ce composant dans votre page, vous déclarez votre DynamicContext dans votre Page_Load et utilisez une ListView ayant pour ID le nom d'une de vos tables de votre base de données. Et voila, c'est fini !!! Le composant AutoDataSource se chargera de databindé l'ensemble à la volée une fois que le DynamicContext aura généré l'ensemble des classes nécessaires à la communication avec la BDD au runtime ! Bluffant !!

Ce projet étant encore en cours d'incubation chez Microsoft, vous trouverez plus d'informations à l'url suivante : http://msdn2.microsoft.com/data/bb419139.aspx

Stay Tuned...

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 18:06 par Aurelien | 0 commentaire(s)
Classé sous :

Cette session portait sur les différentes liaisons entre le code managé SilverLight et un navigateur hostant une page HTML le contenant.

La première partie de cette session rentrait plus en détail sur l'utilisation des HTMLElement, HTMLPage, ScriptableObject au sein du code managé. Nous avons ainsi vu comment hooker un événement ClientSide vers une méthode managée ainsi que la récupération des informations du navigateur (appAgent, language, cookie ...). Le plus impressionant dans cette démo est que le contrôle SilverLight n'avait pas de rendu, il servait juste à hooker le ClientSide et ainsi n'écrire aucune ligne de JavaScript tout en controlant l'interface et ses événements en C#. Le concept est vraiment intéressant, mais me connaissant, ce n'est pas dans cette voie que j'utiliserais SilverLight !!

La seconde partie portait sur le IsolationStorage ou comment pouvoir stocker un fichier texte de 1Mo sur le poste client par fichier XAML. Le plus impressionant dans tout ca est que ce fameux fichier est indépendant du navigateur. La démo consistait donc à lire et écrire dans cet IsolationStorage avec pour clou du spectacle, l'écriture d'un état via IE puis ouverture de FireFox pour la relecture. J'avoues que cela semble vraiment intéressant notamment par le fait que nous sommes pas limité aux 4Ko d'un cookie et aussi pour le fait que nous ne sommes pas dépendent du navigateur.

Pour finir cette session, une démo d'un contrôle FileUpload Multiple des plus bluffants via FileOpenDialog en multi-selection. Vous en avez rêvez depuis longtemps, SilverLight le fait !! Alors certes, la méthodologie de transfert n'est pas des plus simple car le seul accès vers ces fichiers est de la Lecture seule. Il vou faut donc parcourir l'ensemble des fichiers, lire leur contenu dans un tableau de bits (byte[]), encoder ce tableau en base64 puis l'envoyer vers un WebService qui se chargera de l'écriture sur le serveur. Pfffiouuu, ca fait beaucoup de choses à mettre en place, mais le résultat final en vaut la chandelle.

Petite surprise en fin de session, l'ensemble des démos est déjà online à l'url suivante, et je ne peux que vous conseillez de les télécharger ne serait-ce que pour le FileUpload : http://mixer1068.mixsandbox.com

Stay Tuned...

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 17:57 par Aurelien | 0 commentaire(s)
Classé sous :

J'en connait un qui doit bien rigoler derrière son clavier, mais oui, j'ai été à la session Office Live !!!

 Pour les incultes, qui comme moi, ne savent pas ce qu'est Office Live, il s'agit d'une plateforme de services permettant aux petites/moyennes entreprises d'être présente sur le web au travers d'un site "public" et de disposer d'outil/modules business dans une partie "private". Ces modules vont du travail collaboratif (Agenda partagés, Contacts etc...) au implémentation business type gestion d'un système de réservation de chambres d'hôtels avec disponibilités, agenda des occupations de chambres etc.

L'offre Office Live se découpe en trois parties :

  • Office Live Basics : Offre gratuite et donc limitée.
  • Office Live Essentials : 19.95$ / Mois
  • Office Live Premium : 39.95$ / Mois

 

Cette session était donc orientée développeur et proposait les différentes possibilités offertes pour la mise en place de modules, l'utilisation des webservices ... Alors pour commencer, il faut savoir que Office Live repose entièrement sur Windows Sharepoint Services 3.0 et que les possiblités d'extensions vont de l'ajout de modules de type business, à la mise en place de Web MashUps ou encore, l'utilisation des webservices pour créer des applicatifs Desktop.

Le sujet étant tellement vaste que je ne saurais que vous conseiller de visiter le site http://officelive.microsoft.com pour de plus amples informations.

Stay Tuned...

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 04:36 par Aurelien | 1 commentaire(s)
Classé sous :

Une session de très haut niveau technique présentée par Nikhil Kothari portant sur l'utilisation de SilverLight au sein de contrôles ASP.NET Ajax.

Cette session est d'un tel niveau technique qu'il m'est difficile de vous la retranscrire au travers de ce post. Je vais donc essayer de vous transmettre l'idée que Nikhil nous à fait passer au travers de cette session.

L'utilisation de SilverLight au niveau des contrôles ASP.NET Ajax peut se résumer en 2 scénarios :

  • J'utilise SilverLight en tant que couche de présentation de mon contrôle ASP.NET Ajax
  • Mon contrôle ASP.NET Ajax est en fait un contrôle SilverLight.

Le premier scénario n'est pas le plus complexe à comprendre, aujourd'hui, un webcontrol ASP.NET Ajax génére du HTML. L'idée de ce scénario est donc d'utiliser SilverLight pour la couche de rendu.

Le deuxième scénario est plus complexe et porte sur l'incorporation d'un contrôle SilverLight en tant que webcontrol ASP.NET Ajax. Alors je vous avouerai que les démos étaient à se tirer le peu de cheuveux qu'il me reste et il nous a fallu un certain temps avec Pierre Lagarde afin de bien comprendre de quoi il s'agissait.

Effectivement, le webcontrol ASP.NET Ajax était en fait un Repeater qui ne générait pas de rendu, mais qui servait à permettre au contrôle SilverLight d'être un DataBoundControl (chose qu'il ne peut faire tout seul avec la version actuelle). Ce repeater permettait donc de construire une source de données de type hashtable ou autre afin d'être passée au contrôle SilverLight. Le tout encapsulé dans un control Ajax ClientSide héritant de Sys.Preview.UI.Xaml.Control. Plutôt compliqué comme implémentation, mais un résultat des plus efficaces.

Je vous invite à surveiller le blog de Nikhil afin de récupérer les démos pour mieux appréhender cette session : http://www.nikhilk.net

Stay Tuned...

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 04:25 par Aurelien | 0 commentaire(s)
Classé sous :

Voici une session des plus intéressante, entièrement consacrée à l'utilisation du code managé au sein de SilverLight.

Reprenons donc en détail les différents points abordés lors de cette session.

HTTP Networking + XML
La couche HTTP Networking de SilverLight 1.1 est entièrement basée sur le protocole XMLHTTP. Tout comme une requête Ajax au sein de votre page ASP.NET, une requête SilverLight enverra les Headers du navigateur ainsi que le cookie. Pour le moment, tout comme en Ajax, nous sommes limités au requêtes dans notre propre domaine. Cependant, il est prévu que SilverLight permette les requêtes CrossDomain. Concernant le support XML, SilverLight intègre tout ce qui est nécessaire pour faire de la lecture ou de l'écriture de fichiers/flux XML. Les démonstrations utilisent un XMLReader, ce qui permet déjà pas mal de choses. De plus, l'intégration de XLINQ étant prévu, cela simplifiera grandement la tâche.

WebServices
Pour le moment, l'appel de WebServices via SilverLight ne gére pas SOAP mais cela est cependant prévu, ainsi que le support des WebServices WCF. Par contre, la partie intéressante réside dans le fait que SilverLight peux appeler un Service Ajax (ScriptService) et s'occupe lui même de désérialiser le JSON recu, plutôt intéressant !! Le support des deux modes, synchrone et asynchrone, étant déjà présent, nous avons déjà ce qu'il faut à disposition pour créer de belles applications SilverLight de type MashUp !!

LINQ
Et oui, LINQ est supporté par SilverLight ! Quand on voit la puissance de LINQ, on ne peut que se réjouir de son intégration dans SilverLight. De plus, le support de XLINQ et DLINQ est prévu. Je vous avouerai que pour le moment, je ne comprends pas trop l'utilité de DLINQ car je vous rappelle que SilverLight est côté client. Je ne vois donc pas encore à quoi cela pourrait bien nous servir, mais j'ai surement du passer à côté de quelque chose.

HTML Integration
Une partie des plus intéressante portant sur la communication entre le code managé et une page web, ou inversement, entre javascript et le code managé. Ceci se fait au travers de System.Windows.Browser et permet l'utilisation des HTMLElement, HTMLPage, faire des hooks d'évènements HTML vers du code managé. Vraiment interesant, mais moins que la 2ème partie concernant l'appel à du code managé via Javascript. Cela permet des scénarios assez sympatique. On pourrais imaginer une application full client-side javascript nécessitant la puissance de calcul de la CLR pour une opération précise et donc utiliser SilverLight comme pont afin de faire ce traitement. Tout ceci est réalisable grâce à l'attribut [Scriptable] que vous déposez sur vos méthodes SilverLight. Vous pourrez ensuite les utiliser en javascript via : document.getElementById('monControlSilverLight').Content.MaMethodeManagee(MonParamètre).

Nous avons ensuite encore eu droit à la session de debug distant du processus Safari d'un Mac à partir du Visual Studio de la machine Windows.

Une session allant donc plus en profondeur dans l'utilisation de SilverLight 1.1 qui laisse présager un bel avenir à cette technologie.

Stay Tuned...

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 04:12 par Aurelien | 0 commentaire(s)
Classé sous :
Cette session est en deux partie et promet donc un contenu assez complet autour de l'intégration de SilverLight dans un projet ASP.NET.

L'overview de SilverLight portait sur les différences entre la version 1.0 et la 1.1 qui se résument par le schéma suivant :

Comme on peux le constater, la version 1.1 sera beaucoup plus avancée, de part l'intégration du code managé, que la version 1.0 se limitant à XAML + Javascript.
Je ne vous ferais pas l'affront de détailler la partie "Getting Started" nous expliquant comment fonctionne XAML car son l'interet de cette session réside vraiment dans l'utilisation du code managé.

Cette première partie fût donc des plus "légères" mais à permis à l'ensemble de la salle de se mettre à niveau avant la suite !!

Il fût toutefois intéressant de voir que les contrôles personnalisés SilverLight héritent de Control et qu'ils utilisent une méthode InitFromXaml permettant de récupérer le fichier XAML en tant que ressource compilée.

Ce qui fût plus pertinant, c'est la présentation des réflexions de Microsoft autour de ce qui sera ou non présent au sein de la version 1.1.

Pour résumer, la version 1.1, c'est la version 1.0 avec du Code Managé, une extensibilité possible en XAML grâce à "x:Class", la possibilité de créer ses propres contrôles personnalisés.

Concernant les réflexions sur des composants comme la DataGrid, la notion de DataBinding, la gestion des Styles ainsi que des Ressources. Effectivement,  Microsoft s'intérroge sur le bien fondé de les intégrer et attends pour cela les feedbacks des utilisateurs afin de voir la pertinence de cette intégration car cela fera obligatoirement grossir le plugin.

Pour le moment, certaines choses sont sûres, la version 1.1 ne gérera pas la 3D ni l'accéleration matérielle l'accompagnant. La possibilité de voir tourner ses applicatifs SilverLight en mode "Offline" est aussi pour le moment mise de côté.

Je vous rassure, la partie 2 de cette session est beaucoup plus intéressante.

Stay Tuned...

Aurelien
Member of WygTeam

Posté le jeudi 3 mai 2007 03:54 par Aurelien | 0 commentaire(s)
Classé sous :

Cela fait toujours plaisir d'assister à une session donnée par Nikhil Kothari

Pour rappel, Nikhil est Architecte autour de la plateforme Web de Microsoft. Il a notamment travaillé sur ASP.NET Ajax Extensions, SilverLight et consort.

Cette session orientée Ajax Patterns & Practices a été pleine d'enseignements. Tout d'abord, Nikhil sépare les Patterns en 2 grandes catégories :

  • Foundationnal Patterns : Smart Data Access, Searchability...
  • User Experience Patterns : Navigation, Notification...

Une fois cette petite introduction terminée, Nikhil nous montre une application de gestion de Photos sur laquelle va se baser la suite de la présentation. Il a donc décider de s'attarder sur 5 patterns courant dans les applicatifs Ajax d'aujourd'hui :

  • Script attachment
  • Logical Navigation
  • Update Indicators
  • Smart Data Access
  • Mashing Up

Voyons ceci plus en détail.

Script Attachment
Ce pattern s'attache à la séparation complète du code, contenu et behavior. Il nous explique ici en quoi il est important de séparer son code javascript de son contenu HTML (pas de onclick="" par exemple) afin d'arriver à une plus grande souplesse. Pour cela, il link l'ensemble du javascript dans un fichier externe, et fait en sorte d'attacher ses onclick dynamiquement via $addHandler. Vous allez me dire, mais quel est l'avantage de ce pattern. Et bien, cela est plutôt simple, par cette injection dynamique des évenements, il vient de séparer son contenu du comportement attendu. Cela lui permet donc de complétement modifier son comportement sans apporter de modification à son code HTML, par exemple remplacer les onclick par des onmouseover. Il obtient donc une plus grande souplesse dans l'implémentation de son comportement. De plus, une fois ce travail effectué, il est alors beaucoup plus facile de transformer son script en Ajax Behavior au travers d'un Extender Ajax.

Logical Navigation
Ce pattern s'attache à controller une grosse problématique des interfaces Ajax : les boutons Back / Forward et la notion de Bookmark. Et oui, je vous vois déjà debout sur votre chaise vous, qui comme moi vous êtes battus contre ce bouton Back !!!! Afin d'apporter une solution à cette problématique, Microsoft propose donc un nouveau WebControl <asp:History /> ainsi qu'une API ClientSide permettant la gestion d'un stack d'historique. Cela permet notamment la gestion des boutons Back / Forward, mais aussi le Bookmarking d'une interface Ajax dans un état spécifique. Je vous invite donc à télécharger la release ASP.NET Ajax Futures pour de plus amples informations, mais cela vaut vraiment le coup de s'attarder sur ce contrôle.

Update Indicators
Une des problématiques des interfaces Ajaxifiées réside dans le fait que certaines actions modifiant le contenu de la page ne sautent pas forcement à l'oeil de l'utilisateur. Notamment quand ces dernières ajoutent du contenu en bas de page alors que la scrollbar est en haut. Pour palier à cette problématique, Microsoft propose un nouveau WebControl <asp:UpateIndicator /> que vous retrouverez dans ASP.NET Ajax Futures. Ce contrôle permettras donc de positionner la scollbar au niveau où apparaît le nouvel élément ainsi qu'un effet "blinking" d'une couleur différente autour de ce dernier. Avec ce mécanisme, impossible de rater le résultats des actions Ajax.

Smart Data Access
Ce nom a été trouvé par Nikhil mais il ne représente pas forcement ce qu'il veut dire. En fait, ce pattern est là pour résoudre une problématique bien connue, à savoir : Comment puis modifier le contenu de mes pages via Ajax sans pour autant sacrifier mon référencement auprès des moteurs de recherche. Cela fait plaisir de voir que la version de notre site (http://www.wygwam.com) fonctionne quasiment de la même façon que ce que nous propose Nikhil, le tout avec 1an et demi d'avance !!! Pour exemple : http://www.google.com/search?hl=fr&q=expertise+.net&lr=. Si vous passez sur notre site, vous verrez que cette page est une page Ajax, n'existant pas au sens physique du terme. Elle pour autant bien référencée dans Google.

Mashing Up
Alors là, je vous avoue que je reste perplexe. Ce pattern parle de l'intégration des services distants. Par exemple, lorsqu'en Ajax vous voulez appeler le WebService de Flickr, vous utilisez ce qu'on appelle un ServiceProxy pour contrer les problématiques de crossdomain. Vous créer un handler dans votre site qui fera l'appel au service distant. Avec l'implémentation de JSONP par les fournisseurs de services, à savoir délivrer le contenu sous forme de JSON via un appel de callback vers une de vos fonctions, la solution proposée par Nikhil repose donc sur l'injection de balise <script type="text/javascript" src="http://monserviceexterne"></script>. Cette méthodologie est toute nouvelle et mérite donc qu'on s'y penche de plus près avant de se prononcer. Au premier abord, c'est pas des plus séduisants car cela repose entierement sur le fait que le service externe vous envoie bien ce qu'il a promis et pas des ordres javascript malicieux qui seront injectés directement dans votre site. Pour cette raison, je préfère donc l'utilisation des ServiceProxy qui permettent de controler le retour. Mais il ne faut jamais vendre la peau de l'ours avant de l'avoir tué. A creuser ...

 

Pour finir, 2 petites url sur les Ajax Patterns :

 

Je vous invite donc à télécharger ASP.NET Ajax Futures afin de découvrir toutes ses nouveautés.

Stay Tuned...

Aurelien
Member of WygTeam

Posté le mardi 1 mai 2007 11:03 par Aurelien | 0 commentaire(s)
Classé sous :

Malgré les différents Webcasts déjà présents sur le Web autour de la Beta 1 de Visual Studio Orcas, cela fait toujours plaisir d'assister à ce genre de sessions pleine de Tips & Tricks.

Tout d'abord, les focus de la session :

  • Multi-Targeting : Ou comment changer son Visual Studio par une simple ComboBox
  • CSS Design : Intégration des CSS au seins des designers de surface de Visual Studio Orcas
  • Better Data : Composants autours de données
  • Ajax : Intellisense, debug ...

Tout d'abord, le multi-targeting. Comme vous avez surment déjà du le voir/entendre, Visual Studio Orcas permet de choisir la version du Framework sur laquelle nous travaillons. Mais cela va bien au delà du simple choix de la version de compilation. Effectivement, ce choix va complétement modifier les dialogbox / toolbars de votre Visual Studio. En fonction du Framework sélectionné, vous verrez ou non les différents composants dans votre ToolBox ou encore dans la DialogBox "Ajouter un nouvel élément".

Le CSS Design avec démonstration des différentes nouveautés : CSS Properties Explorer, Split Design Mode, Refactoring ...

Le Better Data avec les DataContext (dbml), Linq sur DataContext, et des nouveaux composants :

  • ListView : le nouveau Repeater ???
  • DataPager : Enfin !!!! Un composant de pagination pouvant s'appliquer à tout contrôle contenant une DataSource
  • LinqDataSource : Et oui, qui dit Linq dit LinqDataSource, ou comment utiliser ses DataContext en déclaratif

Ajax Support : Alors là, la cerise sur le gateau :)

J'en avais déjà vu pas mal sur le support de Javascript au sein de Visual Studio Orcas, mais là, j'en ai encore pris plein la vue !!

  • Full Intellisense Support
  • Doc Comments
  • Debug avec point d'arrêt
  • Intellisense entre fichiers externe via le DocComment : /// <reference path="monFichier2.js" />

Croyez moi, faisant pas mal de Javascript, l'Intellisense et la documentation sont des avancées non négligeables pour les développeurs ClientSide.

Voila une petite synthèse de cette session qui referra parler d'elle dans un futur proche ...

Stay Tuned ...

Aurelien
Member of WygTeam

Posté le mardi 1 mai 2007 10:21 par Aurelien | 0 commentaire(s)
Classé sous :

Cette session présente les différentes nouveautés liées à SilverLight 1.0 Beta. Ayant déjà pas mal jouée avec les CTP de SilverLight, je ne pensais pas apprendre grand chose lors de cette session, mais bien m'en a pris d'y assister tellement j'ai vu de nouveautés !!

Tout d'abord, un petit rappel de ce que propose SilverLight 1.0 Beta :

  

Puis on commence les démos avec du code et notamment la nouvelle signature de l'événement onLoad que l'on peut accrocher au travers de la nouvelle méthode de création remplaçant aghost.js :

 

On notera donc : function onLoad(sender, args, root). Concernant sender et args, pas de nouveautés. Par contre l'élément root fait son apparition et permet de récupérer directement le Canvas maître de notre fichier XAML.

S'en suit une démo de modification de quelques propriétés des contrôles présents dans le fichier XAML et quel ne fût pas mon étonnement devant cette simple ligne :

root.findName("main")["Canvas.Left"] = 200

Pour les connaisseurs, cela change tout de même de la méthode SetProperty que nous utilisions auparavant.

La démo suivante etait encore plus bluffante. Elle portait sur l'utilisation de l'objet downloader. Rien de bien etonnant au premier abord car l'objet downloader était déjà présent dans la CTP, mais là, je suis resté sur le c.... Je m'explique. Cette démo consiste à récupérer un fichier ZIP contenant 6 fichiers XAML au travers de l'objet downloader. Oui, vous avez bien compris, on parle bien là d'un fichier ZIP !!!!!!!! La où celà devient intéressant, c'est dans le traitement de la reponse suite au downloadComplete :

function onDownloadComplete(sender, args) {

    var file1 = sender.getResponseText("monFichier1.xaml")

    var file2 = sender.getResponseText("monFichier2.xaml")

    ....

}

Impressionant, le traitement du ZIP est fait à la volée sans écrire une ligne de code !!! Imaginez l'économie de bande passante et donc la vitesse de récupération de l'ensemble. A creuser !!!!

S'en suit une petite démo de l'amélioration du support des Glyphes & Text par un exemple de texte en Japonnais / Chinois qui n'était pas possible en CTP. Le support Unicode est donc présent dans cette Beta.

Ensuite, petite astuce de développeur à développeur, ou comment remplacer un setTimeout() par une animation Xaml. Pour cela, prenez un Rectangle sans Width/Height avec une Opacity = 0. Ce Rectangle n'apparaît donc pas visuellement sur notre Canvas mais est bien présent pour notre animation. Couplez le à une DoubleAnimation de 2s, par exemple, sur sa propriété Width. Et voila, il ne vous reste plus qu'à vous abonnez à l'evenement Complete de l'animation et de la déclencher. Marrant, mais je vous l'avoue, beaucoup de code pour remplacer une simple ligne de Javascript !!!!

Le tout finissant par la Roadmap qui, je le sens, sera omniprésente durant ses 3 jours.

Stay Tuned ...

Aurelien
Member of WygTeam

Posté le mardi 1 mai 2007 10:04 par Aurelien | 0 commentaire(s)
Classé sous :
Afin de bien comprendre l'ambiance de ce Keynote, je citerai ici une phrase de Ray Ozzie : "Web is simple no more"

Ray Ozzie a donc commencer ce Keynote par cette phrase des plus étonnante, mais des plus juste. Effectivement, lorsque l'on fait le listing des technologies à notre disposition pour la mise en place de sites Internet, cela ne paraît pas aussi simple. Rien d'insurmontable lorsque l'on voit les résultats des différentes démo de ce Keynote, j'avouerais que cela donne même envie de maitriser tout cet ensemble technologique pour un résultat d'une telle qualité.

Après une brève introduction autour du Software As A Service ou comment tirer le meilleur partie des applicatifs Windows, Web et Devices avec pour exemple Flickr (voir photo ci dessus), le gros focus de ce Keynote, comme vous l'aurez déjà constaté, est porté sur SilverLight et les différentes annonces l'accompagant. Mais tout d'abord, qu'est-ce que SilverLight au sens Microsoft du terme. Ray Ozzie nous expose sa vision en 3 points distincts :

  • Vidéo / Média
  • Rich Internet Application
  • Streaming & Software Services

Une introduction des plus sympathique par Ray Ozzie qui nous met bien dans l'ambiance avant l'apparition de Scott Guthrie et ses démos des plus intéressantes.

Tout d'abord, en bon technicien, Scott nous rappelle les différentes plateforme/navigateurs supportés par SilverLight aujourd'hui. Pour rappel : Windows / Max, IE / FireFox / Safari.

Puis la déferlente de "shipping". En premier lieu, l'annonce de SilverLight 1.0 Beta avec license GO-Live. S'en suit l'annonce de SilverLight 1.1 Alpha avec code managé !! Wowwww, je demande à voir ce que cela donne sur Mac !! Ni une, ni deux, Scott attaque une démo SilverLight 1.1 avec CodeBehind en C#. Rien de bien méchant, un simple et traditionnel "Hello World" avec changement de texte sur un click. Là où cela devient intéressant, c'est lorsque Scott met sur le 2ème écran de la salle un Mac avec Safari pour éxecuter sa page SilverLight. Ca fonctionne !! clap clap dans la salle, mais nous ne sommes au paroxisme de cette démo.

Effectivement, non content de cela, Scott nous propose donc de débugger en distant, à partir du Visual Studio, le processus Safari sur le Mac. WOW, incroyable, il lance un "Attach to process", met le nom réseau de la machine Mac et se retrouve devant une liste de processus en cours d'éxecution sur le Mac. Il s'attache au processus Safari et met un point d'arrêt dans la méthode attachée au click. Il rafraichi la page sur Safari, clique sur le composant SilverLight et là, ce fût magique, le debug est lancé sur la 2ème machine dans son Visual Studio. J'avoue que cette démo m'a vraiment soufflé !!

S'en suit un rappel sur SilverLight avec un focus sur les éléments multimédia comme la possibilité de lire de la qualité HD 720DP, du Live Streaming On Demand et une intégration parfaite avec les Microsoft Ajax Extensions (A suivre dès demain avec une session de Nikhil Kothari sur le développement de contrôles Ajax/SilverLight).

Pour continuer dans la folie de ce Keynote, l'annonce d'Expression Studio est faite, avec des démos des différents produits. Une démo assez sympathique autour d'Expression Media Encoder et notamment la possibilité de créer des Markers (Chapitres) au sein de ses vidéos. Une preview d'Expression Blend 2.0 et de ses nouveautés. Et pour finir une démo d'Expression Web 2.0 où nous le voyons utiliser 2 nouveaux WebControls : SilverLight Media Control et SilverLight Xaml Control. (Voir photos ci dessous)

La suite fût un enchainements de démo préparés par différents partenaires de Microsoft.

Tout d'abord, NETFLIX ou comment améliorer la vision de DVD online. Puis CBS et son système de reporters locaux.

Petite pause dans les démos afin que Scott revienne sur un point des plus intéressant : SilverLight Streaming.

Pour faire court, SilverLight Streaming (http://silverlight.live.com) est une offre gratuite d'hébergement proposée par Microsoft pour les contenus SilverLight. Je ne peux que vous conseiller d'allez sur le site pour de plus amples informations.

Ensuite, le focus se portera sur la version 1.1 Alpha et la question "Pourquoi .Net dans un navigateur ?". Je pense que ce slide résume bien la situation :

  • Multi-Language Support : Effectivement, qui dit CLR, dit C#, VB.Net, Dynamic Language ...
  • High Performance Runtime : Je vous invite ici à consulter l'application "Scott Chess App" du SDK afin de faire la comparaison des IA Javascript / .Net
  • Rich UI Controls, Graphics Media & Interactivity : Si vous ne l'aviez pas encore compris !!
  • HTML DOM Integration : Et oui, nous sommes bel et bien dans un navigateur
  • Robust Networking : La démo qui suit en dit plus long !!
  • Flexible Data Support : CLR ==> Linq ....

La démo suivante se concentre sur Visual Studio Orcas et ses nouveautés autour de SilverLight. Tout d'abord, la possibilité de créer un "SilverLight Links", un peu à la manière d'une référence, mais pour du SilverLight. Et là, stuppeur dans la salle, dans son projet SilverLight, Scott ajoute une référence vers un WebService afin de l'utiliser dans le CodeBehind. Nous y sommes, SilverLight ne s'arrête pas à un simple pluggin contrôler par JavaScript, cela va beaucoup plus loin et l'intégration de la CLR laisse imaginer de belles choses pour l'internet de demain. Il finira par le "Control Model" en présentant une application basé sur les voyages par avions ne contenant que des composants SilverLight personnalisés.

Retour ensuite aux démos des partenaires avec Metaliq et son TopBanana ou comment monter ses vidéos en ligne grâce à SilverLight. Je ne dirais qu'un mot : Bluffant !

Je vous invite à consulter cette application : http://silverlight.metaliq.com/topbanana

Puis viens le tour de MLB.Com (Major League Baseball) et son nouveau player SilverLight fournissant une éxperience utilisateur des plus impressionante. Possibilité de voir au coup par coup avec visualisation de la place des joueurs sur un petit encart 3D et pour clouer le tout, une version simplifiée sur Windows Mobile. Vraiment sympathique.

La fin de ce Keynote se concentre sur les "Dynamic Languages", entendez par là IronPython, Javascript, Dynamic Visual Basic, Ruby ...

La présentation de la DLRConsole sur Mac fût assez impressionnante. Imaginez une console de développement dans votre navigateur afin de tester votre code à la volée, le tout avec Intellisense s'il vous plaît !!

Un Keynote qui se termine par une Roadmap des plus impressionnantes qui présage un bel avenir :

  • Mix 07
    • Silverlight 1.0 Beta
    • Silverlight 1.1 Alpha
    • Expression Studio
    • Expression Blend 2 Preview
    • Silverlight Tools Preview for Visual Studio "Orcas"
  • Summer 07
    • Silverlight 1.0 RTM
    • Expression Media Encoder
  • Beyond
    • Silverlight 1.1
    • Silverlight for mobile
    • Expression Studio 2
    • Silverlight Tools for Visual Studio "Orcas"

En bref, un Keynote de qualité qui laisse à penser que 3 jours ne seront pas de trop pour appréhender toutes ces nouveautés.

Stay Tuned ...

Aurelien
Member of WygTeam

Posté le mardi 1 mai 2007 09:38 par Aurelien | 0 commentaire(s)
Classé sous :
Plus de Messages Page suivante »


Les 10 derniers blogs postés

- « Naviguer vers le haut » dans une librairie SharePoint par Blog de Jérémy Jeanson le 10-07-2014, 13:21

- PowerShell: Comment mixer NAGIOS et PowerShell pour le monitoring applicatif par Blog Technique de Romelard Fabrice le 10-07-2014, 11:43

- ReBUILD 2014 : les présentations par Le blog de Patrick [MVP Office 365] le 10-06-2014, 09:15

- II6 Management Compatibility présente dans Windows Server Technical Preview avec IIS8 par Blog de Jérémy Jeanson le 10-05-2014, 17:37

- Soft Restart sur Windows Server Technical Preview par Blog de Jérémy Jeanson le 10-03-2014, 19:43

- Non, le certificat public du CA n’est pas un certificat client !!! par Blog de Jérémy Jeanson le 10-03-2014, 00:08

- Windows Server Technical Preview disponible via MSDN par Blog de Jérémy Jeanson le 10-02-2014, 19:05

- Focus Sauvegardes SharePoint par Le blog de Patrick [MVP Office 365] le 10-02-2014, 13:11

- Technofolies, votre évènement numérique de l'année par Le Blog (Vert) d'Arnaud JUND le 09-26-2014, 18:40

- Xamarin : From Zero to Hero par Fathi Bellahcene le 09-24-2014, 17:35