I am pretty new to exposing the WCF services hosted on IIS over internet. I will be deploying a WCF service over IIS (6 or 7) and would like to expose this service over the internet. This will be hosted in a corporate network having firewall, I want this service to be accessible over the internet(should be able to pass through the firewall)

I did some research on this and some of the pointers I got:

I could use wsHTTPBinding or nettcpbinding (the client is intended to be .net client). Which of the bindings is preferable.

To overcome the corporate I came across DMZ server, what is the purpose of this and do I really need to use this).

I will be passing some files between the client and server, and the client needs to know the progress of the processing on server and the end result.

I know this is a very broad question to ask, but could anyone give me pointers where I could start on this and what approach to take for this problem.