I’m using ServiceStack techniques for quite a while now. A few of them are applied in Embedded Linux devices running Mono. For an overhaul of EmbeddedDevice <> Server communications in a current project, i’m exited to see if there are any problems that may occur if i Create a Server - Client situation, where Client devices are connected by ServerSentEvents.
In my opinion it would we easy to:
Have a clear overview of currently connected devices
Interact with the client, where traffic is initiated (pushed) from the Server side
Have a very scalable server, since it’s basically nothing more then a Servicestack Api anymore (using Redis will open a world of easy possibilities for load balancing etc)
To be honest; i’m seeing tons of possibilities, in the ‘messagebus’ alike approach ServerSentEvents has introduced.
Yes, you can use ServerEvents to make a client-server communication between clients running on mono and server which is using ServiceStack. You did not say on which OS are you going to host server: Linux or Windows. If you decide to use Linux, you I’d recommend to use .NET Core instead of mono because it’s well supported from Microsoft for server-oriented applications instead of mono (where team is primary concentrating on supporting mobile platforms and web-server related bugs could be not fixed for years). Also .NET Core is much faster than mono (after latest performance improvements for json-based scenario we made almost 10x performance gain on .NET Core compared to mono). At this moment .NET Core is not available for ARM (Microsoft expects that the ARM support will come in the first quarter of 2017), but for clients you can use mono for now and when .NET Core for ARM will be available softly transfer to .NET Core
I’m very interested in .NET Core as well, indeed; curious to see if there is a smooth transition possible from what we have now running on Mono.
As for the server; i’m thinking i’ll stick with Windows for now. I would want to host the application in a web-service, and am not sure how webserver’s will perform on Linux. (read; i don’t have any experience in that area just yet)