Frage

ich eine C # Anwendung, die ein Benutzer Informationen über Kunden und Baustellen eingeben. Die Informationen sind sehr einfach.

  • Kunde: Name, Nummer, Adresse, E-Mail, zugehörige Jobseite
  • .
  • Job Site:. Name, Ort

Hier sind meine specs ich für dieses Programm benötigen.

  • Keine Begrenzung auf Höhe der eingegebenen Daten.
  • Single Benutzer pro Anwendung. Keine gleichzeitige Aktivität oder mehrere Benutzer.
  • Benutzer zulassen Einträge / Daten in eine externe Datei exportiert werden, die leicht zwischen Anwendungen / Benutzern gemeinsam genutzt werden können.
  • Ermöglicht für Benutzerabfragen zu Anzeige Kunden basierend auf verschiedenen Kombinationen von Kundeninformationen / Baustelle Informationen.
  • Die Daten werden nicht außerhalb der Anwendung angezeigt oder manipuliert werden.
  • Das Programm wird fast immer läuft, minimierte die Taskleiste.
  • Startzeit ist nicht sehr wichtig, aber ich würde die Abfragen wie deutlich schneller sein.

Das alles scheint mich auf eine Datenbank zu zeigen, aber ein sehr leichten ein. Ich brauche es aber auch so weit wie Datenspeicherung keine Grenzen zu haben. Wenn Sie zustimmen sollte ich eine Datenbank verwenden, lassen Sie es mich wissen, was am besten für meine Bedürfnisse würden. Wenn Sie nicht denken, sollte ich eine Datenbank verwenden, finden Sie einige andere Vorschläge machen, was Sie denken, am besten wäre.

War es hilfreich?

Lösung

Es klingt für mich wie eine Datenbank 100% ist, was Sie brauchen. Es bietet sowohl die Datenspeicherung, Datenabruf (einschließlich Abfragen) und die Fähigkeit, Export von Daten in ein Standardformat (entweder direkt aus der Datenbank oder durch Ihre Anwendung.)

Für eine leichte Datenbank, schlage ich SQLite (ausgesprochen 'SQL Lite';)). Sie können für Tutorials auf Google, wie es einzurichten, und dann, wie mit ihm über C # -Code zu verbinden. Ich fand auch einen Verweis auf dieser C # Wrapper für SQLite, die in der Lage sein kann, ein großer Teil der Arbeit zu tun für Sie!

Andere Tipps

wäre mein Vorschlag SQLite zu verwenden. Sie können es hier finden: http://sqlite.org/ . Und Sie können die C # Wrapper-Version finden Sie hier: http://sqlite.phxsoftware.com/

SQLite ist sehr leicht und hat ein paar ziemlich starke Sache für einen solchen leichten Motor. Eine weitere Option, die Sie sehen können in Microsoft Access.

Sie sind die falsche Frage wieder:)

Die bessere Frage ist: „Wie kann ich eine Anwendung erstellen, die ich die Datenspeicher Implementierung ändern kann?“

Wenn Sie das Repository-Muster anwenden und Schnittstelle es richtig können Sie Wechselfußbettsohle Persistenzschichten bauen. So können Sie mit einer Implementierung beginnen konnte und es ändern nach Bedarf wihtout zu benötigen reengineeren die Geschäfts- oder Anwendungsschichten.


Wenn Sie eine Repository-Schnittstelle können Sie Implementierungen in vielen differnt Ansätze versuchen:

Flat File - Sie könnten die Daten als XML bestehen bleiben, und unter der Voraussetzung, dass es nicht viele Daten, die Sie den gesamten Inhalt im Speicher speichern kann (nur die Datei beim Start lesen, schreiben die Datei beim Herunterfahren). Mit In-Memory-XML können Sie einen sehr hohen Durchsatz ohne Sorge erhalten für Datenbankindizes, etc.

Die ausschüttungs DB - SQLite oder SQL Compact Arbeit groß; sie viele Vorteile bieten DB und erfordern keine Installation

Lokale DB - SQL Express ist ein guter Mittelweg zwischen einem leichten und voll funktionsfähigen DB. Zugang, verwendet, wenn können vorsichtig, genügen. Der Hauptvorteil ist, dass es mit MS Office enthalten ist (wenn auch nicht standardmäßig installiert) und einige IT-Gruppen sind bequemer mit Zugriff auf Maschinen als SQL Express installiert ist.

