Was ist der Unterschied zwischen Geschäfts- und Anwendungslogik? [geschlossen]

11

Bitte beachten Sie, dass ich dieselbe Frage zum Stapelüberlauf gestellt habe, aber sie haben mich angewiesen , hier zu fragen.

Während ich versuche, den Unterschied zwischen Anwendungslogik und Geschäftslogik zu erkennen, habe ich eine Reihe von Artikeln gefunden, aber leider gibt es einen Widerspruch zwischen ihnen.

Hier sagen sie, dass sie gleich sind, aber die Antwort hier ist völlig anders.

Für mich verstehe ich das folgendermaßen:

Wenn wir nach der Definition des LogicWortes in Google suchen, erhalten wir

System oder Satz von Prinzipien, die den Anordnungen von Elementen in einem Computer oder elektronischen Gerät zugrunde liegen, um eine bestimmte Aufgabe auszuführen.

Wenn also die Logik ist, sollte set of principles underlying the arrangements of elementsdie Geschäftslogik sein set of principles underlying the arrangements of the business rules, mit anderen Worten bedeutet dies, dass die Regeln, die befolgt werden sollten, um ein System zu erhalten, Ihre Geschäftsanforderungen widerspiegeln.

Und für mich ist die Anwendungslogik the principles that the application based on, mit anderen Worten, wie diese Regeln angewendet werden, um ein System zu erhalten, das Ihre Geschäftsanforderungen widerspiegelt. Soll ich beispielsweise MVC verwenden oder nicht? Sollte ich SQL oder MSSQl verwenden?.

Könnte mir bitte jemand helfen, die Verwirrung über den Unterschied zwischen der Anwendung und der Geschäftslogik zu beseitigen?

Mo Haidar
quelle
3
Die Antworten unter dem zweiten SO-Link ( stackoverflow.com/questions/1456425/… ), den Sie gegeben haben, sind korrekt und umfassend. Kurz gesagt, sie sagen, dass "Geschäftslogik" eine Teilmenge von "Anwendungslogik" ist.
Doc Brown
2
... und der von Ihnen angegebene Encyclopedia2-Link sagt IMHO dasselbe. Wo liegt also Ihr Problem?
Doc Brown
1
... und da Sie beschlossen haben, keine Klarstellung hinzuzufügen, stimme ich dafür, als "unklar, was Sie fragen" zu schließen:
Doc Brown
@ DocBrown, ich habe den Titel der Frage und den letzten Absatz in der Frage bearbeitet, aber ich denke, dass klar war, was ich wollte und ich die Antwort bekam !! Hast du die Frage gelesen?
Mo Haidar

Antworten:

13

Ich stimme dem LoztInSpace von SO zu, dass dies eine ziemlich einfühlsame Antwort ist und dass jeder leicht unterschiedliche Definitionen haben kann. Besonders wenn es um historische Einflüsse geht. So würde ich die Begriffe definieren:

Geschäftslogik ist Logik, die in Zusammenarbeit und Vereinbarung mit Geschäftsexperten erstellt wird. Wenn ein Geschäftsexperte sagt, dass "der Kunde nicht mehr Geld abheben kann, als er auf seinem Konto hat", ist dies eine Geschäftsregel. In der idealen Welt befindet sich diese Logik in einer Art Bibliothek oder Dienst, sodass sie entweder für mehrere Anwendungen wiederverwendet oder in allen relevanten Anwendungen gleichzeitig geändert werden kann.

Anwendungslogik ist einfach alles andere. Beispiel kann sein "Klicken auf diese Schaltfläche öffnet das Fenster, um einen neuen Kunden hinzuzufügen". Es hat nichts mit Geschäft zu tun, aber es ist immer noch Logik, die implementiert werden muss. In einer idealen Welt verwendet die Anwendungslogik eine Bibliothek oder einen Dienst, der die Geschäftsregeln implementiert. Mehrere Anwendungen mit jeweils unterschiedlicher Anwendungslogik können eine Geschäftslogik wiederverwenden. Stellen Sie sich vor, Web-App, Web-Service und mobile App arbeiten alle mit einer Geschäftslogik, benötigen jedoch eindeutig unterschiedliche Anwendungslogiken.

Der Grund, warum ich denke, dass diese beiden durcheinander geraten, ist, dass es extrem schwierig ist, sie getrennt zu halten. Selbst wenn Sie Ihr Bestes tun, um sie getrennt zu halten, verwenden Sie die Oberfläche der Fälle, in denen Sie sie verwechseln müssen. Wenn Sie beispielsweise Ihre gesamte Geschäftslogik in Betrieb haben, wird sie getrennt gehalten. Eine Geschäftslogik in einer lokalen Anwendung, die den Dienst verwendet, kann jedoch die Reaktionsfähigkeit oder den Benutzerkomfort erhöhen, da die lokale Anwendung den Dienst nicht bei jeder kleinen Änderung aufrufen muss.

