Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Basti* am 30.07.12 - 15:00:27

Titel: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Basti* am 30.07.12 - 15:00:27
Hallo zusammen!

Ich hab irgendwo gelesen, dass man die Script-Libs lieber nicht nutzen sollte, da dabei Masken und Ansichten langsam werden sollen.

Ist das wirklich so schlimm? Oder kann man die Libs in begrenztem Umfang verwenden?

Ein paar Sachen würd ich nämlich schon ganz gern zentral organisieren. In jedem Button die selbe Funktion zu definieren, kann ja nicht im Sinne des Erfinders sein...

Zur Zeit hätte ich ca. 50 eigene kleine Funktionen. Die sind alle in einer LIB. Aber in dem Durcheinander find ich irgendwann nichts wieder.

Grüße
Basti
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: koehlerbv am 30.07.12 - 15:03:08
Ich hab irgendwo gelesen, dass man die Script-Libs lieber nicht nutzen sollte, da dabei Masken und Ansichten langsam werden sollen.

Keine Ahnung, wo Du das gelesen hast: Entweder passte der Kontext nicht, oder es wurde schlicht Quatsch geschrieben. Natürlich kann und sollte man ScriptLibraries verwenden.  ;)

Bernhard
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Peter Klett am 30.07.12 - 15:05:09
Ich nutze sehr intensiv Script-Bibliotheken und halte es für ein Märchen, dass Masken und Ansichten dadurch langsamer werden.
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Basti* am 30.07.12 - 15:09:09
Prima! Das klingt ermutigend :)

BTW: kann man eigentlich die Anordnung der Funktionen in einer Lib alpabethisch sortieren?
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Peter Klett am 30.07.12 - 15:20:23
In 8.5 mit dem neuen Scripteditor werden die automatisch alphabetisch sortiert, ansonsten erfolgt die Ablage der Subs und Functions chronoligisch
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Thomas Schulte am 30.07.12 - 16:07:59
Das mit den Script libraries die das Ganze langsam machen ist vermutlich ein Missverständnis, das aus einem echten Problem zumindest der Clients bis Version 7 her rührt. Wenn man nämlich Teilmasken verwendet hat um Script Libraries einzubinden, dann gab (unter Umständen gibt es das auch in den 8er Versionen immer noch) es da ein Problem, das mit den Alias Namen der Teilmasken zu tun hatte.
Die Einbindung solcher Masken führte nämlich dazu, das mit einer höheren Anzahl von eingebundenen Teilmasken die Öffnungszeit der Form an und für sich in den Keller ging.
Die Lösungsversuche für das Thema sind Legion und reichen von einfach ein 1=1 im Initialize der Maske einfügen bis hin zu "Füge eine Dummy Script Library in die Teilmaske ein".

Das Problem war hier aber nicht der Code in der Teilmaske sondern schlicht und einfach der
Aliasname der Teilmaske.
Dieser wurde nämlich verwendet um die Teilmaske an die Maske zu koppeln und wenn man einen Alias Namen verwendet hat und diesen so schrieb "SFRMMaske | SFRMForm" dann verwendet der Notes Client zum Einbinden der Subform unglücklicherweise " SFRMForm".  Und das jeweils immer zu suchen dauert dann ein wenig länger.
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Basti* am 31.07.12 - 08:50:30
Prima, vielen Dank für die Infos! :)
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: pram am 31.07.12 - 09:05:42
Du hast nicht ganz unrecht, je mehr Libs du verwendest und je größer die "use"-Tiefe ist (Lib A used Lib B used Lib C usw...), um so langsamer wird es. Insbesondere wenn die Teilmasken die gleichen Libraries nochmal usen. Dies tritt aber wirklich erst bei komplexen Libs auf, wo > 10 Libraries beteiligt sind. Behelfen kann man sich dann mit dynamic class loading:
http://www.redbooks.ibm.com/redbooks.nsf/0/bb2af5af66e01de9852567d3006a876a?OpenDocument

Zitat
Zur Zeit hätte ich ca. 50 eigene kleine Funktionen. Die sind alle in einer LIB. Aber in dem Durcheinander find ich irgendwann nichts wieder.

Da sehe ich kein Problem :)

