Flop statt Top: AltovaXml
Einem geschenkten Gaul schaut man nichts in Maul - zu recht. Doch bei Werbegeschenken ist das anders. Mit AltovaXml stellt die Firma Altova, Hersteller des bekannten XMLSpy, eine kostenlose Implementierung von XQuery 1.0, XSLT 1.0 und XSLT 2.0 bereit - schema-aware versteht sich. Und das auch noch sowohl für .NET und COM als auch Java. Bei näherem Hinsehen entpuppen sich die Bibliotheken jedoch nur als Wrapper um ein Kommandozeilenprogramm namens AltovaXml.exe. Ob da die Performance mitspielt? Abgesehen hiervon hat das Geschenk einen weiteren Haken: Wird eine Instanz des obligatorischen Application-Objekts erzeugt, erscheint auch ein Konsolenfenster mit folgendem Inhalt - quasi Bannerwerbung auf dem Desktop:
AltovaXML 2005
Copyright (c) 1998-2005 Altova GmbH. All rights
reserved.
Use of this software is subject to the license agreement at
http://www.altova.com/xsltdla
Zu allem Überdruss verschwindet das Fenster auch dann nicht, wenn die Host-Anwendung geschlossen wird - zumindest unter .NET. Bei Nutzung der COM-Schnittstelle zeigt sich dieses Verhalten nicht. Die API ist übrigens sehr rudimentär, aber dafür einfach zu benutzen:
Dim Altova As New Application
Dim xq As XQuery = Altova.XQuery
xq.XQueryFromText = "//*"
xq.InputXMLFileName = "Input.xml"
xq.Execute("Output.xml")
Da bietet Saxon.NET schon eine ausgefeiltere, aber dafür auch kompliziertere Schnittstelle an.








