Michael,
danke für den Hinweis. "RemObjects SDK" scheint tatsächlich eine ähnliche Zielsetzung zu haben. Ein Unterschied scheint die Client/Server Architektur zu sein. TML ist strikt Peer to Peer. So etwas wie Clients und Server gibt es nicht. Das darunter liegende Protokoll ist BEEP (RFC3080,RFC3081), welches einen bereits fertigen (standardisierten) Protokollbaukasten darstellt, macht diese Art der Kommunikation möglich. TML ist lediglich eine mögliche Anwendung von BEEP.
Beim Datenlayer geht TML eigene Wege. Das Ziel ist eine möglichst einfache jedoch typsichere Datenstruktur zur Verfügung zu stellen, die bei Bedarf auch z.B. SOAP Daten enthalten kann.
Wir verwenden TML/SIDEX seit ca. 1 1/2 Jahren in einem Projekt mit lang laufenden und performance hungrigen Befehlen, bei denen ein Load Balancing unerlässlich ist. Bei der Entscheidung welches SDK wir für die Netzwerkkommunikation verwenden, wahren alle Client/Server basierten Protokolle von vornherein entweder ungeeignet oder zu schwer dazu zu bewegen sich wie ein Peer to Peer Protokoll zu verhalten. Ein kompromissloses Multithreading bei der Ausführung von Kommandos war uns ebenfalls wichtig. Auch dieses haben wir in anderen Bibliotheken vermisst.
Unterschiedlich ist auch, dass "RemObjects SDK" native Implementierungen zur Verfügung stellt. Dagegen befindet sich der Kern von TML/SIDEX in dynamischen Bibliotheken (dll,so). Ein einfach gehaltenes C Interface erleichtert die Verwendung in anderen Sprachen. Die in der Distribution enthaltenen Sprachanbindungen sind, was die Delphi/Lazarus Komponenten betrifft als Sourcecode enthalten.
Da ich "RemObjects SDK" nicht so gut kenne, würde ich mich über deine Einschätzung bzgl. der Unterschiede freuen.
Maik
Beispiel für ein SIDEX Dokument (simple data exchange format):
Code: Alles auswählen
<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<SIDEX_DEMO>
<TestValues>
<Number type='int'>42</Number>
<Text type='string' encode='raw'>thanks for the fish</Text>
<YesOrNo type='bool'>0</YesOrNo>
<Price type='float'>12.400000</Price>
<Dictionary type='dict'>
<Key_0 type='string' encode='raw'>Price</Key_0>
<Value_0 type='float'>12.400000</Value_0>
<Key_1 type='string' encode='raw'>YesOrNo</Key_1>
<Value_1 type='bool'>0</Value_1>
<Key_2 type='string' encode='raw'>Number</Key_2>
<Value_2 type='int'>42</Value_2>
<Key_3 type='string' encode='raw'>Binary</Key_3>
<Value_3 type='binary' encode='base64'>MTIzNAA=</Value_3>
<Key_4 type='string' encode='raw'>Text</Key_4>
<Value_4 type='string' encode='raw'>thanks for the fish</Value_4>
</Dictionary>
</TestValues>
</SIDEX_DEMO>