[Allegro] v23 getestet
Thomas Berger
ThB at Gymel.com
Do Jun 21 11:21:24 CEST 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Lieber Herr Eversberg, liebe Liste,
ich vergass, den Faden fuer ExFlexe fortzuspinnen:
> Im Janas-Fall wuerde a99 also ein Paar von Pipes erzeugen
> (repraesentiert durch zwei mal zwei Handles), eine Pipe zur
> Kommunikation A->J, die andere fuer J->A. Der Janas-Prozess
> bekommt bei der Erzeugung die zwei geoeffneten Handles fuer
> seine Seite mitgegeben (Waere Janas nur ein Thread, waere das
> sehr simpel, es geht aber auch fuer beliebige Prozesse).
>
> Eine schoene Diskussion der Detailprobeleme habe ich unter
> http://www.3rd-evolution.de/tkrammer/docs/apipes.html
> ergooglet.
>
> Sowohl a99 als auch Janas beruecksichtigen nun nicht mehr das
> Globale Windows-Event, sondern die Tatsache, dass an ihrem
> jeweiligen Lese-Ende etwas anliegt, um ihre entsprechenden
> Aktionen (Neuaufbau einer HTML-Seite bzw. Ablegen des Formular-
> Inhalts) zu starten. Weil tendenziell viele Daten zusammenkommen,
> ist dies der Zeitpunkt, wo jeder Prozess fuer sich eine wirklich
> temporaere Datei erzeugen kann (das Betriebssystem kennt entsprechende
> Funktionen, einen Dateinamen auszuwuerfeln, die Datei zu erzeugen
> und zu oeffnen...), in die die Daten zunaechst einmal versenkt
> werden, um sie dann in Ruhe wieder auszulesen.
ExFlexe sind einfacher gelagert, die Kommunikation erfolgt nur
unidirektional, d.h. per flex.exe wird eine Nachricht uebermittelt.
Allerdings koennen tendenziell mehrere exflexe gleichzeitig
aufprallen, insofern wird man hier darauf achten muessen, dass
Atomizitaet beim Schreiben gewaehrleistet bleibt, d.h. die
Nutzdaten koennen wohl nicht uebertragen werden, nur irgendeine
Form von Nachrichten (2KB gilt i.A. als sauber, sofern sie auf
einen Rutsch geschrieben werden).
Wenn ein a99-Prozess auf eine bestimmte Sorte exflex reagieren will,
muss es eine named pipe erzeugen und lauschen. Existiert diese
bereits, gibt es eine Fehlermeldung.
flex.exe bekommt eine Datei und die Kennung fuer die "bestimmte Sorte"
ExFlex mitgeteilt, und schreibt die Daten in die Pipe. Existiert
die Named Pipe nicht, gibt es eine Fehlermeldung. [Moeglicherweise
schlauer: Die Message fuer die Pipe in der Kommandozeile angeben,
die Datei als Service in eine echte Temporaerdatei wie oben beschrieben
ueberfuehren, deren Namen an a99 uebermitteln: Das sollte dann
ziemlich sauber sein].
a99 lauscht auf allen named pipes, die es verwaltet, und erhaelt
darueber Nachrichten, die den Namen der Temporaerdatei und einen
Flex-Namen enthalten, die restliche Struktur ist dann Verabredungs-
sache fuer den jeweiligen Flex.
"bestimmte Sorte" ist ziemlich weich und durch Benennungen geregelt:
Ich kann "ZACK-Download" nutzen, dann darf auf meinem Rechner maximal
ein a99 aktiv sein, das auf exflexe "ZACK-Download" regieren kann.
Oder ich kann "Normdaten-Download-<dbname>" verabreden, dann kann
fuer *jede* Datenbank (genauer: alle Datenbanken gleichen Namens,
auch wenn sie verschieden sind :-( jeweils ein a99 zustaendig sein,
dafuer muss flex.exe beim Anstossen aber den "dbname" bereits
mitgeteilt bekommen, damit es in die richtige Pipe schreibt.
ExFlexe waeren dann also nicht mehr "global" per .ini-Datei an- bzw.
abschaltbar (bzw. Standard ist ja, dass ExFlexe stets erlaubt sind,
und man hofft, dass der angeforderte Flex im Datenverzeichnis wohnt
und nur ein a99 offen ist), sondern fuer jede einzelne
ExFlex-Funktionalitaet, die man nutzen moechte, muss man sich ein
a99-Fenster aussuchen, fuer die man sie "aktiviert" (flexgesteuert,
vgl. "alfa aktivieren" etc.). Auch wenn das hier nur wie eine technische
Nebenwirkung des skizzierten Mechanismus wirkt, halte ich dies
fuer unabhaengig wuenschenswert.
Seitens der Entwicklungsabteilung muesste eine Namenskonvention
fuer die Pipes definiert werden (Namespaces und Struktur), damit
nicht jede "bestimmte Sorte" exflex oder exflex-cat benannt wird...
viele Gruesse
Thomas Berger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3-nr1 (Windows XP)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGekMUhKFJT0F1FsoRAnYKAJsHuIKLAi/BiW/CbP6YdSW2l9vVaACfTvPp
V0tBUkLGOdvH2kk4K9pZPsM=
=NdiG
-----END PGP SIGNATURE-----
Mehr Informationen über die Mailingliste Allegro