Gruß
Roland


Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Glombi am 03.08.12 - 09:47:55
Das mit den Script libraries die das Ganze langsam machen ist vermutlich ein Missverständnis, das aus einem echten Problem zumindest der Clients bis Version 7 her rührt. Wenn man nämlich Teilmasken verwendet hat um Script Libraries einzubinden, dann gab (unter Umständen gibt es das auch in den 8er Versionen immer noch) es da ein Problem, das mit den Alias Namen der Teilmasken zu tun hatte.
Die Einbindung solcher Masken führte nämlich dazu, das mit einer höheren Anzahl von eingebundenen Teilmasken die Öffnungszeit der Form an und für sich in den Keller ging.
Die Lösungsversuche für das Thema sind Legion und reichen von einfach ein 1=1 im Initialize der Maske einfügen bis hin zu "Füge eine Dummy Script Library in die Teilmaske ein".

Das Problem war hier aber nicht der Code in der Teilmaske sondern schlicht und einfach der
Aliasname der Teilmaske.
Dieser wurde nämlich verwendet um die Teilmaske an die Maske zu koppeln und wenn man einen Alias Namen verwendet hat und diesen so schrieb "SFRMMaske | SFRMForm" dann verwendet der Notes Client zum Einbinden der Subform unglücklicherweise " SFRMForm".  Und das jeweils immer zu suchen dauert dann ein wenig länger.
In einer meiner Anwendung war es auch grottenlangsam, wenn ich viele Teilmasken eingebunden hatte und diese hatten keinen Alias. Ein einfachtes 1=1 (oder dergleichen) im Code hat denn wahre Wunder bewirkt.

Andreas
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: pram am 03.08.12 - 17:46:58
Zitat
Das mit den Script libraries die das Ganze langsam machen ist vermutlich ein Missverständnis, das aus einem echten Problem zumindest der Clients bis Version 7 her rührt. Wenn man nämlich Teilmasken verwendet hat um Script Libraries einzubinden, dann gab (unter Umständen gibt es das auch in den 8er Versionen immer noch) es da ein Problem, das mit den Alias Namen der Teilmasken zu tun hatte.

Hierzu hab ich noch eine Anmerkung: Man sollte Teilmasken nicht in der Designer-Ansicht umbenennen sondern öffnen und dann umbenennen.
Beim Umbenenen in der Ansicht wird scheinbar nur das $TITLE-Feld geändert. Dies sieht man deutlich im Objektbaum. Da steht dann
Code
(Globals)AlterName
NeuerName (Subform)
...
+ QueryOpen
+ QuerySave
...
[code]
Das hat dann merkwürdige Effekte, welche von "langsam" bis "unerkkärliche Fehlermeldungen" reichen.

Gruß
Roland
[/code]
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: ata am 10.08.12 - 10:41:55
... ich versuche Inline-Code - also Code im Button - nach Möglichkeit sogar zu meiden, da ich Funktionalität und Design trennen möchte. Nur so lassen sich dann auch Code-Redundanzen vermeiden - insofern man seinen Code modular aufbaut.

Zeit-Verzögerungen können im Load vorkommen, wenn die Lib's zu groß sind. Das angesprochene Nachladen wäre dann die angesagte Technologie.

Ansonsten kann man die Kette der geladenen Lib's insofern optimieren, dass man die Lib's sinnvoll miteinander verkettet => Frontend => Backend => DB-Spezifisches => Globale Funktionen => Konstanten - Fehlerhandling

Toni
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Basti* am 14.08.12 - 09:32:38
Oh, vielen Dank für die vielen Hinweise! Große Klasse :)

Gleich noch eine Frage:
[...]
In einer meiner Anwendung war es auch grottenlangsam, wenn ich viele Teilmasken eingebunden hatte und diese hatten keinen Alias. Ein einfachtes 1=1 (oder dergleichen) im Code hat denn wahre Wunder bewirkt.

Ein Alias kenn ich - vom Prinzip. Aber wie wird der in Notes definiert? Und wann braucht man Aliase? Und was hat es mit dem 1=1 auf sich? In welches Codefragment hau ich das rein? Ich vermute mal in der Teilmaske selbst. Und dann? Bei Sub Initialize?

Grüße
Basti
Titel: Re: Eigene Script-Libs - nutzen oder lieber nicht?
Beitrag von: Peter Klett am 14.08.12 - 09:41:11
Ja, ins Sub Initialize. M.E. reicht auch ein Kommentar, wichtig ist, dass ein Scriptevent geändert wird, sodass beim Speichern der Teilmaske das Script übersetzt wird. Ohne übersetztes Script erfolgt die Übersetzung zur Laufzeit, was auch noch andere Effekte haben kann (wenn z.B. in der Maske und der Teilmaske gleiche Variablen global definiert sind, stoßen die zusammen, obwohl sie eigentlich im Gestaltungselement gekapselt sein müssten).