Tôi đang xây dựng máy khách/máy chủ từ xa .NET sẽ truyền hàng nghìn tệp, có kích thước khác nhau (mọi thứ từ vài byte đến hàng trăm MB) và tôi muốn một số phản hồi về phương pháp tốt nhất để đạt được điều này. Như tôi thấy, có một vài tùy chọn:Cách tốt nhất để di chuyển các tệp có kích thước khác nhau trên mạng chậm bằng cách sử dụng .NET
- Nối tiếp toàn bộ tệp vào đối tượng truy cập từ xa của tôi và truyền cùng một lúc, bất kể kích thước. Điều này có lẽ sẽ là nhanh nhất, nhưng thất bại trong quá trình truyền yêu cầu toàn bộ tập tin phải được truyền lại, không có cách nào để tiếp tục.
- Nếu kích thước tệp lớn hơn một cái gì đó nhỏ (như 4KB), hãy chia nhỏ thành các khối 4KB và các từ xa, lắp ráp lại trên máy chủ. Ngoài sự phức tạp của điều này, nó chậm hơn vì tiếp tục các chuyến đi khứ hồi và sự thừa nhận, mặc dù một thất bại của bất kỳ một mảnh không lãng phí nhiều thời gian.
- Bao gồm một số thứ như máy chủ FTP hoặc SFTP với ứng dụng của tôi - máy khách sẽ thông báo cho máy chủ biết rằng máy chủ đang bắt đầu sử dụng tính năng truy cập từ xa, tải tệp lên, sau đó sử dụng tính năng remoting để thông báo hoàn thành. Tôi muốn chứa tất cả mọi thứ trong ứng dụng của tôi thay vì yêu cầu một dịch vụ FTP riêng biệt, nhưng tôi mở ra tùy chọn này nếu cần.
- Sử dụng một số loại kết nối TCP đã nêu hoặc WPF hoặc một số phương thức truyền khác được xây dựng để xử lý các lỗi hoặc có khả năng thực hiện một số loại trạm kiểm soát/tiếp tục.
- Bất kỳ người nào khác tôi bị thiếu?
Phương thức truyền tải linh hoạt/đáng tin cậy nhất là gì? Tôi không quan tâm đến tốc độ, nhưng về độ tin cậy - tôi muốn tập tin chuyển động, ngay cả khi nó chậm. Vì máy khách và máy chủ sẽ được đa luồng, tôi có thể truyền nhiều tệp cùng một lúc nếu kết nối cho phép.
Cảm ơn phản hồi của bạn - Tôi sẽ ném tiền thưởng để nhận một số đề xuất về những cách mọi người sẽ thực hiện việc này.
Tôi đã không coi BITS, nhưng đó dường như là chức năng chính xác mà tôi đang cố gắng sao chép - không có ý nghĩa khi viết nó khi nó đã tồn tại. Bạn có biết nếu có cách nào để tải lên mà không cần IIS? Nghiên cứu ban đầu (và không đầy đủ) của tôi dường như nói rằng nó đòi hỏi IIS - không phải là một trình hiển thị, nhưng tôi hy vọng không có bất kỳ phụ thuộc bên ngoài nào. – SqlRyan