Voll DB - MySQL, SQL Server, PostgreSQL, et al.


Ihre spezifischen Anforderungen Da möchte ich Dich auf eine XML-basierten flache Datei beraten - mit der einzigen Bedingung ist, dass Sie OK mit der Speichernutzung der Anwendung auf die Größe der Datei direkt korreliert (da Ihre Daten Text, auch mit dem Gewicht von XML, dies würde ein Los die Einträge sehr groß werden).

Hier ist die Vor / Nachteile - geordnet nach Ihren Anforderungen:

Cons

  • Keine Begrenzung auf Datenmenge eingegeben.
    • In-Memory unter Verwendung von XML würde Ihre Anwendung bedeuten würde, nicht skalieren. Es könnte leicht eine 10 MB Daten-Datei handhaben, 100MB sollte kein Problem sein (es sei denn, Ihr System mit wenig RAM ist), darüber, dass Sie ernsthaft Frage „kann ich so viel Speicher leisten?“.

Pros

  • Single Benutzer pro Anwendung. Keine gleichzeitige Aktivität oder mehrere Benutzer.
    • XML kann durch das Verfahren (AppDomain, wirklich) in dem Speicher und gehalten gelesen werden. Es ist perfekt Single-User-Szenarien geeignet für wo Gleichzeitigkeit ein sehr enges Anliegen ist.
  • Benutzer zulassen Einträge / Daten in eine externe Datei exportiert werden, die leicht zwischen Anwendungen / Benutzern gemeinsam genutzt werden können.
    • XML ist perfekt für den Export, und auch leicht zu Import in Excel, Datenbanken, etc ...
  • Ermöglicht für Benutzerabfragen zu Anzeige Kunden basierend auf verschiedenen Kombinationen von Kundeninformationen / Baustelleninformationen.
    • Linq-to-XML ist dein Freund: D
  • Die Daten werden nicht außerhalb der Anwendung angezeigt oder manipuliert werden.
    • .... dann vollständig im Speicher hält verursacht keine Probleme
  • Das Programm wird fast immer in die Taskleiste minimiert werden ausgeführt.
    • so die XML beim Start geladen wird, und beim Herunterfahren Schreiben wird acceptible sein (wenn die Datei sehr groß ist es eine Weile dauern könnte)
  • ist Anlaufzeit nicht sehr wichtig, aber ich würde die Anfragen gerne wesentlich schneller sein
    • die XML-Lese beim Start wäre relativ langsam; aber wenn es im Speicher geladen ist wird es schwer zu schlagen sein. Jede beliebige DB erfordert, dass die DB Motor gestartet werden, dass Interop / Cross-Prozess / Cross-Netzwerk Anrufe getätigt werden, dass die Ergebnisse von Diskette geladen werden (wenn nicht vom Motor zwischengespeichert), etc ...

Wie wäre es SQLite? Es ist wie es klingt, ist eine gute Passform für Ihre Anwendung.

Sie können mit System.Data.SQLite als .NET-Wrapper.

Sie können kostenlos SQL Server Express erhalten. Ich würde sagen, die Frage ist nicht so sehr, warum Sie eine Datenbank verwenden sollten, mehr, warum sollten Sie nicht? Diese Art von Problem ist genau das, was Datenbanken sind für und SQL Server ist eine sehr leistungsfähige und weit verbreitete Datenbank, wenn Sie also für eine andere Lösung gehen werden Sie Notwendigkeit, einen guten Grund zu geben, warum Sie würde nicht mit einer Datenbank gehen.

würde eine Datenbank eine gute Passform. SQLite ist gut, wie andere erwähnt haben.

Sie können auch eine lokale Instanz von SQL Server Express Vorteil einer verbesserten nehmen Integration mit anderen Stücken der Entwicklung Stapel Microsoft (da Sie erwähnen C #).

Eine dritte Option ist ein Dokument, Datenbank wie Raven die sich von den Klängen Ihrer Daten passen.

Bearbeiten
Eine vierte Möglichkeit wäre, zu versuchen, Lightswitch wenn die beta in wenigen Tagen kommt. (8-23-2010)
/ bearbeiten
Es wird immer eine Beschränkung auf Datenspeicher (der leere Raum der Festplatte) sein. Laut Wikipedia ist SQL Express beschränkt auf 10 GB für SQL Server Express 2008 R2

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