Hallo zusammen, ich bin ziemlich neu im gestuften Entwicklungsprozess. Ich entwickle derzeit eine App und habe einige grundlegende Fragen zu bewährten Praktiken / architektonischen Fragen mit der heutigen Technologie. Ich werde WCF als Service-Schicht verwenden. Beachten Sie, dass ich versuche, Dinge so weit wie möglich zu entkoppeln. Ich möchte nicht, dass die oberen Ebenen über Dinge in den unteren Ebenen Bescheid wissen, was einer der Gründe ist, warum ich LINQ TO SQL oder das Entity Framework nicht mag.
1) Was ist der beste Weg, um Daten zwischen den Ebenen zu übergeben? Ich weiß, dass entweder ein Dataset oder eine DataTable einfach wäre, aber ich denke nicht, dass das Weitergeben dieser aufgeblähten Datenstruktur zwischen den Ebenen die beste Lösung wäre. Auch das Debuggen wäre schwieriger, wenn die DataTables / Datasets groß wären. Wäre vielleicht ein Array von POCO-Objekten die beste Lösung oder gibt es einen besseren Weg?
2) Die nächste Frage ist etwas kniffliger. Viele Anwendungen werden eine Vielzahl unterschiedlicher Ansichten der Daten haben. Sie könnten mehrere Berichte, verschiedene Datagrids und vielleicht ein oder zwei Diagramme haben. Wie gehen Sie beim Entwerfen Ihrer Datenschicht damit um? Entwerfen Sie einfach eine Art "Get"-Funktion für jede Tabelle und versuchen Sie dann, sie in nützliche Ansichten für z.B. ein Raster oder einen Bericht in Ihrer Geschäftsschicht zu kombinieren, oder haben Sie eine spezialisierte Funktion für jede Ansicht, die Sie in der Geschäftsschicht benötigen.
Ehrlich gesagt mag ich keine der Lösungen. Wenn Sie sich für spezialisierte Logik pro Ansicht entscheiden, müssen Sie ein POCO-Objekt erstellen (unter der Annahme, dass Sie ein Array von POCO-Objekten zurückgeben werden) pro Ansicht. Wenn Sie später feststellen, dass Sie einer der Ansichten mehr Spalten hinzufügen müssen, würden Sie den bestehenden Code brechen (weil Sie die Schnittstelle am POCO ändern). Wenn Sie eine Ansicht jeder Tabelle zurückgeben und versuchen, sie in der Geschäftsschicht zu kombinieren, könnte das wirklich unübersichtlich werden. TSQL hat Joins aus einem Grund :). Außerdem könnten Sie je nach Design möglicherweise viel mehr Daten zurückgeben, als Sie benötigen, was ineffizient wäre.
Ich habe noch einige Fragen, aber ich werde das für später aufbewahren. Ich möchte nicht, dass dieser Beitrag zu groß wird :)
Ncage