уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

 

Сегодня решил немного расширить свой кругозор по части различных компонентов Delphi XE для работы с Сетью. На данный момент в блоге имеется некоторая информация по таким библиотекам как Synapse (в основном пользуюсь этой библиотекой), Indy и ICS. По последним двум информации не так уж и много, как хотелось бы, т.к. практически ими не пользуюсь. Так же есть немного информации и по WinInet.

Недавно наткнулся на набор компонентов IP*Works. Не скажу, что я вообще не знал о их существовании, знал, но в работе никогда не использовал. Сегодня решил все-таки взглянуть на IP*Works и узнать в чем фишка этого набора компонентов. Но обо все по порядку.

Разработчик компонентов компания /n software.

В отличие от рассматриваемых ранее библиотек и компонентов для работы с Сетью IP*Works – платный набор. Базовый набор из 44 компонентов обойдется вам в $499, апгрейд до восьмой версии – в $299.

Что же нам предлагают разработчики за $499? После установки набора компонент, надо сказать, перечень поддерживаемых протоколов и технологий немного поражает своим разнообразием. Установив IP*Works Вы сможете работать с: FTP, HTTP, SMTP, POP, IMAP, SNMP, LDAP, DNS, RSS, SMPP (SMS), XMPP (Jabber), SOAP, WebDAV, CalDAV, JSON, Ping, REST и т.д. В общем, набор довольно внушительный. Многое, конечно, можно найти и “на халяву”, например, те же компоненты для работы с HTTP/FTP, но по-моему компоненты для работы с XMPP, CalDAV просто так бесплатно в Сети не встречаются или носят “недопиленный” характер (хотя я и могу ошибаться).

После установки пакета на палитре компонентов Delphi XE появится ещё одна вкладка – IP*Works:

ip_works

Сегодня рассмотрим в целом, что есть в наборе. Итак, все компоненты из набора имеют префикc ipw, в состав базового набора входят следующие компоненты:

ipwAtomAtom – компонент, реализующий стандартный клиент для работы с протоколом Atom согласно RFC 4287. Для тех, кто хотя бы немного работал или работает с API Google этот компонент может стать неплохой находкой, т.к. может значительно облегчить жизнь разработчику.

У компонента имеются специальный метод для запроса фида – GetFeed, а также метод для отправки содержимого на сервер – Put.

Рассмотрим небольшой пример работы компонента. Скажем, нас интересует есть ли какая-либо игра в блоге Flash-отдых. Мы можем зайти на сайт и поискать игрушку через поиск, а можем воспользоваться каналом сообщений, подписка на который находится внизу страницы блога:

true_swf

Бросаем на форму компонент Atom, кнопку и пишем для кнопки следующий обработчик:

procedure TForm6.Button1Click(Sender: TObject);
var i:integer;
begin
ipwAtom1.GetFeed('http://true-swf.blogspot.com/feeds/posts/default');
for i:=0 to ipwAtom1.EntryCount-1 do
  ShowMessage(ipwAtom1.EntryTitle[i])
end;

 

Здесь после клика по кнопке нам будут перечислены все заголовки (названия игр) элементов канала, доступные на данный момент. Что следует отметить в работе компонента. Во-первых, как и всегда, с кодировкой текста придётся разбираться самостоятельно. Во-вторых, компонент работает только с чистым Atom, т.е. если в блоге будет стоять редирект на FeedBuner, как бы вы ни старались ipwAtom не разберет содержимое. Это не недостаток компонента, а скорее ограничение (справедливое и правильное), которое снимается использованием другого компонента :) о котором поговорим чуть ниже.

ipwCalDavCalDav – компонент предоставляющий в наше использование простой и удобный интерфейс для управления календарями, например Google Calendar. С помощью этого компонента можно добавлять, редактировать и удалять события в календаре. Как и предыдущий компонент ipwCalDav имеет в своем составе специальные методы, такие как GetCalendarReport, MoveCalendarEvent и другие.

ipwDNSDNS – компонент для организации удобного доступа к записям DNS согласно RFC 1035. Компонент может работать как в синхронном, так и асинхронном режимах.

