Metaformat zur Beschreibung von Datensätzen und darauf Aufbauende Konverter



  • Hallo,

    folgende Idee:
    Angenommen es gäbe eine Metasprache zum definieren von reinen Datenstrukturen.
    Also ähnlich eines C++ struct, wobei man angibt Typ (aus einer Auswahl vordefinierter Typen), Variablenname.
    Möglich sein müssten weiterhin die Verschachtelung von Typen, also als Typangabe selbst wiederum eine vorher definierte Struktur angeben.
    Und einfache Container von Typen (Listen, Arrays, Maps).

    Ausgehend von der Datei die diese Information zur Datenstruktur festhält könnte man dann folgendes automatisch generieren lassen...

    - C/C++ Header Dateien mit den entsprechenden struct-Deklarationen.
    - Java class Dateien
    etc. für andere Sprachen.

    weiterhin:
    - XML-DTD/XML-XSLT Dateien die das Format für XML Dateien zum Datenformat festlegen.
    - SQL Scripts, die eine Datenbank mit dem im Format aufgeführten Feldern anlegen.
    etc. für andere Datenformate.

    weiterhin:
    - Fertiger C/C++/Java/...-Code zum einlesen der Daten via XML-Dateien (Für gängige XML Parser) oder gängige Datenbank-Frontends und dem automatischen Abbilden auf die internen Datenstrukturen.
    - usw.

    Also einfach ein verallgemeinertes, Sprachübergreifendes Datenstruktur-spezifikationsformat und dazu gehörige Konverter für besagte Anwendungen.

    Frage: Gibt es sowas schon? (nicht kommerziell?)
    Wonach soll ich suchen?
    Besteht Interesse sowas zu entwickeln?

    Scrontch.



  • weitere Anwendung:
    - Code automatisch generieren, der die entsprechenden Datensätze OS-unabhängig über TCP/IP Sockets verschickt/empfängt, für verschiedene Sprachen.



  • vielleicht geht ASN.1 in die Richtung.



  • Ja, ASN.1 geht sicher in die Richtung und muss wohl in die engere Ausahl kommen. Es ist nur etwas alt und sehr Netzwerk-lastig. Ich dachte es gäbe vielleicht etwas moderneres mit weitere Verbreitung?



  • Im allgemeinen nennt sich sowas "Object-Model" bzw. OMD(escription).
    Gibt es schon viele Ansätze und leider auch viel Unsinn.

    Bei modernen Systemen befindet sich das Object-Model schon in XML oder in einer XML-artigen Sprache. Dann ist es trivial daraus beispielsweise SQL-Datenbanken zu generieren.

    Wenn du sowas für Netzwerkübertragungen suchst, dann solltest du dir mal SOAP anschauen.

    Gruß



  • scrontch schrieb:

    Es ist nur etwas alt

    ASN.1 wird doch weiter entwickelt. Es gibt ja sogar XML-Modelle für ASN.1. Ich würde das alter in dem Fall eher positiv einschätzen, weil da viel Erfahrung drin steckt und es von sehr vielen Firmen verwendet wird. Auch wenn es vielleicht nicht so Hipp wäre wir irgend etwas mit "JSON" und "Beta" im Titel 😉

    scrontch schrieb:

    und sehr Netzwerk-lastig.

    Das sollte ja kein Problem sein.



  • Wichtig wär halt auch noch die Unterstützung durch bereits existierende frei verfügbare Tools.

    ASN.1 zu C-struct Konvertierung gibt es schonmal.
    Aber ansonsten find ich nicht viel.

    Anderer vielversprechender Kandidat ist halt gleich W3C XML Schema (XSD) zu nehmen.

    Werde die beiden Möglichkeiten jetzt mal genau unter die Lupe nehmen und Vergleichen.

    Weitere Anregungen oder Tipps zu Tools sind gerne willkommen.
    Eventuell können wir ja was zusammen entwickeln?



  • ohne jetzt für uml stellung zu nehmen: es gibt noch uml.

    das problem ist, dass man für verschiedene anwendungszwecke anderen anforderungen an eine beschreibung hat. für sql beispielsweise recht es nicht aus, nur die tabellen (sprich structs) anzugeben. man verwendet dort ja auch relationen. asn.1 bietet sowiewas nicht. xsd nur eher rudimentär. vererbung ist hier auch noch wichtig. asn.1 bietet das nicht, soweit ich weiß, sql und xsd sehr wohl.

    aber grundsätzlich ist das eine interessante diskussion. ich habe mir das schon mal überlegt und bin dann zum schluss gekommen, dass das beste hier einfach ein plugin für eine ide ist. man gibt im plugin z.b. ein uml diagramm ein und bekommt dann xsd, wsdl, er-diagramm, sql, c++, java, und co generiert. oder man lässt sich alles aus einer bestehenden xsd datei erstellen.



  • UML in welchem Format? UML sind IMHO doch Diagramme? Die will ich nicht unbedingt immer machen müssen. Hätte lieber ein Text-Format als Ausgangspunkt.

    Zur Sache mit dem SQL-Export hast du natürlich Recht, die volle Datenbankbeschreibung bekommt man damit nicht. Aber Tabellen würden vorerst mal genügen. (Vorerst genügt mir eh XML Import/Export)

    Hast du da ein konkretes IDE+Plugin im Kopf?

    Ich habe bis jetzt mal folgendes dazu gefunden:
    Kostenlos (aber gefrickel):
    http://www.dre.vanderbilt.edu/~boris/xsc/
    http://www.ncbi.nlm.nih.gov/books/bv.fcgi?call=bv.View..ShowSection&rid=toolkit.section.ch_app.datatool

    Komerzielle Lösungen:
    http://codalogic.com/lmx/
    (^ Das Bild illustriert sehr schön wie ich mir die Sache vorstelle: Ausgangspunkt ist das .XSD. Alle blauen Code-Teile werden automatisch generiert)
    http://www.obj-sys.com/xbinder.shtml



  • scrontch schrieb:

    Wonach soll ich suchen?

    Google: ORM (Object-relational mapping), Google: Serialization, etc.
    Vielleicht macht dich das schon glücklich, oder du kannst dein Tool vielleicht auf ein vorhandenes Format stützen statt gleich ein neues neu erfinden zu müssen. Apropos, welche Gründe sprechen denn deiner Ansicht nach für XML?

    Falls du auch nur einen Hauch mehr als die reine Struktur von Daten im Auge hast (und auch für die Zukunft alles weitere ausschließt) lohnt sich ein Blick auf Google: Programming language, bzw. ist tendenziell unerlässlich.

    Desweiteren kommt man kaum umhin als eine gewisse Tendenz bei der Auswahl deiner Beispielsprachen anzumerken. Ist das durchdacht oder zumindest gewollt?

    Btw, ob Diagramm oder Text ist vorwiegend--im wahrsten Sinne des Wortes--Ansichtssache.



  • uml bietet sehr viel. gedachte habe ich aber an die klassendiagramme:
    http://de.wikipedia.org/wiki/UML#Spracheinheit_Klassen

    scrontch schrieb:

    Hast du da ein konkretes IDE+Plugin im Kopf?

    nein, habe ich nicht. ich habe eher allgemein gemeint, dass es in einer ide am besten aufgehoben wäre.

    es wäre grundsätzlich interessant, eine beschreibung für modellklassen zu finden, in der dann alles drin steht. so wenig ich uml und den personenkreis, der uml glorifiziert, mag, bietet uml das schon.



  • 'f schrieb:

    Google: ORM (Object-relational mapping), Google: Serialization, etc.

    Danke für den Tipp. Hatte von ORM zwar schonmal gehört, bin aber nichmehr auf den Namen gekommen.

    'f schrieb:

    Vielleicht macht dich das schon glücklich, oder du kannst dein Tool vielleicht auf ein vorhandenes Format stützen statt gleich ein neues neu erfinden zu müssen.

    Ich wollte nie ein neues Format erfinden.
    Es ist genau mein Anliegen ein bestehendes Format zu finden und zu nutzen.

    'f schrieb:

    Apropos, welche Gründe sprechen denn deiner Ansicht nach für XML?

    Guter Tool support?
    Ich will eben nicht nur das Format, sondern wenn möglich auch schon bestehende Infrastruktur (Tools, Libraries, ...) nutzen. Wenn's geht kostenlose.

    'f schrieb:

    Falls du auch nur einen Hauch mehr als die reine Struktur von Daten im Auge hast (und auch für die Zukunft alles weitere ausschließt) lohnt sich ein Blick auf Google: Programming language, bzw. ist tendenziell unerlässlich.

    Desweiteren kommt man kaum umhin als eine gewisse Tendenz bei der Auswahl deiner Beispielsprachen anzumerken. Ist das durchdacht oder zumindest gewollt?

    Verstehe ich nicht. Ich höre da eine Kritik raus?
    Meine Anwendung für die ich das brauche ist eben in C++ & Co. und mit ganz konkreten Anforderungen. (Portabilität, Netzwerk, ...)
    Klar dass ich das in den Beispielen ausdrücke, bzw. konkret dafür eine Lösung suche.
    Natürlich gibt es andere Sprachen mit eventuell ganz anderen Bedürfnissen was die Beschreibung von Daten angeht. Oder was willst du mir sagen?


Log in to reply