Y a-t-il une autre approche? Oui - ne distribuez pas vos objets. L'approche la plus évolutive consiste à NE PAS distribuer vos objets les uns aux autres. Demandez-vous, pourquoi voulez-vous déployer une saveur de code sur un "serveur d'application" alors qu'une autre saveur de code va à un "serveur web"? La communication qui se passe entre ces deux couches, si elles sont distribuées, sera beaucoup beaucoup beaucoup (etc etc) plus cher qu'un appel local. Avec les serveurs 64 bits d'aujourd'hui, avec toute cette mémoire et les processeurs à chaud, et avec la gestion de la mémoire supérieure d'ASP.NET, pourquoi ne pas mettre votre logique métier et votre DAL sur la même machine physique que les fichiers ASPX? Pourquoi pas?
Si vous devez effectuer une mise à l'échelle, ajoutez d'autres serveurs. Simple.
Il y a de bonnes raisons, bien sûr, de distribuer. Les bonnes raisons les plus courantes concernent les domaines de propriété - selon plusieurs axes: la gestion de la sécurité, voire le budget et le contrôle. En d'autres termes, si l'équipe est responsable de l'exécution de la logique métier et qu'une équipe distincte est responsable de la création et de l'exécution de la couche Web, il peut être judicieux de distribuer ces deux éléments pour permettre l'indépendance de la gestion. La plupart des bonnes raisons de distribuer du code informatique, ont leurs origines dans les structures des organisations humaines utilisant ou développant le code.
technique raison pour laquelle une page Web ne doit pas s'exécuter sur le même processeur, partageant la même machine virtuelle CLR et le même segment de mémoire, que la couche d'accès à la base de données. Peu importe ce que vous faites avec la distribution, il serait imprudent d'architecturer votre système avec des interfaces moins formelles définissant les connexions entre les couches. Si vous conservez des interfaces formelles, vous ne devriez pas avoir de problème pour mesurer la performance et l'efficacité d'une approche distribuée par rapport à une approche co-localisée.