ipwFileMailerFileMailer – компонент для отправки писем с вложениями. Для работы с вложениями компонент имеет ряд довольно удобных свойств и методов. В целом про работу с почтой я рассказывал в блоге, поэтому, думаю сильно повторяться не стоит. Стоит лишь заметить, что компонент ipwFileMailer содержит свойства и методы для выполнения любых операций с SMTP, начиная с отправки команды Hello в ручном режиме и заканчивая авто-определением MIME-типов прикрепленных к письму файлов. С TSL не дружит, т.к. подобный компонент для работы с TSL имеется в другом пакете от /n software, который стоит по дороже, чем базовый. Для работы с Mail.ru и Яндекс-почтой, думаю, ipwFileMailer’а хватит за глаза.

ipwFTPFTP – компонент, реализующий клиента для работы с FTP-протоколом согласно RFC 959 и RFC 1579. Для начала работы с компонентом необходимо указать в свойствах RemoteHost, а также логин и пароль. Компонент достаточно удобный в плане использования. Можно скачивать и закачивать файлы. перечислять дирректории на сервере, получать и изменять настройки и выполнять другие стандартные операции по работе с FTP.

ipwHTMLMailerHTMLMailer – компонент для отправки писем, содержащих HTML-код. Честно сказать, пока не понимаю в чём была объективная причина разработчиков вытаскивать отдельный компонент на палитру. Беглый обзор свойств этого компонента и FileMailer показал, что практически все свойства и методы идентичны, только у HTMLMailer есть ещё свойство MessageHTML в котором должно записываться HTML-содержимое. Ну, разработчикам виднее, а мы пока просто констатируем факт – есть такой компонент для отправки почты.

ipwHTTPHTTP – компонент, реализующий клиента для работы с HTTP-протоколом. Что можно сказать про этот компонент? В принципе компонент похож по свойствам и методам на своих “сородичей” из Indy и ICS, т.е. поддерживает авторедиректы, аутентификацию различными способами, в настройках имеются свойства для работы с FireWall. Есть также события для обработки статусов 3** (постоянные и временные редиректы).

ipwICMPPortICMPPort — Компонент ICMPPort используется для облегчения отправки ICMP сообщений. Он может действовать как в качестве клиента так и сервера и общаться с любым количеством хостов одновременно, а также генерировать и получать широковещательные пакеты. Может использоваться в локальной сети.

ipwIMAPIMAP — компонент реализует стандартный клиент IMAP, согласно RFC 1730 и RFC 2060. Протокол IMAP используется, например, в таких почтовых сервисах как Gmail и Яндекс.Почта.

ipwIPDaemonIPDaemon – этот компонент используется для создания скоростного TCP/IP-сервера. Вместе с компонентом IPPort, который реализует клиента, IPDaemon создают единую философию дизайна интерфейса приложений. По умолчанию компонент может обрабатывать 1000 входящих соединений. Согласно документации лимит может быть увеличен до 100 000.

ipwIPInfoIPInfo – компонент используется для получения имени хоста по его IP-адресу и наоборот. Работает в асинхронном режиме. В очередь на обработку может быть поставлено до 100 запросов. Ответы полученный от DNS-сервера обрабатываются через событие RequestComplete.

ipwIPMonitorIPMonitor – компонент для “прослушки” сетевого трафика. Для нормальной работы компонента необходимо иметь права администратора и ОС Windows не ниже 2000. Компонент связывается с конкретным локальным адресом и “слушает” весь трафик. Если компьютер подключен в сеть через концентратор то слушается как входящий, так и исходящий трафик, если к коммуникатору, то будет прослушиваться только входящий трафик.

ipwIPPortIPPort – представляет собой клиента для работы с TCP/IP. В работе используются сокеты. Как говорилось выше, этот компонент удобно использовать в связке с IPDaemon для создания клиент-серверных приложений при этом приложение, использующее IPDaemon будет выступать в качестве сервера.

ipwJSONJSON – компонент для обработки сообщений в формате JSON. У компонента имеются свойства и методы, позволяющие пересылать и получать JSON-документы по Сети. Свойства, используемые для разбора JSON-документа начинаются с символа X. Думаю, что этот компонент я попробую разобрать немного по-подробнее и сравнить в плане удобства разбора документов с несколькими бесплатными библиотеками.

