Inter-process communications in a desktop client-server app with local server?
-
I'm developing a C# desktop app which runs on Windows, Mac and Linux (under .NET or Mono). The plan is for the program to be divided into two parts in separate processes: The front end GUI and the back end storage server. The reason for dividing roles in this manner is to facilitate access to the data store by indexing services. The data store can be indexed by the operating system regardless of whether or not the front end GUI is running. So, my question is: What technique do you think I should use for inter-process communications between the front end and the back end? HTTP-based REST is feasible but how fast is it in practice? I need something fast and cross-platform compatible. Any suggestions?
-
I'm developing a C# desktop app which runs on Windows, Mac and Linux (under .NET or Mono). The plan is for the program to be divided into two parts in separate processes: The front end GUI and the back end storage server. The reason for dividing roles in this manner is to facilitate access to the data store by indexing services. The data store can be indexed by the operating system regardless of whether or not the front end GUI is running. So, my question is: What technique do you think I should use for inter-process communications between the front end and the back end? HTTP-based REST is feasible but how fast is it in practice? I need something fast and cross-platform compatible. Any suggestions?
markrlondon wrote:
The front end GUI ...I need something fast
Exactly how fast are the humans that use that? For a desktop app that has, for example, 100,000 simultaneous users to the same back end, I suspect you are going to run into other problems.
markrlondon wrote:
HTTP-based REST is feasible but how fast is it in practice
Versus what? Everything is basically IP these days. And unless there is something really wrong with your network even establishing a connection takes too little time for a human to care. So unless you have some actual real (and realistic) business metrics that are very large then use whatever you already know. Because doing that will mean less delivery time of the product and that is much more likely to be what the business cares about.
-
I'm developing a C# desktop app which runs on Windows, Mac and Linux (under .NET or Mono). The plan is for the program to be divided into two parts in separate processes: The front end GUI and the back end storage server. The reason for dividing roles in this manner is to facilitate access to the data store by indexing services. The data store can be indexed by the operating system regardless of whether or not the front end GUI is running. So, my question is: What technique do you think I should use for inter-process communications between the front end and the back end? HTTP-based REST is feasible but how fast is it in practice? I need something fast and cross-platform compatible. Any suggestions?
.NET and Mono are not the same beast; you'll find that there are subtle differences in implementation. Fast inter-proces communication can be achieved by writing to shared memory.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^][](X-Clacks-Overhead: GNU Terry Pratchett)
-
markrlondon wrote:
The front end GUI ...I need something fast
Exactly how fast are the humans that use that? For a desktop app that has, for example, 100,000 simultaneous users to the same back end, I suspect you are going to run into other problems.
markrlondon wrote:
HTTP-based REST is feasible but how fast is it in practice
Versus what? Everything is basically IP these days. And unless there is something really wrong with your network even establishing a connection takes too little time for a human to care. So unless you have some actual real (and realistic) business metrics that are very large then use whatever you already know. Because doing that will mean less delivery time of the product and that is much more likely to be what the business cares about.
Thanks for the reply. Just catching up here...
-
.NET and Mono are not the same beast; you'll find that there are subtle differences in implementation. Fast inter-proces communication can be achieved by writing to shared memory.
Bastard Programmer from Hell :suss: If you can't read my code, try converting it here[^][](X-Clacks-Overhead: GNU Terry Pratchett)
Thanks. Catching up.