HappyNet v1.2 - Silverlight MVVM Prims

HappyNet v1.2 description

Superbe projet réalisé en Silverlight 5.0 sous Visual Studio 2010 avec une architecture MVVM utilisant Prism. Je peux le dire maintenant, c'est un véritable joyaux que je vais tenter de mettre en oeuvre sur ma machine et tenter de voir de quoi il retourne.

Requirements :
Au moment ou je tente d'explorer ce projet j'ai installé sur ma machine de dev :
Visual Studio 2010
Sivlerlight 5
Prims 4.1.0

Ce projet et ses sources se trouvent dans le Codeplex à l'adresse suivante :
http://happynet.codeplex.com/releases
http://happynet.codeplex.com/releases/view/96450

Démonstration en ligne :
http://silverlight.soat.fr/#Demonstrations

J'ai trouvé d'autre version de ce projet dans AllInOnSamples, trop ancienne Silverlight 3.0
Je suis donc assez content que l'auteur Cyril Cathala est réalisé un update de son magnifique projet.

Est-il facile à installer, à utiliser ?
On télécharge les sources dans une répertoire de travail et là au moment de cliquer sur la solution c'est la catastrophe !

Problèmes rencontrés dès le départ

Dans :
\\HappyNet v1.2 - SL5 ref\HappyNet-SL5\_Install
Le fichier :
Install.txt parle de procédures stockées dans un répertoire : _Documentation qui n'existe pas dans la release ! et pourtant dans ce répertoire on a bien deux procédures stockées. Ce n'est donc pas encore perdu.

Il existe deux ensemble de librairies Prism dans :
\\HappyNet v1.2 - SL5 ref\HappyNet-SL5\_Assemblies\Prism
Et dans :
\\HappyNet v1.2 - SL5 ref\HappyNet-SL5\packages\Prism.4.1.0.0\lib\SL5
Prims aurait été installé comme NuGetPackage

Directives Using

Les directives using utilisent : Prism.composite ...
using Microsoft.Practices.Composite.UnityExtensions;
using Microsoft.Practices.Composite.Modularity;
using Microsoft.Practices.Composite.Regions;
using Microsoft.Practices.Composite.Presentation.Regions;
using Microsoft.Practices.Composite.Events;

On va les remplacer dans tout le projet par :
using Microsoft.Practices.Prism.UnityExtensions;
using Microsoft.Practices.Prism.Modularity;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.Prism.Events;

Les "XML Name Space" xmlns: dans les fichiers .xaml

Je trouve que bien souvent c'est le plus dur et que malgré l'intellisence modifier les names spaces dans les fichiers xaml c'est toujours délicat.

Donc voici ce que j'ai fais :
Dans \\HappyNet v1.2 - SL5\HappyNet-SL5\ButtonStyles.xaml
Je remplace :
xmlns:Regions="clr-namespace:Microsoft.Practices.Composite.Presentation.Regions;assembly=Microsoft.Practices.Composite.Presentation"
xmlns:cal="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
Par :
xmlns:Regions="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism"
xmlns:cal="clr-namespace:Microsoft.Practices.Prism.Commands;assembly=Microsoft.Practices.Prism"

Certains projets utilisent encore Silverlight 4.0

Dans le fichier :
\\HappyNet v1.2 - SL5 ref\HappyNet-SL5\Client\Core\Soat.HappyNet.Silverlight.DataContract\Soat.HappyNet.Silverlight.DataContract.csproj
On trouve :
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
Que l'on va remplacer par :
    <TargetFrameworkVersion>v5.0</TargetFrameworkVersion>

Lancer l'exécution du projet HappyNet v1.2

On arrive maintenant à compiler, on se dit que cela y est et on lance une exécution et bien sûr c'est la catastrophe ! Il reste deux ou trois petite chose avant de lancer une exécution ...

Configuration du serveur IIS

