Traduction▲
Cet article est la traduction la plus fidèle possible de l'article original de Brad Abrams, Business Apps Example for Silverlight 3 RTM and .NET RIA Services July Update: Part 19: ASP.NET Dynamic Data.
Article▲
Je m'amuse toujours autant à mettre à jour ma simple démo d'application métier du Mix09. Dans cette partie, je voulais étudier comment on pourrait créer le site d'administration de notre site. Puisque c'est juste pour un très petit nombre d'utilisateurs de confiance, je voudrais obtenir quelque chose de fonctionnel rapidement. Je voudrais aussi partager toute la logique métier et le code de validation entre le client Silverlight et le site web d'administration.
Vous pouvez trouver la série complète ici.
Cette démo nécessite les éléments suivants (tout est 100 % gratuit) :
- Visual Studio 2008 SP1 (qui inclut SQL Server Express 2008) ;
- Silverlight 3 RTM ;
- .NET RIA Services July '09 Preview ;
- ASP.NET Dynamic Data Preview 4 Refresh.
Téléchargez aussi les fichiers de la démo complète.
Pour cette partie, nous allons nous concentrer sur la réalisation d'une page WebAdmin utilisant ASP.NET Dynamic Data. Dynamic Data rend très facile, je dirais même trivial, de construire une application web basée sur des données. Ce qui est génial, c'est qu'il est super facile d'étendre et de personnaliser l'application incrémentalement. Dynamic Data est basé directement sur Entity Framework et Linq to SQL. Avec le support de .NET RIA Services, vous pouvez maintenant travailler avec n'importe quelle source de données (je l'ai montré avec des POCO, des DataSets, WCF, des DTO, et modéliser votre logique métier et votre logique de validation d'une façon commune.
Juste pour récapituler, dans les parties précédentes, nous avons défini un DomainService.
[EnableClientAccess]
public
class
SuperEmployeeDomainService :
LinqToEntitiesDomainService<
NORTHWNDEntities>
{
public
IQueryable<
SuperEmployee>
GetSuperEmployees
(
)
{
return
this
.
Context.
SuperEmployeeSet
.
Where
(
emp=>
emp.
Issues>
100
)
.
OrderBy
(
emp=>
emp.
EmployeeID);
}
public
SuperEmployee GetSuperEmployee
(
int
employeeID)
{
return
this
.
Context.
SuperEmployeeSet
.
Where
(
emp =>
emp.
EmployeeID ==
employeeID)
.
FirstOrDefault
(
);
}
public
void
InsertSuperEmployee
(
SuperEmployee superEmployee)
{
this
.
Context.
AddToSuperEmployeeSet
(
superEmployee);
}
public
void
UpdateSuperEmployee
(
SuperEmployee currentSuperEmployee)
{
this
.
Context.
AttachAsModified
(
currentSuperEmployee,
this
.
ChangeSet.
GetOriginal
(
currentSuperEmployee));
}
public
void
DeleteSuperEmployee
(
SuperEmployee superEmployee)
{
if
((
superEmployee.
EntityState ==
EntityState.
Detached))
{
this
.
Context.
Attach
(
superEmployee);
}
this
.
Context.
DeleteObject
(
superEmployee);
}
}
Et nous avons réalisé une application Silverlight pour l'utiliser.
Dans cette partie, pour commencer, prenez le projet DomainServiceProject dans le répertoire ProjectTemplates dans les fichiers téléchargés de ASP.NET Dynamic Data Preview 4 Refresh. Vous pouvez ajouter cette solution à votre projet ou, comme je l'ai fait, la fusionner avec une solution existante. Si vous choisissez cette dernière option, assurez-vous de récupérer le code dans web.config, global.asax, et le répertoire DynamicData.
Dans un cas comme dans l'autre, le seul code que vous avez besoin de modifier pour faire fonctionner le site basique est dans global.asax.
1
:
public
static
void
RegisterRoutes
(
RouteCollection routes) {
2
:
3
:
DefaultModel.
RegisterContext
(
4
:
new
DomainModelProvider
(
typeof
(
SuperEmployeeDomainService)),
5
:
new
ContextConfiguration
(
) {
ScaffoldAllTables =
true
}
);
6
:
7
:
routes.
Add
(
new
DynamicDataRoute
(
"{table}/{action}.aspx"
) {
8
:
Constraints =
new
RouteValueDictionary
(
new
{
action =
"List|Details|Edit|Insert"
}
),
9
:
Model =
DefaultModel
10
:
}
);
À la quatrième ligne, on fournit le SuperEmployeeDomainService (voir le code plus haut). Pour tout le reste, on laisse le code par défaut du modèle.
Tapez F5 et naviguez vers la page WebAdmin, et voilà ce que vous obtenez :
Cette page par défaut est très facile à personnaliser en éditant le fichier WebAdmin.aspx.
Cliquer sur une table nous amène à une vue par défaut où on peut trier, paginer, supprimer et insérer des éléments, etc.
Cliquer sur Edit (ou New) nous amène à un formulaire qui comprend entièrement les règles de validation qu'on a définies dans notre modèle métier.
La prochaine étape est d'utiliser toute la puissance de Dynamic Data pour personnaliser cette application selon nos besoins. Regardez les vidéos et tutorielspas à pas pour en savoir plus à ce sujet.
Maintenant, nous nous retrouvons avec un client Silverlight et un client ASP.NET qui travaillent tous les deux sur les mêmes données, avec la même logique métier et de validation. Cela réduit grandement les coûts de maintenance, car tout ce qu'on ajoutera au DomainService sera automatiquement pris en compte ici.
Conclusion▲
Ceci conclut la dix-neuvième partie de cette série. La partie suivante traitera de NHibernate.
Remerciements▲
Je tiens ici à remercier Brad Abrams de nous avoir autorisés à traduire son article.
Je remercie également ClaudeLELOUP pour sa relecture et ses propositions.