Дайте совет, пожалуйста. Я хочу разработать клиентский менеджер загрузки FTP / SFTP / FTPS в Delphi на WinInet. Что лучше делать (Indy, ISC Components, WinInet ...)? Может уже есть решения?
Оболочка WinInet для FTP в Delphi
Ответы (3)
Вы не указали свою версию Delphi и целевую платформу (x64 и MacOSX доступны в последней версии Delphi), поэтому вот несколько общих советов:
WinInet: вообще нет поддержки FTPS, так что это исключает это для вас.
Indy: поставляется с Delphi (бесплатно), полностью поддерживается в последняя версия Delphi, зрелая, широко используемая, использует синхронную модель (вам нужно использовать потоки, чтобы сетевой доступ не блокировал графический интерфейс).
Компоненты ICS: бесплатно, зрелый, по-видимому, на данный момент нет поддержки Delphi XE2, поэтому нет явной поддержки x64. Широко используемый. Использует асинхронную модель (нет необходимости в потоках, использует обратные вызовы в потоке графического интерфейса).
Synapse: менее известная библиотека (бесплатная), более компактная и простая в использовании. поймите чем два вышеупомянутых. Также есть поддержка FTPS, не обновлялась в последнее время, но нормально работает с Delphi 2007-2009. Синхронная модель.
Я работал со всеми четырьмя перечисленными выше, и их трудно рекомендовать одно перед другим. Все они могут выполнить то, что вам нужно (кроме WinInet), все сводится к тому, какая модель (синхронная / асинхронная) вам удобнее или уже используется в вашем приложении, и какой уровень поддержки платформы / компилятора вам нужен. Если вы не видите причин для выбора №3 или №4, я бы сказал, что переходите к Indy, поскольку он связан с Delphi, имеет поддержку x64 / MacOSX и, вероятно, будет работать в следующем версия Delphi тоже.
Я не могу вспомнить точных причин, но когда нам нужно было реализовать sFTP и FTP, мы выбрали ipWorks (http://www.nsoftware.com/ipworks) и ipWorks SSL / SSH. Хотя платить за это не я, поэтому меня не волновала стоимость.
Возможно, это было просто потому, что мы уже использовали ipWorks для FTP.
У меня есть ротине для выполнения внешнего приложения, в данном случае это приложение WinSCP. Если есть необходимость, могу вставить пример.