Ich möchte n-Tier-Architektur mit einem Repository-Muster erstellen. Ich frage mich, macht es Sinn, alle meine Anrufe nur durch die BLL-Schicht zu duplizieren und dann auf Daten nur Anrufe über die BLL zuzugreifen? Oder kann ich einige Dinge direkt über die DAL und einige über die BLL zugreifen?Wenn ich eine BLL verwende sollte ich noch auf die DAL zugreifen?
Antwort
IMO es macht keinen Sinn, nur für sie zu duplizieren.
(wenn auch wirklich jeder Ansatz seine Vor- und Nachteile hat, ist nichts immer falsch oder per se gut)
der Regel allerdings mit zum Beispiel Angebote Datenschicht (vereinfacht) ein wenig ‚granuliert‘ Daten, die Tabellen genau usw. entsprechen
Während Ihre Business-Schicht könnte das kombinieren und ist mehr um die "Logik" und Ihr logisches Modell (dann das Datenmodell und die Daten) zentriert.
Wenn Sie eine genaue Replik der DAL in Ihrer Business-Schicht haben, dann vermissen Sie höchstwahrscheinlich einen Punkt. Einige Dinge müssen möglicherweise neu organisiert, weggeworfen oder einfach vereinfacht werden.
oder z.B. Fragen Sie sich selbst - wenn Sie z. Ersetzen Sie die DAL durch verschiedene Arten von Speicher (unterschiedliche Organisation der Dinge oder alles, was Sie ändern müssen, wie Ihre Daten/DAL funktioniert) - wie wird Ihr BLL aussehen? Das Gleiche? Ihre Geschäftsschicht sollte nicht "den Daten folgen" - sie sollte ihre eigenen Regeln haben, mehr wiederum über die Logik Ihrer Domäne, was Sie tun. Während Daten sollten über Daten sein.
Kurz gesagt ist die Frage hauptsächlich, wie Sie Ihr System entwerfen - wenn Sie eine Business-Schicht gut nutzen (und normalerweise sollten Sie, wenn es nicht relativ einfach ist oder Sie sich beispielsweise für eine völlig andere Architektur entscheiden), dann verwenden Sie es, Wenn nicht, müssen Sie nicht duplizieren.
hoffe das hilft.
- 1. Wie soll ich auf die DAL eines anderen Moduls zugreifen?
- 2. Was von der DAL nach BLL zurückzukehren
- 3. Sollte ich versuchen, ASP-Steuerereignisse in den BLL zu setzen?
- 4. Sollte ich ConnectionRequestTimeout immer noch auf Apache HttpClient setzen, wenn ich keinen benutzerdefinierten Verbindungsmanager verwende?
- 5. Sollte eine BLL zustandslos sein?
- 6. Sollte ich die addslashes-Funktion verwenden, wenn ich PDO verwende?
- 7. So verwenden Sie DTOs zwischen UI, BLL, DAL
- 8. Wie unterscheidet sich das MVC-Muster, wenn überhaupt, vom DAL/BLL-Designmuster?
- 9. Wenn ich UUIDs verwende, sollte ich auch AUTO_INCREMENT verwenden?
- 10. Verschiedene Benutzeroberflächen teilen sich dieselbe BLL und DAL
- 11. pfsense: Ich kann nicht auf die Webkonsole zugreifen, wenn ich virtualbox verwende
- 12. Linq to SQL und logische Partitionierung (DAL, BLL)
- 13. Wenn ich Kanäle richtig verwende, sollte ich Mutexe verwenden?
- 14. Wenn ich GCD verwende, sollte ich @autorelease Pool
- 15. PowerMockito ruft die Methode auf, wenn ich doReturn (..) verwende, wenn (....)
- 16. in asp.net, wenn ich die ValidatorControls verwende, muss ich noch die anti-XSS-Bibliothek verwenden?
- 17. Kann ich auf eine PHP-Klassenkonstante zugreifen, indem ich eine Variable für den Konstantennamen verwende?
- 18. sollte ich das 4.0 Framework noch anvisieren?
- 19. Warum sollte ich require.js verwenden, wenn ich immer noch alle Dateien auf dem Build erhalte?
- 20. Wenn ich FileStream.ReadAsync() verwende, sollte ich die Datei im asynchronen Modus öffnen?
- 21. Sollte ich auf ReadAsStringAsync() warten, wenn ich auf die Antwort wartete, die ich ReadAsStringAsync() ausführe?
- 22. Wo sollte ich zusätzliche Klassen in meiner MVC-Anwendung platzieren
- 23. Kann ich über eine Subdomain auf Inhalte eines Iframes zugreifen, wenn ich www. auf der Hauptdomain?
- 24. Sollte ich noch HTML-Entities verwenden? Warum?
- 25. Wie sollte ich auf Instanzdaten in einer Perl-Unterklasse zugreifen?
- 26. Wie erhalte ich eine Seitenüberschrift, wenn ich Django-Flatseiten verwende?
- 27. Muss ich heightForRowAtIndexPath festlegen, wenn ich eine benutzerdefinierte UITableViewCell verwende?
- 28. Warum kann ich nicht auf Laravel-Beziehungsspalten zugreifen, wenn ich eine neue Instanz anstelle von "Article :: all()" verwende?
- 29. Wie greife ich auf eine Instanzvariable in einem BindingAdapter zu, wenn ich die Android-Datenbindung verwende?
- 30. Wie sollte ich auf Boost SHA1 Hash zugreifen?
Ich persönlich zugreifen nur meine dal durch meine bll und wird die Anrufe duplizieren. Sie wissen nie, wann Sie eine Geschäftslogik hinzufügen müssen, und es ist viel einfacher, den Anruf in der blll zu ändern, als einen neuen Anruf zur bll hinzufügen zu müssen. –
Wie definieren Sie "Daten nur Anrufe"? Warum fühlst du dich in der BL "Duplizieren von Anrufen"? Welche Technologie programmieren Sie (Winforms, Webforms, MVC ...?)? –