Buffl

KE 3

MW
by Michael W.

3 Problem von RPC bei Parameterübergabe (und Lösungen)

  • calling and called procedures laufen auf verschiedenen Maschinen mit unterschiedlichen Adressräumen

  • parameter marshaling

    = Parameter in Nachricht packen

    • unmarshaling = wieder auspacken

  1. Problem: server sieht nur Bytes der Nachricht - muss vestehen, was die bedeuten

  • keine zusätzliche Information gegeben

    • und bei der wüsste man auch nicht, wie man die erkennen soll

  • maschinen nutzen little endian oder big endian

    • big endian ist aber meist genutzt

  • Lösung 1:

    •  Daten zu einem Netzwerk-unabhängigen Format übertragen

      • durch maschinen-abhängige Routinen

    • client und server sollten dann das Format erwarten

      • durch Programmier-Sprachen

  • call by value vs. call by reference ist wichtig

    • weil es entscheidet, welche Variablen geändert werden

      • bei call by value wird das ursprüngliche Objekt nicht geändert

  1. Problem: Umgang mit Referenzen

  • Lösung 2:

    • a) Pointer/ Referenzen verbieten

    • b) gesamte Datenstruktur kopieren

      • wenn es nur gelesen wird, braucht man nichts zurück kopieren

    • c) globale Referenzen verwenden

      • die für client und server gleichermaßen gelten

      • z.B. wenn client und server Zugriff aufs gleiche Dateisystem haben

        • dann nur Datei-handle übergeben

      • verteilte Objekte

        • muss man lokale und verteilte Objekte unterscheiden

        • keine Verteilungstransparenz mehr

        • schwieriger, verteilte Applikationen zu schreiben

      • neues Problem: bei Booelan, Integer

        • auch da muss immer RPC gemacht werden

  1. Problem: komplizierte (benutzerdefinierte) Datentypen als Parameter

  • Lösung 3:

    • auspacken vielleicht nicht nötig oder erwünscht


Author

Michael W.

Information

Last changed