Je construis un client/serveur .NET remoting qui va transmettre des milliers de fichiers, de tailles variées (allant de quelques octets à des centaines de Mo), et j'aimerais des retours sur la meilleure méthode pour y parvenir. Tel que je le vois, il y a quelques options:
- Sérialiser l'intégralité du fichier dans mon objet de remoting et le transmettre d'un coup, peu importe sa taille. Cela serait probablement le plus rapide, mais en cas d'échec pendant la transmission, il faudrait recommencer tout le fichier, sans possibilité de reprise.
- Si la taille du fichier est plus grande qu'un seuil (comme 4 Ko), le diviser en morceaux de 4 Ko et les envoyer à distance, puis les réassembler côté serveur. En plus de la complexité de cette méthode, c'est plus lent en raison des aller-retours et des accusés de réception, bien qu'un échec d'un morceau n'oblige pas à recommencer tout le processus.
- Inclure quelque chose comme un serveur FTP ou SFTP avec mon application - le client informera le serveur de son début d'utilisation du remoting, téléchargera le fichier, puis utilisera le remoting pour signaler la fin. J'aimerais tout contenir dans mon application au lieu d'avoir besoin d'un service FTP séparé, mais je suis ouvert à cette option si c'est nécessaire.
- Utiliser un type de connexion TCP à état ou WPF ou tout autre méthode de transmission capable de gérer les échecs ou de faire une sorte de checkpoint/reprise.
- D'autres que j'aurais omis?
Quelle est la méthode de transmission la plus flexible/fiable? Je ne me soucie pas vraiment de la vitesse, mais plus de la fiabilité - je veux que le fichier soit déplacé, même si c'est lentement. Comme le client et le serveur seront multi-threadés, je peux transmettre plusieurs fichiers en même temps si la connexion le permet.
Merci pour vos retours - je vais offrir une prime pour obtenir des recommandations sur les façons dont les gens réaliseraient cela.