Question

J'ai une application qui effectue des calculs complexes pour les membres.Chaque membre peut avoir plusieurs états américains liés à leur profil.Chaque état a des calculs différents pour chaque cours qu'un membre est terminé.

Dès maintenant, j'ai effectué les calculs de la DB (SQL Server 2008), puis envoyez des données à l'application de la couche d'application où elles peuvent voir leur historique, puis télécharger un certificat pour chaque cours.

J'ai une couche logique professionnelle mais pas beaucoup se passe là-bas.Je sais que cela a été demandé beaucoup mais où pensez-vous que je devrais effectuer ces calculs: couche d'entreprise ou base de données?Je vais aller et retour !!

Était-ce utile?

La solution

Je ferais fondamentalement n'importe quoi dans SQL Server que:

  • fait beaucoup de sommation, de comptage, de moyennant une moyenne de données et ne renvoie qu'une seule valeur. Il n'est vraiment pas question de transférer de gros volumes de données sur le niveau moyen, juste pour résumer une colonne

  • fait beaucoup de manipulation à base de ligne / installation; Si vous devez copier, insérer, mettre à jour des lots de données, à nouveau, il n'est vraiment que de faire glisser toutes ces données sur le niveau moyen, puis de l'envoyer tout retour au serveur - faites-le sur le serveur directement à partir de la get Go. De plus: T-SQL est de manière significative plus rapide dans la gestion des opérations à base d'ensembles (comme Whuffling Data autour) que tout dans votre niveau moyen pourrait être

    En bref: Essayez d'éviter d'envoyer de gros volumes de données au CLIENT / MIXI-TIER / BUSINES COMMERCE, à moins que vous ne l'iez absolument (par exemple, parce que vous souhaitez télécharger un fichier stocké dans une base de données ou si vous êtes vraiment Besoin Pour que ces 200 lignes se sont matérialisées dans des objets de votre application à afficher quelque part ou utiliser)

    Une caractéristique qui est souvent négligée est colonnes calculées directement dans votre table de base de données - c'est vraiment bon à par ex. Résumé de votre commande Total Plus taxe et expédition dans un total total, ou ils sont parfaits de rassembler votre prénom et votre nom de famille dans un nom d'affichage. Ces types de choses ne doivent vraiment pas être manipulés uniquement dans la couche logique des entreprises - si vous le faites dans la base de données directement, ces valeurs "calculées" sont également disponibles lorsque vous inspecterez les tables de base de données et consultez les données de SQL Server. MGMT Studio ...


    Je le mettrais dans la couche de logique de niveau moyen / commerce

    • S'il nécessitait une vérification logique étendue, une analyse de chaîne, une correspondance de modèle, etc. T-SQL suce à ces choses

    • Si cela nécessitait des choses comme appeler un service Web pour obtenir des données pour valider vos données par rapport à, ou quelque chose comme celui-ci

    • S'il avait besoin de plus d'une opération logique d'entreprise (plutôt que des opérations de base de données "atomiques" strictes ")

      Mais ce sont des directives "brutes" - c'est toujours une décision de conception pour chaque cas, et je ne crois pas aux règles strictes; Votre kilométrage peut varier, du cas au cas, choisissez donc la seule approche qui fonctionne mieux pour une tâche donnée à portée de main.

Autres conseils

Il aide à ne pas avoir de code logique commercial à l'intérieur de la base de données (procédures stockées).Il est beaucoup préférable de l'avoir directement dans la demande afin qu'il convient à l'architecture.Ce code SQL contient votre logique commerciale et il n'y a rien de mal avec ça.(Il n'y a rien de mal à avoir le code associé aux données ou à la maintenance dans Sprates).

Si la couche logique de votre entreprise ne fonctionne pas beaucoup et ne fait que faire passer les données de SQL Server à l'appelant, vous n'en avez pas besoin du tout.

La couche logique commerciale n'est pas là pour faire le levage lourd, il est à but de fournir une abstraction avec des entités dans la langue du sujet. Ainsi, la couche d'entreprise peut être utilisée pour fournir une approche partagée et cohérente pour toutes les couches / applications requises pour fonctionner dans cet espace.

sur les choses en ingénieur pour faire un point, l'objectif ultime serait que la couche logique des entreprises soit utilisée à travers une organisation pour toutes les applications travaillant dans cet espace. C'est à dire. enveloppé dans un service, etc.

Dans le monde réel des petites applications pour faire ceci ou cela, la couche logique d'entreprise se sent comme une annexe parfois. L'astuce consiste également à rappeler que les cas d'utilisations devraient être mis en œuvre comme des tests contre la couche d'entreprise, vous donnant une autre façon de penser à la manière dont l'interface publique devrait regarder.

Comment la couche logique commerciale obtient-elle que ce travail est-elle effectuée doit être masquée de ces parties de l'application qui l'appelait.

Ainsi, il est donc parfaitement acceptable de calculer les données de la manière la plus efficace (I.E. SQL), tant que ces calculs reçoivent une représentation appropriée dans la couche logique de l'entreprise.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top