0
votes

First, the system architecture: Server: Running IIS ASP and delivering data to a hundred or so WinXP+ clients in the field upon automated requests from those clients. Data sent from the server is large graphic or video files. If a file is placed on the server by a user, these remote clients will "discover" it and download the file.

Clients: As stated above, the clients are remote unattended boxes that fetch content from the server. The end purpose is digital signage.

Problem: All clients hitting the server at the same time makes for slow transfers of large files - not enough bandwidth.

Solution (I think): Use Google Cloud Storage or Google Drive to hold the files and have the clients request (automated and unattended) those files. I think Google would have a higher available bandwidth (at least the NSA thinks so).

Questions: Which is a better solution between Google Cloud Storage and Google Drive?

Is it possible to use Windows PowerShell or WScript to run scripts to interact with Google? Reason is that I need to avoid installing new software on the client machines that might require user interaction.

2

2 Answers

0
votes

Yes you can use powershell as long as you can urlfetch https data. The oauth flow might be tricky to get working, follow examples for installed apps. 100% use cloud storage instead of drive. Drive is not meant to scale with simultaneous downloads and has several quotas so you will need to implement exponential backoff etc with drive.

0
votes

Yes you can use Drive or Cloud Storage. I would go for Drive over Cloud Storage, because :-

  1. It's free, Cloud Storage will cost you and so you have to worry about your credit card expiring
  2. It's easier to program since it's a simple http GET to retrieve your files
    1. You need to think about your security model. With Drive you could (nb not should), make the files public. Provided your clients can be informed of the URL, then there is no OAuth to worry about. If you need better security, install a Refresh Token on each client. Before each download, your client will make a call to Google to convert the refresh token to an access token. I suggest prototype without OAuth to begin with. Then if (a) it fits, and (b) you need more security, add OAuth.
  3. The Drive web app gives you your management console for the downloadable files. If you use Cloud Storage, you'll need to write your own.

The quota issue is discussed here Google Drive as a video hosting/streaming platform? Because the quota isn't documented, we can only guess at what the restrictions are. It seems to be bandwidth for a given file, so the larger the file, the fewer the number of downloads. A simple workaround is to use the copy API https://developers.google.com/drive/v2/reference/files/copy to make multiple copies of the file.

You have other options too. Since these are simply static files, you could host them on Google Sites or Google App Engine. you could also store them within App Engine datastore which has a free quota.

Finally, you could even consider a BitTorrent approach.