4D v14Serverprozeduren |
||
|
4D v14
Serverprozeduren
Serverprozeduren
Der Ausdruck Serverprozedur stammt aus der Server-Welt, die auf SQL basiert. Sendet eine Arbeitsstation eine Anfrage an einen SQL Server, sendet sie die Anfrage als Volltext in SQL Sprache an diesen Server. Die Anfrage wird vor der Ausführung auf dem SQL Server analysiert und interpretiert. Ist der Quellcode umfangreich und wird die Anfrage während einer Sitzung mehrere Male gesendet, beansprucht das natürlich viel Zeit für die Übertragung über das Netzwerk und die stets neue Analyse und Interpretation. Deshalb sollte ein Weg gefunden werden, diese Anfrage zuerst über das Netzwerk zu senden, zu analysieren und zu interpretieren und nur noch auszuführen, wenn sie von der Arbeitsstation gesendet wird. Die Lösung war, den Quellcode der Anfrage (mit anderen Worten eine Prozedur) auf der Server-Seite zu lassen; die Arbeitsstation sendet dann als Anfrage nur den Namen dieser Prozedur. Da diese Prozedur auf dem Server gespeichert wird, nennen wir solche Prozeduren "Serverprozeduren". Beachten Sie, dass eine Serverprozedur, die auf SQL basiert, Parameter von einer Arbeitsstation empfangen kann, die damit verbundenen Tasks synchron oder asynchron ausführt und evtl. ein Ergebnis an die Arbeitsstation zurückgibt. Löst eine Arbeitsstation die Ausführung einer Serverprozedur aus, überlässt die Station die Ausführung von Code bis zu einem gewissen Maß dem Server-Rechner. Selbst wenn wir den üblichen Namen benutzen, bieten Serverprozeduren unter 4D Server weit mehr als reguläre Serverprozeduren. Mit 4D im lokalen Modus können Sie beim Verwenden einer Routine, z.B. New process einen Benutzerprozess starten, in dem eine Methode abläuft. Diese Methode heißt Prozessmethode. Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache im Abschnitt Projektmethoden. Dasselbe können Sie mit 4D Server auf einer Arbeitsstation durchführen. Sie können zusätzlich mit der Funktion Execute on server auf dem Server-Rechner einen Benutzerprozess starten, in dem eine Methode abläuft. Über den Befehl EXECUTE ON CLIENT können Sie eine Methode in einem anderen Prozess auf einem anderen Client laufen lassen. In beiden Fällen heißt die Methode Serverprozedur. Wichtig: Der Hauptunterschied zwischen einer Serverprozedur, die auf SQL-basiert und einer Serverprozedur unter 4D Server ist, dass im ersten Fall eine SQL Prozedur, im zweiten Fall ein eigenständiger 4D Prozess abläuft. Eine Serverprozedur hat wie ein normaler Prozess eine eigene Umgebung:
Eine Serverprozedur kann in der Benutzeroberfläche Fenster öffnen und Daten anzeigen (z.B. DISPLAY RECORD). Sie kann jedoch im Gegensatz zu Benutzerprozessen auf der Arbeitsstation keine Dateneingabe auslösen (z.B. ADD RECORD), da es keinen Eingabe-Kernel auf dem Server-Rechner gibt. Sie können so viele Serverprozeduren starten wie es Hardware und Speicher des Systems zulassen. Im Grunde genommen antwortet der 4D Server-Rechner nicht nur auf Anfragen der Arbeitsstation und von Web Browsern, er führt auch Prozesse aus, die mit anderen Prozessen interagieren, die auf dem Server-Rechner und remote 4D Rechnern laufen. Ebenso wie 4D eine Multi-Tasking Umgebung für Benutzerprozesse auf einer Arbeitsstation bietet, bietet 4D Server eine Multi-Tasking Umgebung für Serverprozeduren. 4D Server verwaltet zum Beispiel eine Tabelle mit Interprozessvariablen, die Serverprozeduren für die Interprozesskommunikation benutzen können. Hinweis: Die Methodeneigenschaft "Auf Server ausführen" lässt sich für eine Methode anwenden, die in einem Prozess auf dem Server ausgeführt wird. Die Methode verwendet dann jedoch einen Zwillingsprozess des Client-Prozesses, d.h. sie kann die Umgebung dieses Client Prozesses nutzen. Es handelt sich dann nicht um eine 4D Serverprozedur. Weitere Informationen dazu finden Sie im Abschnitt Attribut Auf Server ausführen. Fast alles, was im Handbuch 4D Programmiersprache über die Funktionsweise von Prozessen und Befehlen beschrieben wird, gilt auch für Serverprozeduren. Davon ausgenommen ist die Dateneingabe. Eine Serverprozedur kann Datensätze hinzufügen, suchen, sortieren, aktualisieren und löschen. Sie kann Mengen und Auswahlen verwenden, auf Dokumente auf der Festplatte zugreifen, mit BLOBs arbeiten, Datensätze drucken, u.v.m. Stellen Sie sich einfach vor, dass etwas nicht auf dem lokalen 4D Rechner, sondern auf dem Server-Rechner bzw. auf einer oder mehreren Arbeitsstationen ausgeführt wird. Ein offensichtlicher Vorteil ist, dass eine Serverprozedur lokal auf dem Server-Rechner ausgeführt wird, also dort, wo auch die Datenbank-Engine liegt. So ist z.B. der Befehl APPLY TO SELECTION innerhalb einer Serverprozedur effizienter als über das Netzwerk. Das Beispiel im Abschnitt Import mit Serverprozeduren (Beispiel) zeigt, wie stark sich die Leistung über clever eingesetzte Serverprozeduren optimieren lässt. Serverprozeduren, die auf einer oder mehreren Arbeitsstationen ausgeführt werden, ermöglichen, Aufgaben und Kommunikation auf mehrere Client Rechner zu verteilen. Ein Beispiel dazu finden Sie im Handbuch 4D Programmiersprache unter dem Befehl REGISTER CLIENT. Der wichtigste Vorteil von Serverprozeduren sind jedoch die zusätzlichen Möglichkeiten für 4D Server. Mit Serverprozeduren können Sie Ihre eigenen 4D Server Dienste einrichten. Ihrer Phantasie sind keine Grenzen gesetzt. Das Beispiel im Abschnitt Service mit Serverprozeduren (Beispiel) zeigt eine Serverprozedur, die Clients mit Information über 4D Server bzw. den Server-Rechner ausstattet. Sie können z.B. die Volumes des Server-Rechners auflisten. Dieses Beispiel lässt sich leicht erweitern, so dass ein Client auch Information über ein Verzeichnis oder ein Dokument erhält. Generell sollten Serverprozeduren, die auf dem Server ausgeführt werden, nicht mit Oberflächenelementen arbeiten, wie z.B. Menüs, Fenster, Formulare, etc. Die Oberfläche wird ja auch nicht auf der Server-Seite verwaltet. Befehle, die Dialogfenster auf dem Server anzeigen, sowie Dialogfenster zur Dateneingabe, sollten vermieden werden. Es folgt die Liste der Befehle, die Sie NICHT in Serverprozeduren verwenden sollten, die auf dem Server ausgeführt werden. Sie ist in drei Gruppen gegliedert:
Enthält eine Serverprozedur einen dieser Befehle, erscheint eine Meldung, dass der Befehl nicht auf 4D Server ausgeführt werden kann. Der Fehler #67 wird zurückgegeben. Sie können ihn mit dem Befehl ON ERR CALL verwalten. ACCUMULATE
Wir raten dringend, die folgenden Befehle nicht in Serverprozeduren zu verwenden, da sie für Methoden, die auf dem Server ausgeführt werden, ungeeignet sind. Sie können den Server blockieren und Fehler erzeugen und werden in jedem Fall nicht korrekt ausgeführt. Es erscheint keine explizite Fehlermeldung. ACCEPT (1) Nur wenn der erste Parameter ein leerer String ist.
Diese Befehle haben keine Auswirkung, wenn sie in Serverprozeduren auf dem Server ausgeführt werden. Es erscheint keine explizite Fehlermeldung.
Sie können sie auf dem 4D Server- oder einem Client-Rechner ausführen. Beachten Sie, dass nur die Client-Rechner in der Liste erscheinen, welche Sie zuvor registriert haben. Weitere Informationen dazu finden Sie im Abschnitt Serverprozeduren auf Client-Rechnern und unter dem Befehl REGISTER CLIENT.
Hinweis: Sie können von remote 4D aus keine Befehle zur Prozessverwaltung für Serverprozeduren auf dem Server verwenden. Das sind die Befehle DELAY PROCESS, PAUSE PROCESS und RESUME PROCESS.
Serverprozeduren können miteinander kommunizieren durch:
Weitere Informationen dazu finden Sie im Handbuch 4D Programmiersprache in der Beschreibung zu den Befehlen. Nochmal zur Erinnerung: Die 4D Befehle arbeiten im Bereich des Server-Rechners genauso wie im Bereich eines Client-Rechners. Hinweis: Die Befehle CALL PROCESS und Outside call haben auf dem Server-Rechner keine Bedeutung, da Serverprozeduren keine Benutzeroberfläche mit Dateneingabe haben. Es gibt jedoch ein anderes wichtiges Feature: Benutzerprozesse, die auf dem Client-Rechner laufen, können mit den Befehlen GET PROCESS VARIABLE, SET PROCESS VARIABLE und VARIABLE TO VARIABLE Prozessvariablen (*) von einer Serverprozedur lesen und schreiben. (*) ebenso wie die Interprozessvariable auf dem Server-Rechner. Wichtig: Die Prozesskommunikation zwischen mehreren Rechnern über die Befehle GET PROCESS VARIABLE, SET PROCESS VARIABLE und VARIABLE TO VARIABLE ist nur vom Client zum Server möglich. Es ist immer ein Client-Prozess, der die Variablen einer Serverprozedur liest oder schreibt. |
EIGENSCHAFTEN
Produkt: 4D SIEHE AUCH
Import mit Serverprozeduren (Beispiel) ARTIKELVERWENDUNG
4D Server Handbuch ( 4D v13) Geerbt von : Serverprozeduren ( 4D Server v12) |