Frage

Googeln „Welche Art von Anwendungen ist DDD geeignet?“ gab mir folgende Antwort:

  

Wahrscheinlich 95% aller Software-Anwendungen fallen in die „nicht so gut für die Verwendung von DDD“ Kategorien. (Siehe der Artikel )

Also, was ist die ganze Aufregung?!?

Die Anwendung arbeite ich an ist vor allem Daten-zentrierte enthält aber noch einige Business-Logik und Regeln angewendet werden. Wäre es Zeitverschwendung sein DDD Techniken zu starten Anwendung? mit einem konventionelleren Data Access Layer, ein Modell der POCOs und eine Business-Logik-Schicht bin ich besser dran? Oder es anders zu sagen - was ist eine gute Alternative zu DDD

War es hilfreich?

Lösung

Viele Entwickler, die denken, DDD für ihr Projekt in die Falle nützlich ist, dass sie denken, was ihre Arbeit dreht sich alles um Code zu schreiben. Dies ist nicht der Fall. Ein Entwickler hat die Aufgabe, über Funktionalität zu realisieren, so kann ein Problem durch Software gelöst werden. Dies führt zu dem Schluss, dass das Schreiben von Code ist nicht der Anfang von dem, was ein Entwickler tut, aber das Ende: Der Code ist das Ergebnis des gesamten Prozesses ist, bevor der Code tatsächlich geschrieben wird.

DDD ist nicht über das Schreiben von Code, es ist nicht ein schlüsselfertige 10-Stufen-Prozess große Software zu bekommen, es geht darum, dass ganzen Prozess, bevor der Code geschrieben wird, wird es über einen Einblick bekommen, was das Problem ist, alles um, was /, die wie in dem Informationsströme und was diese Elemente aussehen beteiligt ist, in welcher Beziehung stehen sie zu einander etc. etc. in der Tat ist der wichtigste Teil von DDD eine Sprache zu schaffen, die mögliche Gespräche zwischen Fachexperten und Entwicklern macht ohne Fehlinterpretationen . Dies ist die ‚Ubiquitous Language‘ Evans spricht. Es in der Tat macht den gesamten Prozess vor dem Code einen Prozess geschrieben wird, die wenig Blätter zu erraten, sind die Dinge klar und geradlinig. (Das ist das Ziel).

Das Problem mit ‚Wie funktioniert DDD in der Praxis‘ und ‚könnte jemand mir ein Beispiel, wie ich Code mit DDD schreiben?‘ und dergleichen kommt wirklich aus der Tatsache, dass die Menschen diese Art von Fragen konzentrieren sich auf das Schreiben von Code zu fragen, haben aber keine Ahnung, warum sie das Code und nicht anderen Code schreiben. I.o.w .: wenn man bedenkt, dass DDD ist zu entdecken, was Sie als Funktionalität zu schreiben haben und warum fallen die Dinge an ihren Platz. Wie Sie diesen Code schreiben, das ist bis zu Ihnen. Aber wie gesagt: das ist nicht das größte Problem mehr, da Sie dann schon wissen, was Sie haben, zu schreiben und warum.

Andere Tipps

Sie wissen, manchmal die 5% mehr Geld als alle anderen 95% macht - deshalb DDD existiert

.

Es ist für bestimmte komplexe großes System.

Sorry, aber wenn DDD nur eine Art des Denkens war wie Frans Bouma sagt, dann wäre es nicht so etwas wie Persistence Ignorance empfehlen. Dies wird andere als etwas Unterklasse Entwickler entlassen.

PI, für die DDD wenigstens eine Vorspannung besitzt, ist eine architektonische Wahl. Es ist kein Weg mehr zu denken; es wird Ihnen schon etwas wird serviert, die meiste Zeit zu vage Warnungen von Nutzen zu sein. „nicht für alles geeignet“

Aber der Entscheidung über die PI Weg zu gehen oder nicht, ist eine Herausforderung an sich, und Sie können nicht nennen Namen jemand ( „a-Coder“), wenn er über diese unbehaglich fühlt.

Nehmen Sie ein ERP-Paket mit all-über den Platz eine MS Access-ähnliche Oberfläche: Gitter mit laufenden Summen, Auto-Aktualisierung Spalten und pageless auf einem 100 000 Datensätze zu scrollen. Ganz klar ein DDD-Ansatz ist für das Denken von geeignet, wie etwa diese App zu gehen. Aber in Jahren habe ich noch nie jemanden gesehen - weder in Büchern noch online, obwohl Beweise gesichert Erklärungen gehen, geschweige denn die wirkliche Leben Codebeispiele lassen, wie PI mit dieser allgegenwärtigen Situation für jedermann beschäftigen könnte zu wollen liefern < strong> Handelsqualität Anwendungen und Benutzererfahrungen .

Sie möchten nicht religiös auf diese erhalten. DDD und DAL Befürworter sind in der Regel übermäßig religiös sein und diejenigen, die gebissen wurden einmal wegfahren können, aber wer sind / waren aufgeschlossen. Viele wollen nur reale Erfahrungen konfrontieren (d THINK), und nicht nur mit Katzen serviert bekommen, Autos und grundlegender Ordnung / OrdersItems (das heißt schlechter CODE) die Predigt zu unterstützen.

Hier ist eine sehr ähnliche Frage: Möchten Sie das Web Tier erlauben, direkt auf die DAL zugreifen?

Ich benutze DDD für alle meine Projekte. einige der Konzepte, auf die kleineren Anwendungen gelten nicht, aber ich finde viele Aspekte auf alle Projekte unabhängig von ihrer Größe anwendbar sind.

DDD ist über Software, die für eine Weile beibehalten wird. Für mich bedeutet dies, dass es Ideen auszudrücken muss, die mit der Domain ändern. Sicher eine einfache Anwendung für eine kurze Lieferzeit und kurze Implementierungszeit perfekt sein. Allerdings, wenn Sie die Software dann DDD Prinzipien helfen immens wachsen müssen. DDD kann hart vorne sein, aber wenn man die Idee der allgegenwärtigen Sprache erhalten und die Trennung betrifft dann leicht werden Dinge nicht starten.

Wenn Sie den Artikel ein wenig mehr lesen, sehen Sie dies:

  

Für das 5% der Anwendungen, bei denen DDD   ist eine gute Passform, es ist eine sehr gute Passform.   Für diese Situationen werden DDD helfen   Sie knacken eine sehr harte Nuss. Hier DDD   sein der Königsweg kann, dass   Werwolf, dass Ihre Manager nur   wies auf Ihren Schreibtisch.

Das ist, warum die ganze Aufregung darüber.

  • Ihre Anwendung hauptsächlich datenzentrierte, vielleicht Ihre Architektur hauptsächlich konventionell sein könnten.

  • Für die Aspekte, bei denen Sie mehr Logik und potenzielle Domäne oder Wertobjekte haben, vielleicht könnten Sie einige der DDD Ideen nutzen, um den Code zu organisieren.

  • Im Allgemeinen ist der „alternativer Sound“ ist, die Dinge so einfach wie möglich zu halten, die DDD-Konzepte verwenden, wo sinnvoll, und nicht unnötig die Dinge komplizieren, wie der Artikel berät.

Ich bin jetzt ein ähnliches Projekt starten, es ist eine Mischung aus Datenmanipulation und mehr Logik / Algorithmus angetrieben Bereichen. Ich würde in ähnlicher Weise wie die Teile von DDD zu nehmen, die das Projekt zugute kommen wird, aber nicht versuchen, es auf die Bereiche zu zwingen, wo es kontraproduktiv sein kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top