I have a client application which will be deployed on multitude of client PC's. The client will communicate with the server at certain intervals. Server will also communicate with the clients randomly when a new update is available. I was contemplating on wcf self-hosted services, as my client app is going to deployed on systems with variety of configuration. I am not finding WCF sel-hosted service as a promising option. I have following questions/doubts
1) What is the most accepted way of client<->server communication?
2) How do the server know about clients changing ip address?