8 Comments:
hi! eines verstehe ich nicht. was soll ein "Wrapper um ein Kommandozeilenprogramm" sein? Was hindert eine .exe gleichzeitig ein COM Server zu sein und auch über die shell über options zu laufen? Das die Instanz über .NET nicht schließt sollte natürlich nicht sein. Ob die API rudimetär ist weiß ich nicht, aber Altova hat noch andere COM Komponenten, die eventuelle Lücken vielleicht schließen. Fragt sich halt immer was eine Komponente überhaupt erfüllen soll/muss.
Grüße
Clemens
2:39 PM
Hi Clemens,
Danke für Dein Kommentar. In Bezug auf COM ist es tatsächlich so, dass das Kommandozeilenprogramm gleichzeitig als COM Server agiert. Problem dabei ist allerdings auch, dass der COM Server in einem eigenen Prozess läuft, also das (langsame) COM Marshalling Anwendung findet. In diesem Fall handelt es sich natürlich um keinen Wrapper. Mit Wrapper meine ich, dass eine Bibliothek nicht selbst die Funktionalität implementiert, sondern nur eine Schnittstelle für eine andere Implementierung anbietet, was ebenfalls mit Performanceeinbußen einhergeht. Somit handelt es sich eben um keine .NET-Implementierung von XQuery, sondern nur um eine Schnittstelle zu einer COM-basierten XQuery-Implementierung. Ich hätte also besser "Wrapper um ein COM Server" schreiben sollen.
Wegen "rudimentär": Die API ist insofern unvollständig als dass als Input beispielsweise kein XmlReader übergeben werden kann. Aber dafür ist sie eben einfacher anzuwenden als die von Saxon.NET. Von daher gebe ich Dir recht: Es kommt immer darauf an, was man erwartet/braucht.
Dass Altova weitere COM-Komponenten zur Verfügung stellt, wußte ich nicht, klingt aber interessant. Hast Du hierzu mehr Infos?
5:50 PM
Hi Martin!
Stimmt natürlich. Um das marshaling zu umgehen wäre es wohl besser gewesen einen DLL COM server zu schreiben und dann könnte man immer noch eine Kommandozeilen exe dazu machen :-), welche als client fungiert.
wobei ich aber auch wieder einschränken muss :-D soweit ich weiß sind die APIs eher so ausgelegt, dass wenige Aufrufe mit längerer Abarbeitungszeit zu erwarten sind. Im Gegensatz zu vielen Aufrufen mit kurzer Ausführungszeit wo ein marshaling overhead kritischer ist.
Dass kein XmlReader Objekt verwendet werden kann ist leider ein Manko. Altova sieht sich vielleicht noch nicht so wirklich in der .NET Welt zuhause.
Bzgl anderer COM Komponenten und Altova. Sie haben zB die klassischen automation server wie XMLSpy, Stylevision und MapForce. Wobei die beiden letzteren erst nachziehen müssen. Andererseits bieten sie auch die Integrationen in die VisualStudio.NET und Eclipse an, die ebenfalls über COM Schnittstellen gelöst sind (zwangsläufig). Ich weiß auch, dass mit einer netten neuen COM Lösung in diesem Herbst zu rechnen ist :-D
Grüße
6:13 PM
Hi Clemens!
Da hast Du natürlich wieder Recht: Die Schnittstelle ist gerade so ausgelegt, dass nicht viele Aufrufe notwendig sind und folglich sich die Performanceeinbußen in Grenzen halten. Aber was mich wirklich stört ist dieses Fenster! Naja, das kann man wahrscheinlich mit irgendwelche Windows-API-Hacks verschwinden lassen ;)
Zum XmlReader: Dazu muss ich fairerweise noch anmerken, dass das auch von Saxon.NET bisweilen nicht unterstützt wird. Man muss stattdessen die entsprechenden Java-Äquivalente verwenden. Auch unschön, aber man hat immerhin einen programatischen Zugriff auf das XML.
Aber nochmal zu den COM-Schnittsteleln, z.B. XMLSpy: Welche Funktionalität eröffnet sich hierdurch für den Entwickler? Kann er z.B. den XML-Editor in die eigene Applikation einbinden? Die Integration von XMLSpy in Eclipse und VS.NET kenne ich - nutze ich selbst oft und gerne :) Finde ich auch Klasse, dass es zumindest für Eclipse frei verfügbar ist. Hat mir die Arbeit erheblich vereinfacht.
Wenn Du so gut über die zukünftigen Entwicklungen von Altova bescheid weisst, erlaube mir die Frage: Du arbeitest nicht zufällig für Altova?
Viele Grüße
Martin
2:20 AM
Also momentan sind die Altova Produkte wie XMLSpy, StyleVision und MapForce (die anderen lasse ich mal weg) nur automation server. Dieses lassen sich nicht in andere Applikationen integrieren. Technisch gesehen kann natürlich die .NET Integration von XMLSpy genommen werden und sie in einer eigenen Anwendung zu verwenden. Praktisch wird das aber keiner machen, da dafür die .NET VSIP Umgebung nachgebaut werden müsste.
Die Authentic Browser Edition habe ich gestern sogar vergessen. Dieses Control lässt sich natürlich in jede beliebige Applikation einbauen und wird häufig im IE verwendet. Authentic bietet aber "nur" das "user-friendly" XML editieren an.
"Frei verfügbar" für die Eclipse Integration ist aber relativ :-). Eine XMLSpy Lizenz muss schon da sein :-D.
Und ja, ich arbeite für Altova. Bin auch sicher ein bisschen subjektiv deswegen ;-).
Grüße
10:15 AM
Hi Clements,
Die Authentic Browser Edition ist wirklich interessant. Genau so was suchen wir grad für ein Projekt an der Uni. Leider muss es auch mit anderen Browsern als dem IE funktionieren.
Die XMLSpy Home Edition ist doch zumindest kostenlos und damit "frei" (also nicht im Sinne von OS "frei") verfügbar, und ebenso das Eclipse-Plug-In?
Finde ich übrigens ne gute Sache, wenn sich Firmen bzw. ihre Mitarbeiter auch aktiv an der Community beteiligen (also z.B. Blogs kommentieren).
Da ich Dich jetzt schon mal an der Angel habe: Vielleicht kannst Du Eure Presseabteilung bitten, mich auf Ihren Presseverteiler zu setzen (-> Martin.Szugat@GMX.net). Ich habe zwar schon mal Emails an die geschickt, aber nie ne Antwort bekommen.
Viele Grüße
Martin
PS: AltovaXml wird in der nächsten Ausgabe des dot.net magazins in der XML-Corner ein Thema sein (Textkasten). Deine kritischen und überzeugenden Anmerkungen zu meiner Kritik fließen natürlich in den Beitrag ein.
2:48 PM
Stimmt XMLSpy Home ist frei.
Für die Mozilla Browser gibt es eine Erweiterung um ActiveX zu ermöglichen. Damit könnte Authentic auch laufen. Ist aber nicht wirklich elegant und ich habe es auch noch nicht ausprobiert.
Das mit dem Presseverteiler habe ich weitergeleitet. Vielleicht klappt es diesmal.
Jetzt gehe ich mal 2 Wochen in Urlaub und dann bin ich schon auf den dot.net Text über AltovaXML gespannt :-).
Grüße
Clemens
4:11 PM
Martin,
meine Kollegin hat dich auf die mailing-list gegeben.
10:57 AM
Kommentar veröffentlichen
Links to this post:
Link erstellen
<< Home