Dans certaines organisations, j'ai travaillé pour des applications Web développées en basant toute la logique métier dans les procédures stockées de la base de données. Par exemple, utilisez html pour la vue et le servlet en tant que contrôleurs pour détourner la demande du client vers les procédures stockées de la base de données appropriées.
Quels sont les avantages et les inconvénients de ce type de conceptions? À mon avis, si la logique métier dépend fortement de la base de données, il vaut mieux suivre ce type de conception !!!!!
En théorie, les avantages et les inconvénients sont les suivants:
Avantages:
Les inconvénients:
Maintenant, pratiquement, seul un idiot aurait toute la logique métier dans la base de données.
Donc, pour répondre objectivement à la question. Dans la plupart des cas, les procédures stockées ne sont nécessaires que dans certains cas. Par exemple, si vous avez un rapport à générer là où vous devez effectuer un grand nombre de traitements conditionnels sur quelques grandes tables, vous ne voudriez pas que votre application effectue quelques centaines de requêtes SQL dans la base de données. Vous souhaitez créer une procédure stockée afin de ne pas avoir de surcharge de décalage réseau. De plus, vous ne souhaiterez généralement créer des procédures stockées que dans le cas où les clients souhaitent exécuter une requête personnalisée dans votre base de données. Les procédures et les vues stockées peuvent rendre cela facilement possible sans que vos clients soient des experts en bases de données.
Contre:
Avantages de conserver toute la logique métier sur les procédures stockées dans l'application Web pour:
Contre de tenir toute la logique métier sur les procédures stockées dans l'application web: contre:
Il y a 2 gros inconvénients que je rencontre habituellement:
Tout dépend de votre team's experience
et ton project's requirements
. Apportez un DBA à votre équipe et décidez de ce que vous devez faire pour répondre aux exigences.Cependant, avec la conception d'applications à plusieurs niveaux, il peut ne pas être la bonne décision d'encapsuler la logique métier dans une procédure stockée.
Tant que la logique métier:
Je pense que business logic in programming space makes more sense
quand Power of Expression
est important dans votre équipe/projet.
Je pense que l'espace SQL n'est pas aussi expressif, mais it can do the job
. Utilisez les meilleurs outils que vous avez sous la main pour les tâches les plus appropriées. Il est préférable de jouer avec la logique et les concepts d'ordre supérieur au highest level.
Par conséquent, le stockage et la manipulation des données de masse sont mieux effectués au niveau du serveur, probablement dans les procédures stockées.
À l'ère moderne, ce n'est plus vraiment une approche courante. Il fut un temps où mettre la logique métier dans les procédures stockées était une chose courante à faire au début de la programmation Web, car les alternatives étaient peu nombreuses et souvent difficiles à utiliser. Aujourd'hui, je recommanderais contre.
Je dois dire qu'en 2012, rien dans la logique métier dans les procédures stockées ne pouvait être justifié comme un choix ayant en quelque sorte battu d'autres approches après avoir pesé le pour et le contre. Tout point PRO serait au mieux académique.
Ce n'est pas du code linq. L'avenir de TSQL est compilé linq, le mien aussi commence à l'apprendre.
Le code compilé est plus stable et plus facile à utiliser. Si je débogue quelque chose, il y a tellement d'informations disponibles si j'utilise C # ou Java.
Les procédures stockées risquent de se retrouver avec trop de responsabilités, il est préférable d'essayer de limiter vos responsabilités à 1.
Le manque de séparation des responsabilités conduira à une application qui devient de plus en plus difficile à travailler et de moins en moins stable car ses classes de base deviennent de plus en plus grandes.
Si vous aimez Microsoft Asp.Net MVC combiné avec Entity Framework Code First vous permettra de créer rapidement n'importe quelle application et vous n'aurez pas besoin de procédures stockées.