Help To Integrate Ice Into A Complicated Architecture
Can you please point me in the right direction for integrating ice into my complicated architecture please. I will describe it first and then state what I need.
I am writing a front end for a game engine to run in the browser. The back end sends pictures and sound to the front end browser, and then user sends key strokes and mouse movements through the browser to the backend, which are then processed.
Here is the basic architecture:
There is one game instance per running game, but only one back end server instance. Each game has an id which is known to the client, and is passed to the server to identify the game instance, for sending key and mouse commands.
It works the other way as well, the game instance knows it's ID which is back passed alongside picture frames and sound samples to ensure that they end up at the right front end client.
I am unfortunately bound to use the two tiered system, for reasons unrelated to Ice and I won't discuss them here.
Currently the transmission technology is SignalR, which works great for real time stuff like pictures and sound but I am sure you guys will agree is a horrible RPC framework.
This is where Ice comes in. I want to continue to use SignalR for realtime stuff like pictures, sound and keyboard but Ice for some of my RPC requirements.
Here are my requirements.
This is a .NET project written in C# and I followed your very good tutorial on getting started. The thing which is really tripping me up is the bidirectionality.
There are several choices I noticed such as Glacier2 router or manual configuration, can you please point me to one I should use?
I have the Ice-Demos from GitHub (https://github.com/zeroc-ice/ice-demos/tree/3.7/csharp/Glacier2/callback). Is that the best one to follow our should I consider another.
Please give me advice, as well, as to the best way to handle to the two hops. I was considering making a second Ice RPC call from the BackEndServer, is that wise?
Thank you for you help. This is a really complicated project and I left a lot out. If I am missing any vital information let me known.