I. Introduction▲
Je continue à mettre à jour ma présentation du Mix 09 sur Silverlight 3 + RIA Services avec encore plus des trucs rigolos. Cette fois, je relève un défi de M. Wildermuth. Shawn a récemment soulevé une question très intéressante avec le développement RIA Service. Il travaille avec beaucoup de grandes entreprises qui ont besoin d'avoir des fichiers solution distincts pour leurs projets clients et leurs projets serveur. Généralement, nous recommandons les projets de type RIA Services Class Libraries pour ce genre de chose. Mais il y a certains cas où encore plus de souplesse est nécessaire. Pour relever ce défi, j'ai reconstruit ma (désormais célèbre ?) application SuperEmployee en deux solutions : l'une pour le client et une pour le serveur.
Vous pouvez voir la série complète ici. Cette démo nécessite les éléments suivants (tout est 100% gratuit) :
Téléchargez aussi les fichiers de la démo complète.
La première chose à comprendre au sujet de ce scénario est que l'ensemble des services de génération de code de RIA Services sont effectivement faits par des tâches MSBuild, qui peuvent être utilisées en dehors de Visual Studio. C'est important pour des scénarios de compilation automatisée ou pour des structures de projet plus complexes (comme nous allons le voir ici). Il y a en réalité deux étapes ici. Nous commençons par construire la solution Web, puis nous construisons une solution distincte pour le client. Merci à notre responsable du développement, Jason Allor pour l'élaboration de ces étapes.
II. Construire le serveur Web▲
- Ouvrez Visual Studio et créez un nouveau projet d'application Web ASP.Net. Il en résulte une nouvelle solution contenant seulement ce projet.
- Ajouter des références aux assemblages RIA, y compris System.Web.Ria, et System.ComponentModel.DataAnnotations
- Ajoutez le div Silverlight à la page default.aspx
<div
id
=
"silverlightControlHost"
>
<object
data
=
"data:application/x-silverlight-2,"
type
=
"application/x-silverlight-2"
width
=
"100%"
height
=
"100%"
>
<param
name
=
"source"
value
=
"ClientBin/MyApp.xap"
/>
<param
name
=
"onError"
value
=
"onSilverlightError"
/>
<param
name
=
"background"
value
=
"white"
/>
<param
name
=
"minRuntimeVersion"
value
=
"3.0.40624.0"
/>
<param
name
=
"autoUpgrade"
value
=
"true"
/>
<a
href
=
"http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0"
style
=
"text-decoration:none"
>
<img
src
=
"http://go.microsoft.com/fwlink/?LinkId=108181"
alt
=
"Get Microsoft Silverlight"
style
=
"border-style:none"
/>
</a>
</object><iframe
id
=
"_sl_historyFrame"
style
=
"visibility:hidden;height:0px;width:0px;border:0px"
></iframe>
</div>
- Connectez-vous à votre source de données comme je l'ai montré dans les articles précédents.
- Créez une classe DomainService qui expose une ou plusieurs méthodes d'interrogation, d'insertion et de mise à jour. Assurez-vous que cette classe contient l'attribut EnableClientAccess, à nouveau, comme je l'ai montré dans les articles passés.
- Générez la solution et veillez à ce qu'elle se compile sans erreurs.
- Fermer Visual Studio.
III. Construire le client▲
- Ouvrez une nouvelle instance de Visual Studio et créez un nouveau projet d'application Silverlight. Lorsque vous y êtes invité, décochez la case à cocher « Héberger l'application Silverlight dans un nouveau site Web ». Cela supprime également la case à cocher « Activer. NET RIA Services ».
- Ajoutez des références aux assemblages RIA et de données, y compris System.Windows.Ria, System.Windows.Ria.Controls, System.Windows.Data, System.Runtime.Serialization, et System.ComponentModel.DataAnnotations.
- Enregistrez la solution.
- Faites un clic droit sur le nœud de projet dans l'Explorateur de solutions et sélectionnez Décharger le projet.
- Faites un clic droit sur le nœud de projet dans l'Explorateur de solutions et sélectionnez Modifier .csproj.
- Trouver le nœud <LinkedServerProject> dans le csproj. Il sera initialement vide. Remplissez le chemin vers le fichier .csproj du projet de serveur Web que vous avez créé ci-dessus.
<
LinkedServerProject>..\..\
MyApp.
Web\
MyApp.
Web.
csproj</
LinkedServerProject>
- Enregistrez et fermez le fichier .csproj.
- Faites un clic droit sur le nœud de projet dans l'Explorateur de solutions et sélectionnez Recharger le projet.
- Générez le projet.
- Notez que le dossier Generated Code apparaît, et que RIA Services a construit pour vous le modèle de votre entité côté client. Vous pouvez désormais consommer vos données sur le client en utilisant les patterns standards de RIA Service.
- Maintenant nous avons besoin de copier le XAP résultant dans l'application web afin que nous puissions démarrer l'application correctement, c'est assez facile depuis les propriétés du projet.
Ouvrez la solution web dans une instance séparée de VS (ce n'est pas un problème d'avoir deux solutions ouvertes en même temps). Après un peu de travail dans le client, nous nous retrouvons avec ceci :
Notez que vous pouvez apporter des modifications au client et le reconstruire, puis appuyez simplement sur F5 dans le navigateur et le nouveau XAP se charge.
Donc, en modifiant la propriété LinkedServerProject du client à la main, nous pouvons avoir le client RIA Services et le serveur dans différentes solutions, et/ou les construire séparément dans un système de compilation basé sur des lignes de commande. Cela vous donne beaucoup de souplesse dans la façon dont vous gérez de vastes et complexes systèmes de compilation.
En espérant que ça vous aide !
IV. Conclusion▲
Cet article conclut la partie sur la gestion de fichiers de solutions séparés. La vingt-troisième partie de cette série d'articles sera consacrée à l'utilisation de RIA services avec Azure.
V. Remerciements▲
Je tiens ici à remercier Brad Abrams pour son aimable autorisation de traduire l'article.
Je remercie également ClaudeLELOUP pour sa relecture et ses propositions.