ipwLDAPLDAP – компонент реализует стандартный клиент для работы с LDAP-серверами согласно RFC 1777, 2251 и другими. Поддерживаются все версии LDAP включая версии 2 и 3. Компонент может работать как в синхронном, так и асинхронном режимах.

ipwMCastMCast — компонент используется для отправки многоадресных сообщений по протоколу UDP. Он может действовать как в качестве клиента так и сервера и общаться с любым количеством хостов одновременно, а также генерировать и получать широковещательные пакеты.

ipwMIMEMIME – компонент можно использовать как для декодирования, так и кодирования писем, содержащих какие-либо вложения. Компонент может декодировать как всё содержимое письма целиком, так и отдельные его части и сохранять декодированные фрагменты как в строки, так и файлы на жестком диске.

ipwMXMX – компонент позволяет выполнять запросы на получение MX записей в DNS. MX-записи – это один из типов записей в DNS, указывающий способ маршрутизации электронной почты.

ipwNetClockNetClock — компонент NetClock реализует стандартный клиент для протокола синхронизации времени (SNTP) в соответствии с RFC 868.

ipwNetCodeNetCode – компонент используется для кодирования и декодирования строк и файлов. В настоящее время поддерживается: UUEncode, Base64 MIME в Quoted-Printable, URL форматы кодирования, а также MD5 и SHA1.

ipwNetDialNetDial — компонент может быть использован для вызова Системы удаленного доступа (RAS), инициации или разрыва Dialup-соединения с удаленными хостами, получения списка соединений, и выполнения записей в телефонной книге.

NNTPNNTP – компонент используется для чтения и записи статей в usernet. NNTP компонент реализует стандартные методы чтения новостей Usenet, как указано в RFC 977.

ipwPingPing — компонент инкапсулирует функциональность ICMP ECHO и используется для проверки существования связи  между двумя компьютерами.

ipwPOPPOP – компонент используется для получения электронной почты по протоколу POP. Работа компонента осуществляется в соответствии с RFC 1725.

ipwRCPRCP – компонент реализует поддержку популярного протокола UNIX (Remote Copy Protocol), используемого для передачи файлов между системами.

ipwRESTREST— компонент реализует клиент. работающий по REST принципам и может использоваться для передачи XML-файлов по Сети.

ipwRexecRexec — компонент используется для выполнения команд на удаленной машине UNIX с использованием REXEC механизма.

ipwRshellRshell — компонент используется для выполнения команд на удаленной машине Unix с использованием rshell механизма.

ipwRSSRSS — компонент, реализующий стандартный клиент для работы с RSS-каналами сайтов и блогов. Устройство и принцип работы аналогичен компоненту Atom.

ipwSMPPSMPP — компонент реализует легкий интерфейс передачи сообщений с помощью коротких сообщений по протоколу Peer-To-Peer, который используется в сотовыми операторами для передачи SMS.

ipwSMTPSMTP – компонент, используемый для отправки сообщений электронной почты по протоколу SMTP. В работе других компонентов, реализующих отправку электронной почты используются методы и свойства этого компонента.

ipwSNPPSNPP – компонент для отправки страниц по протоколу SNPP (Simple Network Paging Protocol). Этот клиент осуществляет поддержку протокола SNPP v3.

ipwSOAPSOAP – компонент используется для работы с серверами SOAP. SOAP (от англ. Simple Object Access Protocol — простой протокол доступа к объектам) — протокол обмена структурированными сообщениями в распределённой вычислительной среде.

ipwSysLogSysLog — компонент используется для отправки и получения сетевых пакетов системного журнала. Компонент Syslog реализует облегченный клиент журнала BSD в соответствие с RFC3164.

ipwTelnetTelnet — компонент используется для взаимодействия с серверами, реализующими протокол TELNET. Компонент работает в соответствии с RFC 854.

ipwTFTPTFTP – компонент используется для создания клиентских приложений, работающих по протоколу TFTP (Trivial File Transfer Protocol – простой протокол передачи файлов)

ipwTraceRoutTraceRoute — компонент TraceRoute позволяет проследить путь IP пакетов в Интернет. Компонент работает в соответствии с RFC 1393.

