Файл загрузки к удаленному серверу, как должен я?

Я царапаю голову об этом. Мой сценарий - то, что я должен загрузить файл на машину сервера компании (к папке на c:) от нашего хостинга одного (полностью другой сервер). Я не знаю, как я должен сделать это. Любой из Вас надел подсказки, или кодируйте, как это сделано.

Спасибо, ребята

5
задан Dejan.S 1 March 2010 в 02:24
поделиться

3 ответа

Я бы установил FTP-сервер (например, в IIS или сервер стороннего производителя) на сервере компании. Если безопасность является проблемой, то вы захотите установить SFTP (безопасный FTP), а не обычный FTP, поскольку FTP не является изначально безопасным протоколом передачи данных. Затем создайте службу на хостинг-сервере, которая будет забирать файл(ы) по мере их поступления и отправлять их на сервер компании, используя элемент управления FTP в C#/.NET. Честно говоря, это должно быть довольно просто.

Обновление: Читая ваш вопрос, у меня сложилось сильное впечатление, что у вас НЕ будет веб-сайта, работающего на сервере компании. То есть, вам не нужен элемент управления загрузкой файлов в вашем веб-приложении (или вы уже знаете, как его реализовать, учитывая, что элемент управления находится прямо в панели инструментов веб-страницы). Ваш вопрос, как я понимаю, заключается в том, как получить файл с веб-сервера на сервер компании.

Обновление 2: Добавлена заметка о безопасности. Обратите внимание, что это не так важно, если серверы находятся на одном поддомене и не будут направляться за пределы сети компании и/или если данные не являются конфиденциальными. Сначала я не подумал об этом, потому что сейчас я работаю над подобным проектом, но наши данные ни в коем случае не являются конфиденциальными.

3
ответ дан 15 December 2019 в 06:24
поделиться

Недостаточно информации, чтобы описать весь ваш сценарий хостинга, но у меня есть несколько предложений, которые могут помочь вам начать в правильном направлении:

  • Ваш внешний сервер принадлежит другой компании или группе, и вы не можете его изменить? В противном случае вы можете рассмотреть возможность размещения процесса на одном компьютере, либо в процессе, либо в качестве отдельной службы на компьютере. Если он не может быть изменен , вы можете рассмотреть вариант размещения службы на конечном компьютере, таким образом, он будет в том же месте, где должны отображаться файлы.
  • Нужно ли синхронизировать файлы с процессом? Т.е. нужно ли их загружать, перемещать и проверять как одну операцию? Если нет, то, вероятно, лучше всего будет пойти в отдельный процесс. Отдельный процесс даст вам некоторую гибкость, но помните, что это будет отдельный процесс и отдельный набор кода для управления и работы с
  • Насколько велик загружаемый файл (ы)? Они различаются в зависимости от загрузки? это простые файлы, двоичные файлы (zip-архивы, исполняемые файлы и т. д.)? Если файлы маленькие, у вас есть больше возможностей, чем если бы они были большими. Если они достаточно малы, их можно даже переставить в очередь.

В зависимости от ответов на приведенные выше некоторые из них могут сработать для вас:

  • Используйте MSMQ . Это будет работать для простых сообщений размером около 3 МБ без особых хлопот. Идеально подходит для сообщений, с которыми можно напрямую работать (например, XML).
  • Использовать прямую HTTP-ретрансляцию. На хост-машине откройте HTTP-соединение с целевой машиной и передайте файл. Опять же, это будет лучше работать для файлов меньшего размера (т. Е.всего несколько КБ, так как это будет выполняться в режиме реального времени)
  • Если у вас есть доступ к хост-машине, разверните на машине отдельный процесс, который создает или собирает файлы и использует любой из перечисленных методов для их отправки в машина назначения.
  • Вы можете использовать SCP, FTP (в любой форме SFTP и т. Д.) Либо на хост-машине (если у вас есть доступ), либо на целевой машине для размещения входящих файлов и использования пакетного процесса для перемещения файлов. При этом нужно будет решить множество проблем, таких как размер файла, синхронизация отправлений и время. Я бы рассмотрел это как последнее средство, в зависимости от ситуации.
  • Опять же, в зависимости от размера сообщения, вы также можете использовать уровень абстракции, такой как БД, чтобы действовать как промежуточный уровень между двумя машинами. Это будет работать до тех пор, пока две машины могут видеть БД (или другое место хранения) и обе будут работать с ней. Компонент SQL Server Service Broker может использоваться для этой цели (и большинство других продуктов БД предлагают аналогичные продукты).
  • Вы можете посмотреть другие продукты, такие как WSO2 ESB или NServiceBus , чтобы упростить обмен сообщениями между двумя приложениями и сделать его встроенным.

Надеюсь, это даст вам некоторые отправные точки для изучения.

0
ответ дан 15 December 2019 в 06:24
поделиться

Элемент управления загрузкой файлов Даррена Джонстона - лучшее решение, которое вы можете найти где угодно. Он может обрабатывать большие файлы, не влияя на память сервера ASP.NET, и может отображать ход загрузки файлов, не требуя зависимости от Flash или Silverlight.

http://darrenjohnstone.net/2008/07/15/aspnet-file-upload-module-version-2-beta-1/

0
ответ дан 15 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: