2011-04-21 51 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

相关问题