Innovator-Clients senden Anfragen an den Server, der diese bearbeitet und Antworten zurück an den Client schickt. Da Innovator ein Mehrbenutzersystem ist, greifen unter Umständen viele Clients auf denselben Server zu. Deren Anfragen werden vom Server sequentiell bedient. Führt der Server eine zeitaufwändige Aktion zur Bearbeitung solch einer Anfrage aus, dann müssen andere anfragende Clients auf deren Fertigstellung warten, bevor sie selbst bedient werden. Ineffiziente Server-Zugriffe bremsen also alle aus.
Plug-ins senden solche Anfragen mittels der Server-API, indem sie Methoden auf Modellelementen ausführen oder deren Eigenschaften abfragen. Die API generiert dann ein "Telegramm" mit den notwendigen Daten, das an den Server geschickt wird. Das Senden eines Telegramms an den Server ist wegen der Kommunikation über das Netzwerk zeitaufwändig.
Hinweis
Selbst die Abfrage einer einfachen Elementeigenschaft wie z.B. des Namens über die Eigenschaft DisplayName führt zum Senden eines Telegramms an den Server.
Vermeiden Sie nach Möglichkeit eine große Zahl an Telegrammen. Problematisch ist der Test auf Ausführbarkeit von Befehlen in den CanExeCmd-Methoden. Da diese Tests sehr häufig aufgerufen werden, ist es nicht sinnvoll, in diesen Methoden auf den Server zuzugreifen. Besser ist, die Befehle zu erlauben und erst bei der Befehlsausführung die Bedingung zu überprüfen, die den Serverzugriff erfordert. Geben Sie dann eine Fehlermeldung aus, wenn die Bedingung nicht erfüllt ist, und brechen Sie die Befehlsausführung ab.
In der Praxis ergibt sich häufig die Aufgabe, diverse Eigenschaften von Elementen einer Menge (wie z.B. Name, Symbol, Namensraum) zu bestimmen. Die schlechteste Lösung ist eine Schleife über alle Elemente der Menge, in der dann jeweils für jedes Element die entsprechenden Eigenschaften abgefragt werden. Die Anzahl der Servertelegramme ergibt sich dann als Produkt der Anzahl der Elemente und der Anzahl der Eigenschaften.
Wesentlich schneller ist es, alle Informationen mit einem einzigen Telegramm über die Methode ServerUtilities.GetElementInfos (Util.dll) zu bestimmen. Im folgenden Beispiel werden Name und Zugriff der Elemente ermittelt.
Hinweis
Die Methode funktioniert nur dann, wenn die Infos auf allen Elementen der Menge definiert sind. Andernfalls wirft die Methode eine Exception.
Die Methode liefert nur Werte, die vom Typ string, bool, long oder Point sind. Ist das Ergebnis ein Element, dann ist die Methode GetElementViews analog zu verwenden.
© 1986-2014 MID GmbH Nürnberg Deutschland. DIN EN 9001 zertifiziert. Alle Rechte vorbehalten.