Hallo zusammen,
ich bin neu hier, fange gerade mit C# an, komme jedoch aus der Java-HobbyEcke.
Da ich mir C# beibringe, moechte ich jetzt in ein groesseres Projekt starten. Ich bin die Konsolenuebungen langsam leid. 😃
Ich braeuchte also etwas Hilfe bei der Planung.
Kurze Uebersicht ueber das Projektvorhaben:
Verwaltung und Zusammenstellung von Dokumenten (PDF) in einem lokalem Verzeichnis.
Funktionen:
Was ich denke dass ich es brauche: Datenbank und deren Anbindung an C#, GUI.
Nun stellt sich mir die Frage, nach welchem Entwurfsmuster ich hier vorgehen sollte. Es sieht irgendwie nach MVC aus oder?
Bei der Datenbank habe ich an SQLite gedacht, weil ich mein Tool moeglichst klein und portabel halten will. In der Datenbank werden die Dokumente ja nicht gespeichert, aber deren Pfade und Metadaten. Denke dass dafuer SQLite reicht.
Nun faellt es mir etwas schwer konkrete Fragen zum Projekt zu stellen. Aber vielleicht passt das so hier.
Sind meine Ueberlegungen zur Datenbank hier richtig?
C# bietet ja eine gut funktionierende GUI an, damit sollte ich das gewuenschte doch umsetzen koennen?
Ist MVC hier der richtige/sinnvolle Ansatz?
Woran habe ich bei meinen Ueberlegungen noch nicht gedacht, sollte ich aber bedenken?
Fehlen noch Informationen fuer eure Hilfe?
Wenn ich hier komplett falsch bin (Forumabschnitt, ueberhaupt) seht es mir bitte nach. Ich wusste nicht, wo ich das besser haette platzieren sollen. 😃
Gruesse,
leuveg
Hallo und willkommen,
ich befürchte, dein Projekt ist zu anspruchsvoll, denn m.E. ist die größte Herausforderung, für dich als Hobbyprojekt eine kostengünstige PDF-Library zu finden (s.a. die Antwort in Webentwicklung MVC Versand PDF). Denn gerade die Punkte "Metadaten zu den PDF, Tags" sowie "Zusammenstellen einzelnen PDF zu einem neuen Dokument (PDF)" wirst du ohne diese nicht umsetzen können.
Edit: Von den drei im Link erwähnten scheint aber zumindestens QuestPDF frei für nicht-kommerzielle Projekte zu sein. Du müßtest aber mal evaluieren, ob diese deine Anforderungen erfüllt.
Zu deiner Frage bzgl. Entwurfsmuster kommt es darauf an, ob du als GUI Windows Forms oder WPF verwenden möchtest. Generell gilt [Artikel] Drei-Schichten-Architektur sowie für WPF [Artikel] MVVM und DataBinding.
Und SQLite als lokale Datenbank ist quasi Standard im .NET-Umfeld geworden (auch wenn es noch andere Embedded Datenbanken gibt).
Hallo leuveg
Ich schlage vor, dass du die Gelegenheit nutzt und dich gleich noch in ein paar Themen einarbeitest:
Implementiere die Logik unabhängig von der UI:
https://mycsharp.de/forum/threads/111860/artikel-drei-schichten-architektur
Welche UI du dann verwendest, kannst du dann entscheiden. Versuchs doch mal mit WPF und MVVM:
https://mycsharp.de/forum/threads/118261/artikel-mvvm-und-databinding
Die Logik könntest du Test Driven implementieren:
https://www.c-sharpcorner.com/article/test-driven-development-in-c-sharp-net/
Um Pdf-Mergen kannst du eine Library wie https://www.pdfsharp.net/ verwenden.
SQLite ist okay. Die Datenbank-Abfragen sollten nicht direkt in der Logik stattfinde. Verwende dafür ein Pattern wie:
https://www.c-sharpcorner.com/article/factory-method-design-pattern/
oder ein ORM (Object-Relation-Mapper) wie: https://learn.microsoft.com/en-us/ef/.
Gruss
Alf
denn m.E. ist die größte Herausforderung, für dich als Hobbyprojekt eine kostengünstige PDF-Library zu finden (s.a. die Antwort in Webentwicklung MVC Versand PDF). Denn gerade die Punkte "Metadaten zu den PDF, Tags" sowie "Zusammenstellen einzelnen PDF zu einem neuen Dokument (PDF)" wirst du ohne diese nicht umsetzen können.
..und wenn Du eine "echte Dokumentenverwaltung" willst, dann brauchst Du die PDFs im PDF/A Format, und das gibts qualitativ gut nur in relativ teuren, kommerziellen PDF-Libs.
Wir verwenden dafür IronPDF (Kommerzielle Lizenz auf 5 Jahre 5000€), es gibt aber auch eine freie Lizenz.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Moin zusammen,
danke für die ganzen Antworten. Da muss ich mich erstmal durchlesen, um zu schauen, wie die Fragen weitergehend geklärt werden können.
Ich denke, da hab ich was vor. 😁 Aber ich habe keine Eile, ich werde mich genauer mit dem Entwurf befassen um die Anforderungen auch etwas zu präzisieren. Vielleicht auch mal mit einer GUI-Idee-Skizze. Ich denke, dann wird auch der Gedanke hinter der Anwendung deutlicher und eventuell die Auswahl des GUI-Frameworks einfacher.
Einzelne Module, wie das PDF-Mergen werde ich mir bereits auf der Konsole anschauen können, Datenbankanbindung auch. Und wie ich die Teilstücke dann am Ende unter einen Hut bringe (Modell View Controller, 3-Schichten, wie auch immer), kläre ich später. Dass diese dann eventuell neu aufgebaut werden müssen ist mir bewusst. Und gehört zum Lernprozess dazu. 😄
Danke jedenfalls für die Anregungen tiefer einzulesen. Ich grabe den Thread dann hier wieder aus wenn ich soweit bin. Ich freue mich jedenfalls, dass ich hier gute Hilfe für den Start bekommen habe.
Bis die Tage 😃