COM (Component Object Model) ist eine von Microsoft entwickelte Technik zur Interprozesskommunikation unter Windows (Quelle
). Die Vertec Desktop- und Cloud App können über eine COM-Schnittstelle (oder ActiveX-Schnittstelle) angesprochen und damit von aussen durch eine andere unter Windows lauffähige Software (insbesondere alle lokal installierten Microsoft Office Apps) ferngesteuert werden. Die Apps dienen den entsprechenden Applikationen dafür als "out-of-process" COM Server.
Grundsätzlich können alle Einträge in Vertec auch von einem externen Programm aus erfasst werden und via COM-Schnittstelle in Vertec eingelesen werden. Im Artikel Import- und Exportbeispiele
befinden sich einige Excel-Beispiele für den Umgang mit der Vertec COM-Schnittstelle.
Die Beschreibung der zur Verfügung stehenden Interfaces finden Sie im Artikel COM Interfaces
.
Sowohl Vertec.Desktop.exe als auch Vertec.Cloud.exe enthalten die Vertec Type Library. Diese kann in der externen Applikation eingebunden werden, um Zugriff auf den Objektkatalog, code completion und compile-time type checking zu erhalten.
Der Unterschied von Desktop App und Cloud App liegt darin, dass die Cloud App lokal einen COM Server anbietet, obwohl gar keine Business-Logik vorhanden ist. Dies wird mit einem Proxy zum eigentlichen COM Server, der auf dem Server in der Vertec Session läuft, simuliert. Der Verkehr läuft dabei über die normale Datenleitung (und ist darum nicht geeignet für Datenmigrationen bzw. grössere Datenmengen).
Für den Einsatz der COM-Schnittstelle ist die Einbindung der Type Library nicht nötig bzw. im Falle der Cloud App auch nicht möglich, da keine Businesslogik vorhanden ist und die Verbindung zum COM Server mit einem Proxy gemacht wird.
Auch die Desktop App kann ohne Anbindung an die Type Library angesprochen werden.
Wir empfehlen immer die Verwendung ohne Type Library, da diese Anwendung mit der Desktop App und der Cloud App bzw. auf Windows sowohl im Cloud Abo als auch On-Premises eingesetzt werden kann.
Das bedeutet, dass nicht direkt auf die Typen wie z.B. IVtcObject
, App
etc. zugegriffen werden kann, da das System diese ohne Type Library nicht kennt. Die Deklaration von Objekten, Objektlisten, Session etc. erfolgt deshalb auf Object
. Statt:
Dim Projektbearbeiter as IVtcObject
Schreibt man also:
Dim Projektbearbeiter as Object
Die entsprechenden COM Interfaces
sind im laufenden Betrieb dann vorhanden, sobald das Objekt geladen wird.
Unterschiedliche Interface Namen in Desktop App und Cloud App
Da der COM-Server bei der Desktop App direkt, bei der Cloud App via Proxy verfügbar ist, ergeben sich unterschiedliche Interface Namen. Die Verwendung ist jedoch identisch.
Desktop App |
Cloud App |
App |
ComCoClass |
IVtcObject |
VtcObjectProxy |
IVtcObjectList |
VtcObjectListProxy |
ITimBearbeiter |
TimBearbeiterProxy |
... |
|
Die detaillierte Beschreibung finden Sie im Artikel COM Interfaces
.
Übergabe von Variants an den COM Proxy
In Funktionen, welche Vertec Objekte als Parameter akzeptieren, können keine als Variant
deklarierte Objekte übergeben werden, sonst erscheint die Meldung Ungültiger Prozeduraufruf oder ungültiges Argument.
Sind die Vertec Objekte als Object
deklariert, funktioniert alles problemlos.