I am architecting a solution that will use WCF to make all the computers in my organization periodically "call home". Let's suppose for the sake of discussion that each computer in my organization has a weather sensor connected to it. The purpose of this application is that each computer should contact a central server to report what the weather is in its location. The data to be transmitted is encoded as a string.
Suppose for the sake of discussion that I have a Windows Service which invokes a method SendWeatherReport
once a day. The signature of this function is:
void SendWeatherReport(string report);
Suppose that I have set up a WCF method with the following interface:
[ServiceContract]
public interface IWeatherReportReceiver
{
[OperationContract]
void GetReport(string report);
}
I have the following requirements:
1) My weather report information is proprietary and confidential; it must be encrypted for security purposes.
2) The weather report information will be transmitted over the internet. The computer running the WCF service to receive the report will be at example.com
.
3) The weather report must get past some over-zealously configured firewalls on its way to the server.
Now that I've explained my requirements, please explain to me how I can set up my endpoint configuration to meet these requirements.
To satisfy (1), I believe that I will need to use the net tcp binding. For (3), perhaps I can configure this binding to work on port 80, 443, or some other commonly used port. My primary concern here is that I don't know how to configure the software to identify itself to the WCF server...