Laden...

Beispielprojekt für ADO.NET, SQLite und 3-Schichten-Modell gesucht

Erstellt von xbredoillex vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.799 Views
X
xbredoillex Themenstarter:in
46 Beiträge seit 2009
vor 14 Jahren
Beispielprojekt für ADO.NET, SQLite und 3-Schichten-Modell gesucht

verwendetes Datenbanksystem: SQLite

Hallo,

ich möchte mich mit Datenbankanwendungen befassen. Wie in meinem letzten Beitrag beschrieben habe ich mir dazu ein Projekt überlegt, welches langsam und schrittweise ausgebaut werden soll. Zuerst soll ein einfaches Haushaltsbuch entstehen. Mit dem Datenbankdesign und den NF habe ich mich ausgiebig beschäftigt und komme gut zurecht.

Da ich jedoch noch absolut nichts mit Datenbanken zu tun hatte, baue ich zur Zeit auf gefährlichem Halbwissen auf. Der fehlende Überblick lässt mich leider auch keinen weiteren Einstieg in die Sache finden.

Es scheint irgendwie für jeden Bereich des Themengebiets mehrere Ansätze zu geben. Manches ist kombinierbar, manches schließt sich gegenseitig aus, manches ist optional, manches unterstützt einander. Obwohl ich viele Quellen gelesen und viel dazu gelernt habe, ist mir immer noch unklar, über welches Projekt-Design ich den Zugriff auf die Datenbank gestalten soll. Welche Technik ist angemessen und state of the art? Stichworte wären z.B. Erweiterbarkeit, Speicherbedarf, Dataset, ADO.NET, OR-Mapper, Entity Framework. Mehr lesen führt im Moment wegen der Vielfalt und Komplexität zu mehr Verwirrung.

Die ganze Theorie ist ohne praktische Anwendungen kaum erfassbar. Ich habe einige kleine SQLite-Beispielprojekte im Internet gefunden, diese sind jedoch für reale Anwendungen nicht zu gebrauchen, da sie sehr spärlich ausfallen (z.B. eine einzige Program.cs-Datei für alles, Konsolenausgabe). Beim Versuch in die Thematik einzusteigen bringt das einen nicht sonderlich weiter.

Ich komme einfach nicht dahinter, wie ich z.B. ADO.NET, SQLite und GUI, BL, BO und DAL zu einem sinnvollen Ganzen kombinieren kann. Deshalb suche ich verzweifelt ein Beispielprojekt in dem über das 3-Schichten-Modell auf eine Datenbank zugegriffen wird und die Daten über Databinding in beide Richtungen mit der GUI verstrickt werden.

Auch wenn ich überfordert erscheine, hat jemand Tipps oder kennt jemand ein Beispielprojekt oder ein Tutorial das über eine Konsolenanwendung hinaus geht und mir weiterhelfen könnte?

Gruß
xbredoillex

F
10.010 Beiträge seit 2004
vor 14 Jahren

Das ist immer das Problem, wenn man vor dem Wald steht, und nicht weiss
welchen Baum/Weg man gehen soll.

Es gibt nicht DIE Lösung für alle Probleme, sonst müssten wir uns gar keine Gedanken darüber machen.

Wenn Du z.B. "nur" eine Desktopanwendung schreiben willst, wäre ein Appserver
zur Seperation des DAL vollkommen überkandidelt.

Bei einer EnterpriseAPP sollte aber sogar teile der Businesslogic auf einen extra Server.

Bei Massendaten solltest Du auf ORMapper im grossen Umfang verzichten,
weil es dann zu schwer wird, aber bei normalen CRUD Sachen, würde ich heute
nicht mehr mit einfachem SQL herumfrickeln wollen.

MVP/MVC/MVVM sind dann der nächste Punkt.
Was willst du machen? WindowsForms/WPF?

Die gute Trennung der einzelnen Schichten ist zwar in allen diesen Projekten wichtig,
aber das wie hängt dann doch eher davon ab, was dabei herauskommen soll.

Und dann fangen die Glaubenskriege erst an 😉

5.941 Beiträge seit 2005
vor 14 Jahren

Salute xbredoillex

Schau dir mal folgendes Beispiel für eine 3 schichtige Architektur an:

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

1.564 Beiträge seit 2007
vor 14 Jahren

Servus Peter

Schau dir mal folgendes Beispiel für eine 3 schichtige Architektur an:

Was mir persönlich an dem Beispiel nicht gefällt ist die Tatsache, dass der BLL in den Service-Layer (SL) integriert ist. Meines Erachtens nach sollte der SL, wenn nötig, so schlank wie möglich gehalten werden und eher als (Remote-)Proxy verwendet werden.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

X
xbredoillex Themenstarter:in
46 Beiträge seit 2009
vor 14 Jahren

Hi,

ich weiß, meine Angaben sind sehr allgemein gehalten. Das liegt vor allem an den sich ständig ändernden Parameter die meine Vorstellungen und Ziele jedesmal umschmeissen.

MVP/MVC/MVVM sind dann der nächste Punkt.
Was willst du machen? WindowsForms/WPF?

Gut, dass du das ansprichst, das ist nämlich auch so ein Faktor der mich viel Zeit und Nerven gekostet hat ohne je zu einem richtigen Entschluss gekommen zu sein. Eigentlich wollte ich das in WPF mit MVVM machen. Dann habe ich erstmal feststellen müssen, dass z.B. der Kalender in WPF nur als "3rd-Party-Fremdcontrol" existiert oder Datagridview etc. nicht existieren oder ähnliche Controls über irgendwelche Toolkits eher schlecht als recht eingebunden werden müssen und verbugt sind. Viele Toolkits oder Demos laufen entweder gar nicht oder nur mit viel Aufwand mit VS2008 Express bzw. Sharpdevelop3 o. 4.
Um die Frage zu beantworten: Ich habe mich noch nicht festgelegt. Ich würde wegen der schönen Binding-Eigenschaften und der späteren schöneren Grafikmöglichkeiten WPF mit MVVM bevorzugen, aber für den Einstieg und das Verständnis wäre auch WinForm kein Problem. Was würdest du (rein objektiv) in diesem Fall nehmen?

