This page is intended to summarize basic architecture concepts for Firebug (and Firebug extensions) remote capabilities (such as remote debugging or remote HTTP monitoring).
The proxy object represents a connection between a panel (front end) and a module (back end).
The proxy has essentially two implementations:
- Local - direct API calls
- Remote - communication over TCP/IP protocol
- Panel (a view) should never use Module (a service) directly
- The communication should always be done through the current proxy
- Each Panel should have its own proxy that implements API of the remote module (service)
- There can be also proxy objects used by non-panel objects, e.g. the Profiler
Here is a more detailed diagram with local and remote proxies.
- Panel object at the top is referencing its proxy object
- The proxy implementation can be local or remote
- Local proxy uses direct API calls (in process) and asynchronous callbacks
- Remote proxy uses TCP/IP connection to communicate with the back-end using JSON packets
- The remote communication is based on RDP
- The server side implements Actor, which is responsible for communication with specific proxy
- The actor is finally consuming back-end Module (service) API