Hello
I am making a proof of concept-application that maybe one day will be a source of income.
The data-flows dictates that have to be a client - server app, information is shared between clients and should be persisted.
I have experience of writing stand-alone apps, I have modelled the app and have written the client. The communication with the server is only a stub.
So now I have a protocol in form of an (C#) interface with method calls.
Four of the calls is for requesting information and two for pushing data to server.
The data is in classes that I would like to freeze-dry and revive on the other side.
In the future I would like to port the client to other OS'es so I wouldn't like to do something that I have to rewrite the server from cratch, if I can't avoid that.
I would also like to update the data in the client at undetermined intervals. Today I don't know how to do that.
My application is single-threaded, Windows Forms
My assumptions is that:
* I will use TCP/IP in some form below everything. I have to set up the channel, set IP adresses and stuff like that, I have an idea what I have to do.
* The front-end of the server will be multi-threaded to allow for more that one client to talk with the server at the same time. The syncronising will be internal to the server.
* Projected amount of data, maximum: Text 1000 * 1kbyte, 100 000 objects with 4 states. 20 000 updates/day. But that is way in the future.
May three biggest question is
1. Communication protocol. How do I map my method calls, the ones I have in the interface to something that I can transmit on a TCP/IP channel?
2. I need advice on a good pattern to serialize the reading and writing into the "data base", data base doesn't need to be a sql server.
3. Can I allow the server to send updates to the client without making it a multi-threaded app with one thread only listening to the socket?
I will happily update my question if more information is needed.
Thanks in advance.
Gorgen