ROZeroConf is a new technology introduced to RemObjects SDK in the "Summer 2009" release. Based on open source technologies such as ZeroConf and DNS-SD, ROZeroConf makes it easy for clients to discover servers on the network, without needing a dedicated service discovery infrastructure or manual configuration on either client or server side (hence the name ZeroConf, for Zero Configuration needed).
The ROZeroConf infrastructure is deeply integrated into RemObjects SDK's channel system, allowing developers to leverage the functionality with just a few lines of code. At runtime, ZeroConf works transparently behind the scenes, giving users client applications that just automatically find the servers they need to talk to (or provide a list of available servers to choose from, where applicable). End users no longer need to know about server URLs, host names or port numbers.
For example, a small business server application written with RemObjects SDK could simply be installed and started on a server on the local LAN, and would automatically advertise its availability using ROZeroConf. When users start their client application for the first time, they will detect the available server running on the network, and connect to it, seamlessly.
ROZeroConf will seamlessly adapt to changing network infrastructure, as well. If the server application gets moved to a different host or its host gets a new IP address, clients will adjust and automatically find the server at its new location.
Another problem solved by ROZeroConf is the limited availability of network ports. In the past, server applications had to be tied to a specific port number, and client applications had to know what port to connect to (in addition to the server's host address), in order to communicate with the server. This caused problems when more than one server application required the same port number, and careful planning was needed on the side of the network admin to avoid conflicts. With ROZeroConf, servers can now open on any random available port number, and because clients discover them dynamically, rather than having address and port hardcoded or otherwise specified in a config file, they can still be reached transparently.
ROZeroConf can also be used with the new "Olympia" client state server that was also introduced in the "Summer 2009" releases, to achieve load-balancing and scalability.
By deploying multiple instances of your server applications on different hosts, and one instance of Olympia to manage shared state, clients can now (transparently and in the background) choose any random server to connect to, using ROZeroConf to discover available servers and possibly even their load. The servers, in turn can rely on ROZeroConf to locate the shared Olympia instance, running elsewhere on the network, to manage session data. So no matter which server instance a client connects to, said server will have access to the client's session data.
ROZeroConf is build on top of the two open DNS-SD (DNS Service Discovery) and mDNS (multicast DNS) standards defined in the Internet RFCs. It works by each system running ROZeroConf applications acting as its own mDNS server, and thus becoming discoverable through standard mDNS requests sent by clients.
Because each computer handles discovery on peer-to-peer basis, ROZeroConf works without a central "known" discovery infrastructure, which would of course defeat the purpose of "zero configuration"
In fact, ROZeroConf will even work on networks without properly assigned (via DHCP or manually) IP addresses: as long as a TCP/IP network is established, even using Link-Local addresses, clients can discover servers available on that network.
And while ROZeroConf unfolds its true power and simplicity when used in a LAN environment, the system also allows the use of dedicated DNS servers to be set up and used to discover available servers on a given domain, Internet wide (with just "a little" configuration).
Because mDNS runs as a global per-computer service, ROZeroConf can leverage existing mDNS installs such as Apple's Bonjour (on Windows and Mac) or Avahi (on Linux) when available, or bring its own implementation.
Read more about ZeroConf in RemObjects SDK on our Wiki
The RemObjects Wiki is the central place for tech resources on all RemObjects products, including RemObjects SDK. In the wiki you will find regularly updated articles, glossaries and class documentation, and other useful information.