Il me semble que j'ai créé un répertoire virtuel ... ?
Propriétés du projet \\HappyNet v1.2 - SL5\HappyNet-SL5\Web\Soat.HappyNet.WebSite\Soat.HappyNet.WebSite
Il me semble bien avoir cliqué sur le bouton "Create Virtual Directory" ...

L'application Web qui Host le Silverlight ne charge pas le .xap

Encore une autre erreur : le site Web c'est à dire l'application web qui host le silverlight :
\\HappyNet v1.2 - SL5\HappyNet-SL5\Web\Soat.HappyNet.WebSite\ClientBinSoat.HappyNet.Silverlight.xap
N'est pas foutue de charger le .xap ...
Solution :
Démarrer->Tous les programmes->Outils d'administration->Gestionnaire des services Internet (IIS) :
Répertoire vituel host de l'application Silverlight : HappyNet
Bouton droit->Propiétés->Onglet : Sécurité des répertoires->Authentification et contrôle d'accès->Bouton Modifier :
Cochez la case Authentification Windows intégrée ...
Pensez à cocher la case ...

Soat.HappyNet.Silverlight.xap se charge dans l'internet explorer

Encore une erreur d'un autre monde cette à l'exécution de l'application Silverlight :

CommunicationException publier un fichier de stratégie
J'adore cette erreur de 14 km où l'on y parle de stratégie inadaptée aux services SOAP. Où il faudrait contacter le propriétaire du service pour autorise l'envoi d'en-tête HTTP-SOAP.

De quoi s'agit-il ? Avec Silverlight on aura pris l'habitude de découvrir le fameux fichier :
C:\Inetpub\wwwroot\clientaccesspolicy.xml

Et son contenu :

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*" />
</allow-from>
<grant-to>
 <resource path="/" include-subpaths="true" />
</grant-to>
</policy>
</cross-domain-access>
</access-policy>

Sans quoi rien ne fonctionne ...

Enfin la fenêtre principale de l'application apparaît

file:///E:/HappyNet%20v1.2%20-%20SL5/HappyNet-SL5/Client/Core/Soat.HappyNet.Silverlight/Bin/Debug/TestPage.html#home

Exécution en mode debug  de l'application Silverlight Hostée par une appilcation Web : HappyNet v1.2
Pour rire je clique sur l'onglet Boutique :

HappyNet v1.2 onglet Boutique
Au bout d'un certain temps ... :


Détail de cette Exception Générale :


Et oui ! Je n'ai pas encore installé la SQL Server DataBase AdventureWorks for SQL Server 2008 que l'on peut d'ailleurs trouver ici :

http://msftdbprodsamples.codeplex.com/releases/view/37109

Tout n'est pas encore gagné ...

Conclusion 

Trouvez-vous que Silverlight for Web c'est vraiment Happy ?

Maintenant que je suis rassuré par l'exécution de ce projet, je souhaite le découvrir plus avant le code source mais certaines choses m'étonnent ...

Et je le crois, m'étonneront toujours. Notamment tout le code source présent dans le projet Soat.HappyNet.Silverlight :
Par exemple :
\\HappyNet v1.2 - SL5\HappyNet-SL5\Client\Core\Soat.HappyNet.Silverlight.Library\Commands\DelegateCommand.cs

Ou bien dans :
E:\HappyNet v1.2 - SL5\HappyNet-SL5\Client\Core\Soat.HappyNet.Silverlight.Library\Behaviors\DataStateBehavior.cs

Avec son entête :
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.
// http://expressionblend.codeplex.com/

Mais son name space :
namespace Soat.HappyNet.Silverlight.Library.Behaviors

A t-on vraiment besoin de tout ce code pour faire fonctionner une simple application Silverlight ?

HappyNet v1.2 Silverlight with Prism Mais qu'est ce que c'est que tout ce code  ?
Pour aller plus loin jetez un oeil ici :
http://www.microsoft.com/en-us/sharedsource/default.aspx

Il semble bien que certaines choses et certains mystères de Silverlight soit réservés à ceux qui sont initiés ...

Aucun commentaire:

Publier un commentaire

Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.