2011-04-21 80 views
0

好日子大家之間的直接連接..創建客戶端PC和遠程服務器的FRP

我devoloping中,我要實現文件上傳一個Asp.Net Web應用程序,但有一點複雜:

爲了更好地解釋,應用程序服務器上的「A」。該文件需要上傳到一個完全不同的服務器「B」 ..

一旦客戶端「C」上傳文件通過該網站運行接口,該文件必須實際上傳到服務器B.

技術上我已經達到了這個:

  • 客戶的動產,他希望從他的電腦上傳,然後單擊該文件的網頁的回發期間「上傳」
  • 」,upoloads文件的服務器,但不保存
  • 我從FileUploas控件拾取fileStream,並通過ftp將它發送到服務器「B」;

,但是通過這樣做,實際上是文件傳輸兩次(C - > A - > B),使文件的用戶體驗,上傳時間比正常..

我的問題是:可以通過站點界面(在服務器「A」上運行)在「C」和「B」之間打開「直接」連接,以執行單個傳輸?很明顯,我應該可以在下載過程中做同樣的事情。

另一種方法(至少在上傳過程中)應該是通過在服務器「A」上保存臨時文件來「隱藏」雙重傳輸,然後將其重新傳輸到「B」開始一個單獨的任務,以便用戶能夠在「首次」上載後在網站上執行新的操作。

任何建議是極大的讚賞(甚至是完全不同的解決方案,我會再評估「兼容性」與我的項目)

謝謝你在前進,

阿爾貝託

注:我選擇去FTP,因爲客戶端必須能夠選擇他想放置「B」服務器的位置(他可以使用「我們的」ftp,或者如果他有,發送文件),我認爲FTP是最「兼容」和「快速設置」解決方案,可以獨立於服務器「B」平臺進行ftp管理。

回答

0

目前還不清楚,您希望C能夠提供什麼樣的連接。如果C可以打開到B直接連接,並且如果服務器A具有用於訪問乙憑證,方案可以如下所示:

  1. 客戶端C建立與服務器命令信道A
  2. 服務器A建立與命令通道服務器B
  3. 客戶端開始準備數據傳輸。此時C向服務器A請求被動模式。立即開始準備與服務器B的數據傳輸,並向服務器B請求被動模式。該AB準備應完全在服務器A從C接收到PASV命令併發送響應到這個命令。所以它應該是快速(我認爲最多2-3秒)。
  4. 服務器A獲取從服務器B連接的地址和端口,並將此數據作爲對從C接收到的PASV命令的響應發送。
  5. C將數據傳輸到B.服務器A通過B接收「傳輸完成」命令通道並將其發送到客戶端。
  6. 現在服務器A可以關閉到服務器B的命令通道(如果需要)。

以上要求您瞭解FTP協議的詳細信息,並且很可能將您自己實現爲客戶端和服務器。這可能會非常耗時。

+0

嗨尤金,謝謝你的回答..我很抱歉不清楚..事實是,我在技術上不知道應該怎樣連接C到B,但我認爲更好opton是使用ftp。在我的設置中,客戶端是一個簡單的瀏覽器,必須使用在服務器「A」中運行的asp.net應用程序,而「B」必須以「透明」的方式用作文件服務器..我會看看PASV命令和命令通道(我甚至不知道它們的存在,但我會盡力彌補!!!)。 謝謝! – Alberto 2011-04-21 12:32:23

+0

一個澄清,不要花我的時間在「無用」的任務(知識總是有用的):是否有可能複製你在我的案例中描述的系統: - 服務器A是我的ASP.net應用程序,我有完全控制 - C必須是一個普通的瀏覽器 - B必須是一個通用FTP服務器中的文件夾,除了知道服務器名稱,用戶名和密碼(如果需要)之外,理論上我無法控制 – Alberto 2011-04-21 12:44:29

+0

@Alberto如果C只是一個瀏覽器,那麼我唯一能想到的就是讓B運行一個Web服務器並指導用戶上傳(通過在新標籤頁/窗口中打開一個新頁面)。在這種情況下,我的設計非常好;)方案不起作用。 – 2011-04-21 13:44:44

相關問題