1

I would like to add functionality to an existing .NET 6, WinForms app (currently migrating to .NET 8 if that is of any relevance), to periodically upload user usage metrics, in addition to providing capability for users to 'push' log files etc to a server where we can access them immediately, rather than users exporting logs and emailing them etc.

The files are typically small (10s of KB), and no more than a few hundred concurrent users. Users need to be able to upload, but not download, or see any data on the server.

The files themselves are plain text log files, which will then be downloaded and processed by various tools on-premises.

My current thinking is:

  • SFTP to a SFTP server either hosted on-prem, or in cloud (AWS, etc) - this option I am far more familiar with, including hosting the FTP server on-prem.
  • HTTP (S?) PUSH or PUT to a web server. This option I am far less familiar with, notably where/how to host the web server itself.

My concerns are traits such as ease of deployment, security and scalability for example.

With that in mind, which of the 2 technologies are best suited to this task - or rather, am I missing a technology from the list altogether that would be better suited to the job?

3
  • Very unusual for someone to be more familiar with ssh/sftp than the backbone technology of everything else, HTTP
    – pjc50
    Nov 15, 2023 at 9:14
  • Thanks @DocBrown, have done! Nov 15, 2023 at 19:25
  • @pjc50, interesting - why so unusual? Presumably there must be plenty of others from an embedded background with no web development experience, but whom have used FTP servers and clients extensively for various purposes, including uploading to FTP servers from various cellular modules for example...? Nov 15, 2023 at 19:25

1 Answer 1

10

Using HTTPS POST seems like the most obvious way to solve this.

  • There is a high probability that, if any traffic passes a firewall HTTPS will.
  • Most major languages will have at least one standard way to implement HTTPS clients and servers - hence you are not locked in to any particular language.
  • HTTPS will provide transport level security.
  • Having a single POST endpoint provides a fairly easy way to validate that the data transfer is mono-directional.
  • Once the server receives the data, it is free to choose (or change) it's storage mechanism: write to disk, cloud storage or database.
  • You can trigger a workflow whenever new data is POSTed
  • You can assign an ID to posted data on the server side and return the ID in the response (for example to display the ID to the user for follow up).

Bluntly, creating a web service (HTTPS endpoint) is trivial nowadays and for the use case of "only sending" small files, I don't see any other tech having any significant advantage over HTTPS POST.

2
  • 1
    Thanks David, really appreciate this answer - the ID response will be extremely useful in the application too, something FTP won't give me. Best I go away and do some reading on how to setup a web service now, thank you! Nov 15, 2023 at 15:24
  • @jwilo: not just a web server, but also a web application. You have security considerations, too. Nov 18, 2023 at 1:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.