Imaginez une sorte d'application bancaire, avec un écran pour créer des comptes. Chaque compte a Monnaie et une banque comme une propriété, Monnaie étant une catégorie distincte, ainsi que la Banque . Le code pourrait ressembler à ceci:Limiter le nombre d'appels de service dans une application RESTful
public class Account
{
public Currency Currency { get; set; }
public Bank Bank { get; set; }
}
public class Currency
{
public string Code { get; set; }
public string Name { get; set; }
}
public class Bank
{
public string Name { get; set; }
public string Country { get; set; }
}
Selon les principes de conception REST, chaque ressource dans l'application devrait avoir son propre service, et chaque service doit avoir des méthodes qui tracent bien les verbes HTTP. Donc, dans notre cas, nous avons un AccountService, CurrencyService et BankService. Dans l'écran de création d'un compte, nous avons une interface utilisateur pour sélectionner la banque dans une liste de banques et pour sélectionner une devise dans une liste de devises. Imaginez que c'est une application web, et ces listes sont des listes déroulantes. Cela signifie qu'une liste déroulante est renseignée à partir de CurrencyService et une à partir de BankService. Cela signifie que lorsque nous ouvrons l'écran de création d'un compte, nous devons faire deux appels de service à deux services différents. Si cet écran n'est pas en lui-même sur une page, il peut y avoir plus d'appels de service de la même page, ce qui a un impact sur les performances. Est-ce normal dans une telle application? Sinon, comment peut-on l'éviter? Comment le design peut-il être modifié sans quitter REST?
Oui, vous avez raison. La mise en cache sur le client résoudrait cela. Mais en tant que concept, le style architectural ne dépend pas de la mise en cache et a toujours cette limitation pratique. Je me demandais s'il y avait un changement de conception qui pourrait résoudre le problème. – Slavo
Si vous êtes strictement RESTful, alors la banque et la devise doivent avoir des URI différentes, car ce sont des entités différentes. Mais rien ne vous empêche de créer un service (en lecture seule) qui pourrait renvoyer les deux listes en une seule entité. Cela dit, vous finirez par avoir besoin de tels services pour tous les autres écrans, et votre design en souffrira. En fin de compte, le coût minime du perf est le prix d'une architecture REST bien encapsulée (tout comme vous payez un minuscule succès pour plusieurs DLL par rapport à un mammouth .exe, ou pour des appels de méthode vs code inline). Cela ne devrait pas être la plus grande préoccupation que vous avez en termes de performance. :-) –
D'accord, je suppose que c'est le meilleur que j'aurai. Merci :). limite d'upvote atteinte, de retour demain. – Slavo