ROZeroConfHub advice needed

We have a chat-based .NET desktop server application which is working well. Currently there is one server on the local (wireless) network and multiple .NET CF clients connect to it and exchange data (‘chat messages’) with each other.

We now want to allow more than one instance of our server to be running on the same subnet, each with its own set of connected clients, and to enable all the servers to communicate with each other. The aim is to enable the use case where a client sends a message to one server (which will already echo the message to all of its connected clients), but we now want that server to automatically detect all other server instances and send the message on to them. They will then forward the message to all of their connected clients.

In other words, we want to add some peer-to-peer behaviour to our server, along with service discovery. The server instances will be running on occasionally-connected mobile PCs which may come and go from the wireless network.

I have not used ROZeroConf before but from what I have read it seems it will meet our needs. I would prefer to make our server app as self-contained as possible without requiring much customization of the mobile platforms, hence I am interested in using ROZeroConfHub rather than requiring Bonjour to be installed on each platform. But the documentation about ROZCHub is rather sparse. Indeed, the wiki page for ZC doesn’t even mention it - this page gives you the impression that Bonjour is the only option. It is mentioned in passing here but that’s all.

So my questions are

  • Is there any documentation or tutorial that covers ROZCHub?
  • Am I correct in thinking that the ROZCHub exe needs to be bundled with every instance of our server?
  • Is this done simply by adding it to the VS solution as a content item and deploying it to the same folder as our server, or is there more to it than that?
  • Our server code is actually compiled as a class library, rather than an exe. Any issues about using ROZCHub in this case?
  • Which UDP ports does ROZCHub use? We may need to ensure that these ports are not blocked on our mobile platforms.
  • Are there any special considerations when using RO in a p2p scenario, instead of the usual client/server design?

Hello.

ROZeroConfHub tool is deprecated, it is in RO SDK for backward compatibility and we don’t recommend use it in new projects.

Thanks.

OK, Bonjour it is, then.

  • Will Bonjour need to be installed on each PC that hosts an instance of our server app?
  • Could a .NET CF (Windows Mobile) client use service discovery to automatically detect our server(s) on the wireless network?
  • I’d appreciate your thoughts on using multiple servers in the p2p scenario I described. Anything I need to be wary of?

Thanks in advance.

Hello Mike.

Will Bonjour need to be installed on each PC that hosts an instance of our server app?

Yes, Bonjour should be installed on every machine where the server is placed.

Could a .NET CF (Windows Mobile) client use service discovery to automatically detect our server(s) on the wireless network?

As RemObjects.SDK.ZeroConf assembly itself uses import of native dll’s it can be said for sure that it will work on CF platform. It hasn’t been tested.

I’d appreciate your thoughts on using multiple servers in the p2p scenario I described. Anything I need to be wary of?

In your case every server should be the client as well. So, you need to consider that every server should also contain ZeroConf client functionality.

Thanks

As RemObjects.SDK.ZeroConf assembly itself uses import of native dll’s it can be said for sure that it will work on CF platform.

I’m confused. I would have thought that if native dlls are required (by the desktop assembly) then the same code would almost certainly not work on Win Mobile. Can you clarify?

Hello

I’m confused. I would have thought that if native dlls are required (by the desktop assembly) then the same code would almost certainly not work on Win Mobile. Can you clarify?

ZeroConf itself uses Bonjour native dlls. As Bonjour doesn’t provide corresponding dlls for CF so it will not possible to use ZeroConf on CF platform.

Thanks

In that case you will just need Bonjour installed on all server nodes.