Avoir juste un SQLDataSource est parfaitement valide, que ce soit juste une démo, un prototype, ou un hack rapide. C'est rapide, c'est facile, ça fonctionne et vous donne les résultats dont vous avez besoin. Cependant, lorsqu'une application est conçue et construite pour le long terme, et anticipe que les choses (exigences, souhaits du client, éventuellement le schéma de la base de données) peuvent changer, il peut être beaucoup plus logique d'introduire un véritable " Couche métier: modélisez vos objets métier en tant qu'objets, puis fournissez un mappage de la base de données sous-jacente vers ces objets métier.
Comme le dit le dicton - vous pouvez résoudre à peu près n'importe quoi dans l'informatique par une couche supplémentaire d'indirection (ou d'abstraction) - mêmes prises ici.
SÛRE: vous pouvez aller directement à la base de données, et bien sûr, au premier abord et pour la première itération, c'est probablement (ou probablement) le moyen le plus rapide. Mais à long terme, quand une application est conçue pour durer, c'est généralement un moyen rapide, le coût de l'entretien, le coût de la maintenance, le coût et les efforts nécessaires pour changer selon vos besoins et ceux de vos clients. va grandir et assez rapidement, cette solution quick'n'dirty ne semble plus si belle, en termes d'effort. Donc, pour résumer mon point: oui, initialement, l'utilisation d'une source de données SQL directe pourrait être plus rapide et plus facile - alors utilisez-la quand c'est le point important: faire les choses pour une démonstration rapide, une preuve de ... application de style de concept. Mais à long terme, lorsque vous regardez la durée de vie d'une application, il est généralement intéressant d'investir un peu plus (conception et codage) pour ajouter cette couche d'abstraction afin que vos pages Web ne dépendent pas directement des détails de la base de données en dessous.
Marc
Bien que je sois d'accord avec tous vos points et que votre réponse soit bien écrite, vos pages ne doivent plus dépendre des détails de votre base de données, mais de vos objets de gestion. Quel avantage cela apporte-t-il? –
L'avantage est le suivant: si votre base de données change, mais que vos objets métier restent les mêmes, l'interface utilisateur fonctionne toujours. Si vous utilisez SqlDataSource directement, et comme beaucoup le font, utilisez un 'SELECT * FROM ....' votre code tombera probablement le deuxième un autre champ est ajouté à une table de base de données. Ce ne sera pas le cas si vous avez une couche de gestion intermédiaire. –
En outre, en regroupant vos données dans des objets métier, il est beaucoup plus facile de travailler avec eux. Vous avez par exemple un objet "Client", pour lequel vous pouvez lire et écrire des propriétés telles que "CustomerID", "Nom" etc. - vous n'avez pas à gérer les intricasies des lignes et des champs de base de données et effectuer toutes les conversions Les données. –