pl: Remote Procedure Call, OOP

Per HTTP werden Methodename und Argumente übertragen. Welche Instanz welcher Klasse sollte die Methode serverseitig ausführen?

Bitte mal um Hinweise.

  1. Hallo,

    Per HTTP werden Methodename und Argumente übertragen.

    Ich nehme im Folgenden an, dass dies deine eigene Annahme ist. HTTP kennt ja grundsätzlich nichts, was "Methodenname" oder "Argument" bedeutet.

    Welche Instanz welcher Klasse sollte die Methode serverseitig ausführen?

    Das darfst du ganz alleine bestimmen. Es gibt allerdings ein paar Standards, die man hierzu heranziehen kann (SOAP z.B.).

    Welche Klasse:

    Dafür ist i.d.R. ein sogenannter Router verantwortlich, welcher den HTTP-Call auf die Klasse, die Methode und die zugehörigen Parameter abbildet. Den kannst du beliebig komplex (SOAP etwa) oder einfach (/klasse/methode?parameter1=ac&parameter2=bc => Klasse:methode('ac', 'bc')) machen.

    Schau dir mal etwa die Routing-Komponente des Symfony-Frameworks (PHP) oder das Kapitel zu den HTTP-Fundamentals von Symfony an: das Mapping von Request auf Action (Klasse+Methode+Parameter) wird z.B. durch Annotationen oder XML gemacht.

    Welche Instanz:

    Die grundsätzliche Frage, die immer zu klären ist: ist der Aufruf stateful oder stateless (nutzt du Sessions o.ä.?). Wenn du stateful agierst, willst du den Aufruf idR immer an dieselbe Bean (ein bestimmtes Objekt deiner Klasse) übergeben (worin dann der State ja eben gespeichert ist). Bist du stateless, kannst du die Reply-Instanz etwa aus einem Pool nehmen oder immer neu erzeugen.

    Viele Grüße, Matti

    1. Hi,

      Per HTTP werden Methodename und Argumente übertragen.

      Ich nehme im Folgenden an, dass dies deine eigene Annahme ist. HTTP kennt ja grundsätzlich nichts, was "Methodenname" oder "Argument" bedeutet.

      das stimmt nicht ganz: Zumindest die Request-Typen (z.B. GET, POST, HEAD usw.) werden in der HTTP-Spezifikation als Request Method bezeichnet. Ob Hotti das gemeint hat, ist allerdings nicht klar, weil er festgelegte Begriffe gern mal anders verwendet.
      Der Begriff Argument ist dagegen nicht spezifiziert, aber man könnte sowohl Request URL, als auch weitere optionale Header sowie den Request Body (falls vorhanden) als Argumente bezeichnen.

      So long,
       Martin

    2. Hallo,

      Per HTTP werden Methodename und Argumente übertragen. Ich nehme im Folgenden an, dass dies deine eigene Annahme ist.

      Nein das ist XML RPC Standard.

      Dank Dir für Deine Ausführungen. Ich wollt mir nur ein paar Notizen machen.