2010-01-28 10 views
12

Es gibt viele "primitive" Kesseltypen von Datenklassen, die in vielen verschiedenen Programmen vorkommen können.Standard-Business-Logik-Datenklassen für .NET

Ich habe jedoch noch nie eine Klasse oder einen Bibliothekssatz gesehen, der die Notwendigkeit erkennt, all diese Dinge mit der für sie erforderlichen allgemeinen Logik wie der Validierung zu kombinieren.

Beispielklassen ([] Klammern entsprechen auch in hypothetischen Bibliothek Klassen):

Adresse (Straße, Postleitzahl, Ort, Bundesland/Gebiet/Provinz, Land)
Person (Name, Kontaktdaten ([ Telefon]/[E-Mail]/etc), [Adresse], SSN/TIN, [Credit])
Telefon (Nummer, Ländercode, etc.)
Creditcard (Art, Anzahl, Ablauf, CCV) **

Und ich bin sicher, dass jemand mit vielen anderen kommen könnte.

Ich habe meine eigenen Phone/Address/Person/CreditCard-Klassen entwickelt, die ich in Projekten verwende, komplett mit Validierung und Logik.

Allerdings bin ich nur in der Lage, US-basierte Informationen zu validieren. Meine Telefonnummernklasse würde idealerweise von einer Basistelefonklasse erben, da meine Nummer die Nummer tatsächlich in NPA, NXX und Station aufteilt und sie vollständig mit NANP-Standards validiert.

Gibt es eine Reihe von Bibliotheken im Netz, die eine umfassende Sammlung solcher Datenklassen für Kesselplatten mit entsprechender Validierung haben?

Enthält es eine Validierung für einen weltweiten Datensatz oder nur US-Daten?

Und für die ** von CreditCard, ist es in der Lage PCI Data Security Standards zu erfüllen?

Ich weiß, dass dies Klassen sind, die viele Leute wahrscheinlich viele Male in vielen verschiedenen Sprachen geschrieben haben, aber gibt es irgendeine .NET-Bibliothek, die diese Wünsche erfüllt?

Ich würde Open Source/Free bevorzugen, obwohl ich eine bezahlte 3rd-Party-Bibliothek betrachten würde.

+0

+1 für die Frage. Jedes Mal, wenn ich eine neue "Address" -Klasse schreiben muss, denke ich, warum? Man könnte meinen, dass es für solche Dinge sogar einen "Industriestandard" geben würde. – Aaronaught

+0

Genau, wenn ich Zeit hätte, würde ich eine Bibliothek für diesen Zweck erstellen. Ich kann nicht garantieren, dass ich den Umfang erfüllen kann. –

Antwort

6

CSLA.NET könnte nahe, was yoju're suchen. Es dauert wahrscheinlich ein bisschen weiter als das, was Sie fragen, aber es hat einige der umfassendsten Dokumentation eines Framework (dh Bücher von Apress veröffentlicht). Es ist auch kostenlos.

Insbesondere der CSLA.ValidationRules-Namespace und die Klassen CommonRules und CustomRules konzentrieren sich auf die Datenvalidierung.

+0

Wow, definitiv ein großartiger Rahmen für den Aufbau von Geschäftslogik. Ich kann sehen, dass es auf sehr interessante Weise eine Menge Funktionalität implementiert, die ich in mehreren Projekten gesehen habe, an denen ich in der Vergangenheit gearbeitet habe. Allerdings habe ich mehr auf eine Bibliothek/einen Rahmen von "häufig verwendeten Klassen" geschaut, die einen großen Anwendungsbereich haben, wie die Beispiele, die ich erwähnte. –

1

Es mag nützlich sein, ein Schema für typische Implementierungen verschiedener Objekte beim Starten eines Projekts zu haben, jedoch wären die tatsächlichen Implementierungen spezifisch und erfordern spezifische Verhaltensweisen und Validierungsanforderungen. Dies ist wahrscheinlich der Grund, warum ORM- oder Business Object-Framework-Generierungstools ein Eingabeschema zum Erstellen der Klassen benötigen.

Wenn ein standardmäßiges Klassenframework existierte, das Open Source wäre, würden Sie feststellen, dass dieses Schema massiv wäre und ständig wachsen würde, was es schwierig machen würde, eine Anwendung auf dem neuesten Stand zu halten. Jede Klasse und Eigenschaft dieser Klasse würde eine Menge Dokumentation erfordern, mit Möglichkeiten, wie sie verwendet werden könnten usw., aber dies könnte subjektiv sein.Ein Schema, in dem man auswählen kann, was es will und wie es validiert werden soll, um es in einem ORM/Business Object-Generierungsframework zu verwenden, ist vielleicht eine gute Idee und ist sicher, dass es es derzeit nicht gibt.

Sie könnten sich spezifische existierende Open-Source-Projekte mit ähnlicher Funktionalität ansehen und diese zur Inspiration verwenden?