1

I'm developing an automatic software update service, in which clients get updated version of the software over internet, we are considering downloads from a remote server over HTTP because it is immune to firewall restrictions.

The update server, must be able to authenticate the request, check license of the software and provide the client with the correct update files (as if there might be several versions of the software which need updating)

An ASP.net web application might be able to do the job, however I'm trying to avoid a web application because it needs to be installed in IIS. I am considering a basicHttp WCF library hosted in a windows service with Streamed transferMode, however I've read articles that say "its not a good practice to transfer files with WCF! I wonder why WCF is not a technology for file transfers? What are the restrictions and alternatives?

Do you suggest a WCF windows service for this job?

Kamyar Nazeri
  • 25,786
  • 15
  • 50
  • 87
  • 1
    I think you would be better to just use a solution like clickonce (or whatever) to distribute the application and separately authenticate your licence. You are going to find that people xcopy your application anyway, corporate environments invariably have their own packaging solutions. – AlSki Sep 28 '12 at 19:39
  • possible duplicate of [How should I implement an auto-updater?](http://stackoverflow.com/questions/232347/how-should-i-implement-an-auto-updater), [Directions and Opinions on Creating Update System](http://stackoverflow.com/q/2917203/62576), [Software Auto Update](http://stackoverflow.com/q/5130765/62576) and many other questions here. – Ken White Sep 28 '12 at 20:00
  • It's not, the main question is whether WCF is a good or not, I'll change the title – Kamyar Nazeri Sep 28 '12 at 20:12

1 Answers1

1

This doesn't exactly answer your question regarding WCF and transferring files, however I built an auto-updater application not too long ago that had a small client front-end to a WinForms app. It would get a list of local files, generate an MD5 hash of each one and send it up to a web service for comparison against a local list of files on the web server. The web service method returned the list of files that changed.

The client would then loop through that list and call another web service that would return a byte array for each file and dump it out to the local hard drive.

When this was done, it would do a Process.Start on the exe of the updated app.

It's been running in production with a couple hundred active users for over a year with no issues.

Adam Plocher
  • 13,994
  • 6
  • 46
  • 79
  • 1
    You may want to share parts of the configuration that refer to the rate limits, timeouts, etc. of your WCF service; I bet that is where he would run into issues. – Derreck Dean Sep 28 '12 at 20:22