Buduję klienta/serwer zdalnego .NET, który będzie przesyłać tysiące plików o różnych rozmiarach (od kilku bajtów do setek MB) , i chciałbym uzyskać informację zwrotną na temat najlepszej metody osiągnięcia tego. Jak ja to widzę, istnieje kilka opcji:Najlepszy sposób przenoszenia plików o różnych rozmiarach w powolnej sieci przy użyciu .NET
- Serializować cały plik do mojego obiektu remoting i przekazuje na wszystkie na raz, niezależnie od ich wielkości. Prawdopodobnie byłaby to najszybsza, ale awaria podczas transmisji wymaga, aby cały plik został ponownie przesłany, bez możliwości wznowienia.
- Jeśli rozmiar pliku jest większy niż coś małego (np. 4KB), podziel go na porcje 4KB i zdalne, ponownie zmontuj na serwerze. Oprócz złożoności tego zjawiska, jest on wolniejszy z powodu ciągłych podróży w obie strony i potwierdzeń, chociaż awaria jednego elementu nie marnuje zbyt wiele czasu.
- W tym coś podobnego do serwera FTP lub SFTP z moją aplikacją - klient powiadomi serwer, że zaczyna używać zdalnego połączenia, przesłać plik, a następnie użyj zdalnego przekazywania do powiadomienia o zakończeniu. Chciałbym zawrzeć wszystko w mojej aplikacji zamiast wymagać oddzielnej usługi FTP, ale jestem otwarty na tę opcję, jeśli jest potrzebna.
- Użyj pewnego rodzaju podanego połączenia TCP lub WPF lub innej metody transmisji, która jest zbudowana do obsługi awarii lub jest w stanie wykonać jakiś punkt kontrolny/wznowić.
- Brakuje mi jakichś innych?
Jaka jest najbardziej elastyczna/niezawodna metoda transmisji? Nie martwię się o szybkość, ale bardziej o niezawodność - chcę, żeby plik się poruszał, nawet jeśli jest wolny. Ponieważ klient i serwer będą wielowątkowe, mogę przesyłać wiele plików w tym samym czasie, jeśli pozwala na to połączenie.
Dziękuję za opinię - wrzucę nagrodę, aby uzyskać rekomendacje dotyczące sposobów, w jakie ludzie mogliby to osiągnąć.
Nie brałem pod uwagę usługi BITS, ale wydaje mi się, że dokładnie taką funkcję próbuję replikować - nie ma sensu pisanie jej, gdy już istnieje. Czy wiesz, czy istnieje sposób na przesłanie pliku bez usług IIS? Moje wstępne (i niekompletne) badania wydają się mówić, że wymaga to usług IIS - a nie ogranicznika, ale nie miałem żadnych zewnętrznych zależności. – SqlRyan