ipwUDPPortUDPPort — компонент UDPPort используется для облегчения работы с протоколом UDP. Он может действовать как в качестве клиента так и сервера и общаться с любым количеством хостов одновременно, а также генерировать и получать широковещательные пакеты. Компонент похож на IPPort, но значительно проще в использовании.

ipwWebDavWebDAV — компонент реализует простой в использовании интерфейс для Web Distributed Authoring and Versioning протокола (WebDAV) — защищённый сетевой протокол высокого уровня, работающий поверх HTTP для доступа к объектам и коллекциям.

ipwWebFormWebForm – удобный компонент, реализующий отправку данных методом POST в Web-формы на сайтах. При работе с компонентом можно указывать способ кодирования данных (по умолчаию urlencoding)

ipwWebUploadWebUpload — компонент используется для упрощения работы по загрузке файлов на сервер, который работает в соответствии с RFC1867.

ipwWhoisWhois – удобный компонент для отправки сообщений на WHOIS сервер с целью получения информации о домене (владелец, дата регистрации. дата окончания регистрации, регистратор и т.д.)

ipwXMLpXMLp — компонент XMLp реализует SAX2-совместимый XML-анализатор используемый для анализа и проверки структуры XML-документов.

ipwXMPPXMPP — компонент используется для создания облегченных клиентов для обмена сообщениями с помощью XMPP (Jabber) протокола.

Вот такой получился сжатый краткий обзор компонентов IP*Works v8. С большей частью аналогичных компонентов мы уже знакомы, однако, как видно из обзора, в IP*Works встречаются и свои “фишки” типа анализаторов для Atom, RSS, WebDav и т.д.

Пока плотно с компонентами не работал. есть желание проверить кое-какие из них на удобство использования в сравнении с теми, что уже использовал. Судя по некоторым отзывам об этом наборе компонентов в Сети, можно сказать, что одним из недостатком IP*Works является то, что с проектами приходится таскать DLL-ку от разработчиков в которой содержится вся “соль” работы. Ну и, пусть и не сильно, но напрягает разделение на компоненты поддерживающие защищенные соединения и не поддерживающие – привык как-то, что все возможности в одном пакете, но т.к. фишки типа SSL практически никогда не использовал, то, в принципе этот недостаток в моем случае не самый ужасный, а самый ужасный – ценник :).

А Вы использовали эти компоненты? Если использовали, то  каковы впечатления? Какие глюки встречались как решались?

Книжная полка

Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
купить книгу delphi на ЛитРес
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
купить книгу delphi на ЛитРес
0 0 голоса
Рейтинг статьи
уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
Подписаться
Уведомить о
5 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
val1401
val1401
25/05/2011 11:19

Отличные компоненты. Как-то писал FTP клиент…
Сначала намучился с  Indy, но заставить читать русские имена файлов на сервере так и не удалось.
Потом попробовал ICS, но наткнулся на глюк. Точно уже не помню что было, но что типа того что если получать файлы в цикле то он некорректно работал.
С IpWorks же по работе с FTP проблем не возникало.
Пробовал через  IpWorks работать с Jabber Vkontakte, но так и не получилось подключиться… Может кто пробовал? Интересно что я не так делаю…

Анонимус
Анонимус
26/06/2011 17:33

Спасибо за обзор, хорошие компоненты. Только вот IPPort так и не удалось заставить отправлять TCP-пакеты.

Maliron
Maliron
22/07/2011 19:35

Компоненты хороши. IpDaemon выдерживает неплохую нагрузку (тестировал при 5000 подключенных клиентах, при большем кол-ве коннектов процессор сильно начинает грузиться, тут вообще от железа сильно зависит).  SSL версия позвоволяет работать и без SSL. IpPort\IpDeamon имеют property SSLStartMode. sslNone — отключает SSL. DLL  c  проектом тягать не надо, если есть купленная версия компонент (dll надо тягать для триал версии ) Минусы — лично у меня были большые проблемы с поддержкой. Я им высылал исходники и говорил как воспроизвести проблему — они ничего путного не отвечают. сплошные отписки. хотя за те деньги что они берут предполагаеться качественная поддержка. У меня была одна большая проблема — использовать… Подробнее »

pix**s
pix**s
14/03/2016 01:42

Отличные компоненты! радует ассинхоронность , не грузят процессор .