Ein weiterer Grund, warum sie miteinander vermischt sind, ist der für viele nicht-technische Leute. Die Benutzeroberfläche ist "die Anwendung", daher ist alles wichtig, was sich in der Benutzeroberfläche widerspiegelt. Im idealen Fall "Geschäftslogik" gibt es keine Benutzeroberfläche. Es würde wahrscheinlich eine Reihe automatisierter Tests geben, um die Logik zu überprüfen, aber nichts, was Geschäftsleuten gezeigt werden kann. Für Geschäftsleute ist also alles dieselbe Art von "Logik". IMO.

Euphorisch
quelle
1
"Anwendungslogik ist einfach alles andere" - um es kurz zu machen, ich würde sagen "es beinhaltet Geschäftslogik und alles andere" (aber es hängt wahrscheinlich davon ab, mit wem Sie sprechen)
Doc Brown
3

Wie andere betont haben, haben diese Begriffe keine allgemein akzeptierte Bedeutung. Ich werde die Definitionen beschreiben, auf die ich häufiger gestoßen bin, dh in mehreren Projekten mit verschiedenen Unternehmen.

Die Geschäftslogik definiert ein normalisiertes Allzweckmodell der Geschäftsdomäne, für die eine Anwendung geschrieben wurde, z

  • Klassen wie Customer, Order, OrderLine, und Verbände wie customer-order, und so weiter.
  • Allzweckoperationen wie registerCustomer,cancelOrder

Sehr oft wird dieses Klassenmodell einem Datenbankmodell zugeordnet und die Zuordnung wird mithilfe von ORM implementiert. Die Vorgänge werden normalerweise jeweils in einer eigenen Transaktion ausgeführt und stellen die Basis-API zum Ändern der Datenbank bereit, dh den dauerhaften Status der Anwendung.

Die Anwendungslogik ist eine Schicht, die auf der Geschäftslogik aufbaut und zur Implementierung spezifischer Anwendungsfälle dient. Anwendungslogikmodule verwenden möglicherweise eine Ad-hoc-Datendarstellung, z. B. eine CustomerSummary-Klasse ohne Zuordnung zu, Orderwenn Sie nur Kunden auflisten möchten. Eine solche Ad-hoc-Datendarstellung muss der zugrunde liegenden normalisierten Darstellung des Geschäftsmodells zugeordnet werden. Zum Beispiel CustomerSummarykann als eine Ansicht auf der definiert werden Customer.

Beachten Sie, dass die Grenze zwischen den beiden Schichten möglicherweise nicht so klar definiert ist. Beispielsweise kann man nach der Implementierung mehrerer Anwendungsfälle ähnliche Datenstrukturen in der Anwendungslogik bemerken und beschließen, diese zu vereinheitlichen (zu normalisieren) und in die Geschäftslogik zu verschieben.

Giorgio
quelle
3

Jedes System oder jede Anwendung wird ihre eigenen Definitionen dessen haben, was Geschäftslogik und was Anwendungslogik ist. Es wird entweder explizit oder implizit sein.

Nach meiner Erfahrung haben datengesteuerte Anwendungen (z. B. DBs usw.) tendenziell eine formalere Definition der Geschäftslogik.

Die Anwendungslogik konzentriert sich in der Regel darauf, Informationen von Punkt A nach Punkt B zu erhalten. Die Geschäftslogik konzentriert sich auf die Informationen - und die Sprache der Geschäftslogik ist normalerweise domänenspezifisch. Anders ausgedrückt, die Anwendungslogik konzentriert sich auf die Frage "Wie funktioniert es?", Die Geschäftslogik auf "Was macht es?". - Auch hier kann die Unterscheidung sehr unscharf sein und ist häufig nicht domänenspezifisch.

Niall
quelle
1

Na, es sind nur verschiedene Begriffe für dasselbe - die "mittlere Ebene" des Programmcodes, die die Dinge tut, die Ihr Programm ausführen soll. Wie bei vielen Dingen in der Software gibt es keine feste Terminologie für Teile eines Systems, da es keine einheitlichen formalen Definitionen für das Erstellen von Systemen gibt.

Manchmal nennen die Leute es Geschäftslogik, andere Anwendungslogik, andere Programmlogik, alles ist sehr viel. Versuchen Sie nicht, dies so streng zu definieren, dass fast jedes System unterschiedlich aufgebaut ist. Seien Sie also froh, dass die Terminologie nur so wenig vage ist!

gbjbaanb
quelle