Published Sep 3, 2019

Episode 10: Remoting Pt. 2

This episode dives deep into remoting infrastructures, exploring lifecycle management of server and client instances, dynamic interface and proxy generation, and advanced asynchronous communication patterns with insights into middleware challenges, offering a comprehensive look at enhancing performance and reliability in distributed systems.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Dynamic Interfaces

    Dynamic interface generation plays a crucial role in facilitating seamless remote interactions by describing interfaces in a way that both application programmers and middleware can understand. explains that this involves detailing the interfaces, operations, attributes, and exceptions, which allows code generators to create client proxies and invokers automatically. This process is particularly efficient in dynamic languages like Java, where client proxies can be built at runtime using reflection and dynamic proxy APIs 1.

    The reflection mechanisms of mainstream languages have become so fast that using reflection is not a big performance problem anymore.

    ---

    This advancement has made dynamic proxies and invokers feasible in enterprise development, bridging the gap between static and dynamic implementations through on-the-fly bytecode generation 1.

       

    Client Proxy

    The client proxy mechanism simplifies remote communication by hiding the complexities from the application. describes the client proxy as implementing the same interface as the remote object, managing serialization, dispatching, and network communication. This proxy pattern, derived from the GoF patterns book, ensures that the client application perceives remote method calls as local, with the proxy handling the invocation transport to the server 2.

    The client proxy is what the client application sees from the communication middleware.

    ---

    On the server side, an invoker component interprets the request and dispatches it to the remote object, maintaining the illusion of local execution for the client 2.

Related Episodes