Beantwortet Aufbau Business-Layer

  • Samstag, 4. August 2012 11:45
     
     

    Hallo Liebe MSDN-Gemeinde

    Ich arbeite mich gerade im Bereich der Softwarearchitektur ein wenig tiefer in die Materie ein. Dabei habe ich eine Beispielapplikation erstellt, welche die klassischen Layer enthält.
    - UI-Layer (WPF, MVVM)
    - WCF-Service
    - Business-Layer
    - Data-Layer (EF mit POCO‘s, Repositories)

    Aktuell bin ich bei der der Gestaltung des Business-Layers angekommen. Was der Business-Layer macht, bzw. tun soll ist mir klar. Mir ist jedoch unklar, wie ich diesen Layer aufbauen soll. Bis jetzt ist der Layer so aufgebaut, dass in diesem einzelne Komponenten vorhanden sind. Diese heissen zum Beispiel „Bestellung“, „Buchhaltung“, „Rechnung“ und „Dokumente“. Innerhalb dieser Komponenten werden spezifische Methoden/Funktionen zur Verfügung gestellt. 

    Vereinfachte Beispiele:
    - Bestellung:  „SetBillingAddress“, „SetDeliveryAddress“, „AddArticle“, „ChangeStatus“
    - Buchhaltung: „CreateBookingStatement“
    - Rechnung: „CreateCustomerInvoice“, „CancelInvoice“
    - Dokumente: „AddDocument“, „RemoveDocument“

    Soweit so gut. Der Bestellprozess stellt sich vereinfacht wie folgt dar:
    --> Bestellung erfassen --> Bestellung ausliefern --> Rechnung erstellen --> Bestellung abschliessen

    Beim Prozessschritt „Bestellung erfassen“ muss jeweils die Rechnungsadresse („SetBillingAddress“), die Lieferadresse („SetDeliveryAddress“) gesetzt und der Status geändert („ChangeStatus“) werden. Dies kann mit der Komponente „Bestellung“ erledigt werden. Zusätzlich muss jedoch noch ein Dokument („AddDocument“), eine Bestellbestätigung, erstellt und der Bestellung im System angehängt werden. Beim Erstellen einer Rechnung („CreateCustomerInvoice“) in der Komponente „Rechnung“, müssen Buchungen („CreateBookingStatement“) sowie weitere Dokumente („AddDocument“) erstellt werden.
    Im Moment ist die Implementation so gestaltet, dass die Komponente „Bestellung“ auch die Komponente „Dokumente“ aufruft. Dasselbe bei der Komponente „Rechnung“ welche die Komponenten „Buchhaltung“ und „Dokumente“ aufruft. Im Laufe der Zeit entstehen so unzählige Querverbindungen zwischen den einzelnen Komponenten. Dadurch wird aus meiner Sicht die Wartbarkeit und die Weiterentwicklung immer weiter eingeschränkt.

    Meine Frage ist nun:
    Wie kann ich solche Abhängigkeiten zwischen den einzelnen Komponenten vereinfachen/auflösen? Soll da ein darüber liegender Layer erstellt werden, welche die einzelnen Komponenten „orchestriert“? Wäre dies eine Facade?

    Danke für euere Tipps und Tricks!

    Gruss

    Roger

Alle Antworten

  • Samstag, 4. August 2012 15:30
     
     Beantwortet

    Hi Twinky81,

    ich denk mal was du suchst ist sowas wie Flow Desinge, Ralf Westphal hat dazu einiges in seine Block geschrieben.

    Einen Blick auf Martins Fowler Seite lohnt sich auch.

    MFG

    Björn

    • Als Antwort markiert Twinky81 Montag, 6. August 2012 05:40
    •