We are implementing client-server application and we are going to pass some data tables (2D sets of values) from the server to the client. So these tables will be displayed in the clients' GUI and updated from time to time. Client is on C#, the server - on C++.

Could you please recommend a C++ and/or C# library which would simplify implementation of this?

Data are simple - strings, integers, doubles, ... Data volumes are not big so the performance and traffic are not critical, but it's desirable not to have big overhead. Partial updates should be supported since mostly only separated rows will be changed, maybe quite often in some tables (several times per second). Rows sometimes will be added, maybe sometimes - deleted.

Now we are using SuperEasyJSON for passing small data structures over the network, but there is a chance that we'll replace it with something faster.

I've found Coherence*Extend and SignalR libraries. Is this something worth looking at?

  • Transporting tables, partial updates... Sounds like a job for SQL. – Flimzy Jun 18 '15 at 15:12
  • Yep. To some extent you are right - in some cases we will simply copy data from SQL tables. Other data will be only generated without putting them into DB – Mikhail M Jun 18 '15 at 15:17
  • If you're already using an SQL database from both endpoints, then putting the data to sync into SQL is probably the easiest way forward. Do you have a specific need that SQL doesn't meet? – Flimzy Jun 18 '15 at 15:24
  • We are going to use SQL from server only. So we wouldn't need to store SQL passwords in many places. Moreover notifying of clients and sending them updated data just after getting from socket data that caused these updates looks more effective, isn't it? – Mikhail M Jun 18 '15 at 15:32
  • Whether it's more effective or not can depend on a lot of things. Not wanting to distribute SQL credentials is a valid concern. But you'll have to distribute some form of credentials (assuming you'll have some type of access control). The "best" solution depends on enough factors to literally fill hundreds of books on the topic of data transport. The short answer is usually very close to "Whatever you can write fastest is the best, until you hit a performance benchmark." I don't have any idea what volume of data you're dealing with, or how many concurrent connections, etc... – Flimzy Jun 18 '15 at 15:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.