Die gute Trennung der einzelnen Schichten ist zwar in allen diesen Projekten wichtig,
aber das wie hängt dann doch eher davon ab, was dabei herauskommen soll.

Das ist auch noch nicht 100%ig festgelegt. Nur die groben Eckdaten sind klar. Es soll eine Desktopanwendung für den privaten Einsatz werden. Gleichzeitig wollte ich die Anwendung für zukünftige Änderungen und Erweiterungen sauber aufbauen und z.B alles in Schichten trennen.
Weiter kann ich mich noch nicht festlegen, denn es gibt zu viele Unklarheiten und Stolpersteine.

Die späteren Abfragen der Datenbank sollen umfangreiche statistische Auswertungen erlauben. Da herrschen bei mir auch die Fragezeigen. Die Beschaffung der Daten findet im DAL statt, die Filterung wird jedoch von manchen in die BL gelegt und andere wiederum sehen das als eine reine Darstellung der Daten und legen dies in die GUI, was bei WPF/Winform völlig unterschiedlich zu handhaben wäre. Außerdem kommt es dann zu den Fragen, ob alles in SQL zu machen ist und wenn nicht, wie und an welcher Stelle sonst.

Genau diese Dinge sind es die mir den Einstieg sehr schwer machen. Ich habe einfach Angst, dass sobald ich mich auf etwas festgelegt habe, irgendeine der Entscheidungen die Sache an späterer Stelle extrem verkompliziert und ich vielleicht ganz von vorne anfangen muss.

Gruß
xbredoillex

F
10.010 Beiträge seit 2004
vor 14 Jahren

Dein Problem ist also eigentlich ein ganz anderes.

Das hat auch überhaupt nichts mit der benutzten Technoligie zu tun, sondern "einfach"
nur mit der herangehensweise.

Da bietet sich die SOA ( Service Oriented Architecture ) an.
Wobei dies meist falsch verstanden wird und immer auf AppServer und CO herausläuft.
So ist SOA aber nicht gemeint.
Gemeint ist, alles was an Dienstleistung gebraucht wird, also DAL, Logging,
ViewManagement usw als Service einzubinden.

Diese Services werden nur per Schnittstelle angesprochen und sind so dann beliebig
austauschbar ( IOC/DI ).
Du kannst also Anfangen mit deinem Stub-DAL, der dir feste Listen liefert,
und den ggf durch einen austauschen, der mit Azure zusammenarbeitet.

Aber auch das wird durch deine Befürchtungen nicht der Richtige Ansatz sein,
weil du könntest ja beim Design der Interfaces was vergessen haben.

JA UND?
Durch die Refactoring Möglichkeiten von VS.NET und Tools wie Resharper und CO
ist es "leicht" Möglich dies nachträglich zu ändern.

Es ist deutlich schneller und Erfahrungsreicher, wenn du mal mit etwas anfängst,
das einigermassen Sauber Strukturiert ist, und das dann mit der Zeit Refactorierst,
als jetzt noch weiter Monatelang zu Planen und den Kopf voll zu machen.

Auch die Entscheidung für/gegen WPF ist in diesem Zusammenhang nur eine
Sitenote, weil das sich ja auch nachträglich ( natürlich mit Arbeit verbunden )
noch anpassen lässt.

Vielleicht solltest Du dir dazu mal Prism oder SCSF anschauen.

Beides sind Frameworks von Architekturteam bei MS für solch eine Architektur.
SCSF basiert eigentlich auf WindowsForms aber in einem Companionproject gibt
es auch die Möglichkeit WPF zu benutzen.

Prism ist genau umgekehrt.

1.564 Beiträge seit 2007
vor 14 Jahren

Es ist deutlich schneller und Erfahrungsreicher, wenn du mal mit etwas anfängst,
das einigermassen Sauber Strukturiert ist, und das dann mit der Zeit Refactorierst,
als jetzt noch weiter Monatelang zu Planen und den Kopf voll zu machen.

Amen!

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

X
xbredoillex Themenstarter:in
46 Beiträge seit 2009
vor 14 Jahren

Danke für die Beiträge.

Es ist deutlich schneller und Erfahrungsreicher, wenn du mal mit etwas anfängst,
das einigermassen Sauber Strukturiert ist, und das dann mit der Zeit Refactorierst,
als jetzt noch weiter Monatelang zu Planen und den Kopf voll zu machen.

Da hast Du nicht ganz unrecht und ich werde mir das zu Herzen nehmen.

Über weitere Demoprojekte oder Tutorials zur Anwendung von SQLite mit ADO.NET, egal welcher Art, würde ich mich dennoch sehr freuen. 🙂

Gruß
xbredoillex

699 Beiträge seit 2007
vor 14 Jahren

Über weitere Demoprojekte oder Tutorials zur Anwendung von SQLite mit ADO.NET, egal welcher Art, würde ich mich dennoch sehr freuen.

Nutze doch die bestehenden Tutorials im zusammehang mit dem MsSQL Server. Denn das SQLIte unterscheidet sich in den Grundfunktionen nur im Präfix bei den Klassen und Methodennamen.

Außerdem kannst Du ja auch das SQL Compakt von MS nutzen, wenn du eine Embedded DB brauchst.

Grüße Stephan