# Interfaces mit XML & Co beschreiben?



## pocketom (13. Jul 2009)

Hi,

ich habe mit XSD Schemas eine Menge Klassen erzeugt, hauptsächlich abstrakte Klassen. Nun möchte ich irgedwie ebenso platformunabhängig beschreiben welche Interfaces eine Klasse implementieren muss. um verwendet werden zu können. Gibt es da eine Beschreibungssprache? Eine die am besten mit den XSD Schema "kooperiert"


----------



## Wildcard (13. Jul 2009)

Kannst du mal näher beschreiben was du erreichen willst, darunter kann ich mir erstmal nicht viel vorstellen.


----------



## pocketom (13. Jul 2009)

Ganz einfach, so wie man Datenstrukturen mit XSD beschreibt, so müsste es doch auch möglich sein Methoden (ohne Inhalt, nur Interfacemethoden) mittels eines XML Standards als Interface Schema zu beschreiben. Der jeweilige Konsument des Schemas muss diese dann implementieren nachdem er sich die Klassen von einem Generator (hier z.B. JAXB xjc) hat automatisch erstellen lassen. Geht das mit irgendeiner XML Sprache? Bis jetzt habe ich so etwas in der Art nur in Verbindung mit WSDL erlebt, dort muss man ja die "Business Logic" an den dafür vorgesehenen Stellen im ServiceStub Code implementieren...


----------



## Wildcard (13. Jul 2009)

Schau dir mal EMF an. Damit wird die EMOF Spezifikation umgesetzt. Im Ecore Modell können neben normalen Properties auch Vererbungshierarchien und eOperations (Methoden) verankert werden.
Daraus lässt sich dann direkt mit EMF Code erzeugen und die übriggebliebenen Stubs - also alle eOperations und Methoden die von einem externen Interface definiert wurden - müssen ausimplementiert werden (und beim erneuten generieren werden sie sogar automatisch gemerged, es geht also nichts verloren).


----------



## pocketom (14. Jul 2009)

Danke für den Tipp. Klingt prinzipiell genau nach dem was ich gesucht habe, aber ist es auch kompatibel zu anderen Sprachen wie C, Delphi, .net, usw?


----------



## Wildcard (14. Jul 2009)

Ja und nein. EMOF/Ecore ist sprachunabhängig (also die Modelldefinition selbst), der Codegenerator und die Runtime aber nicht für jede Sprache verfügbar. Es gibt einen C# Port und solange es nur um das generieren von Klassen geht, kannst du auch die verwendeten Emitter Templates austauschen und dann Code für jede beliebige Zielsprache erzeugen.


----------



## pocketom (14. Jul 2009)

Emitter Templates? Wo würde ich so eins z.B. für Delphi finden? Google liess mich hier im Stich :-/


----------



## Wildcard (14. Jul 2009)

Der EMF Codegenerator verwendet Java Emitter Templates (JET)um aus dem Modell Java Klassen zu erzeugen.
Die Technik ist vergleichbar mit JSP und im Prinzip einfach eine textuelle Transformation. Wenn du weißt wie den Delphi Code aussehen soll, kannst du ein JET Template schreiben das ein Modell entsprechend transformiert.


----------



## pocketom (16. Jul 2009)

Ok, danke, ich werds mir mal ansehen.


----------

