Bob Swart - Интернет решения от доктора Боба
if ParamCount <2 >then
begin
writeln('Usage: DrBobFTP URL Filename');
writeln('Example: DrBobFTP http://www.drbob42.com/ftp/headconv.zip hc.zip')
end
else
CopyURL(ParamStr(1), ParamStr(2))
end.
Конечно, для выполнения данной программы мы также обязаны иметь WinInet.DLL, которая также может быть найдена на Microsoft web сайте.
3.4.4.4.Улучшения?
Если вы читали документацию по WinInet, вы заметили что, там есть функция FindFile, так что вы можете сделать обзор удаленных файлов. И базируясь на этой информации, вы можете написать своего web робота, который может загрузить часть a web сайта (например, те файлы, которые изменились после последнего посещения данного сайта). Все автоматически и без GUI (зато быстро). Для информации, Я работал над подобным сортом инструментария, названного мной RobotBob, который наложил свой глаз на Борландовский web сайт, помогая мне отслеживать новости и события по Борландовским средствам разработки…
3.4.5. HTML подсветка синтаксиса
И последний инструмент, который я использую ежедневно, это программа HTMLHIGH, используемая для подсветки синтаксиса внутри фрагментов <PRE…</PRE> HTML страниц. Версию, работающую из командной строки можно найти на CD-ROM прилагаемой к моей книге. В данный момент я работаю над версией user-friendly Wizard и хочу написать об этом отдельную статью.
3.5. Улучшения?
Если вы читали документацию по WinInet, вы заметили что, там есть функция FindFile, так что вы можете сделать обзор удаленных файлов. И базируясь на этой информации, вы можете написать своего web робота, который может загрузить часть web сайта (например, те файлы, которые изменились после последнего посещения данного сайта). Все автоматически и без GUI (зато быстро).
4. Delphi ActiveForms (intranet)
С помощью JBuilder возможно разрабатывать 100% pure Java апплеты, приложения., но мы не должны забывать и о том, что с помощью Дельфи так же можно создавать интересные Интранет решения используя такие вещи как ActiveForms и Web Modules…
4.1. ActiveForms
Дельфи 2.x не может создавать ActiveX органы управления. В Дельфи 3 это было исправлено и названо One-Step-ActiveX. Вначале показалось, что это было изумительное свойство Дельфи 3. Но после детального ознакомления, оказалось, что можете включать только компоненты наследники от TWinControl внутрь ActiveX, и вы не можете делать ActiveX органы, которые могут подключать другие компоненты, такие как TTable и TQuery компоненты, котрые подключаются к TDataSource, и все другие data-aware компоненты). На практике это означает, что изумительное нововведение оказалось в действительности пшиком, не позволяя делать серьезные Интернет приложения.
Конечно мы можем обойти эту проблему, разместив все нужные компоненты в один "контейнер" и преобразовать этот контейнер в один большой ActiveX контрол. Конечно, наилучшим контейнером мог бы быть TForm (так что мы могли бы разрабатывать привычным образом), и имя этому было бы ActiveForm . ActiveForms мог бы интерпритироваться как обычная форма, которая может содержать любые компоненты, включая TTable, TDataSource, TDBGrid, TDBNavigator, и т.д. и они были бы хорошим потенциалом ActiveX для Дельфи программиста.
Подобно любому ActiveX контролу, ActiveForm требуется Win32 платформа для исполнения, но это должна быть Win32 платформа, так как ActiveForm это обычный ActiveX орган, и может быть использован внутри других средств разработки, поддерживающих ActiveX, таких как C++Builder, Visual Basic, PowerBuilder, и также Internet Explorer. Последнее означает, что мы можем использовать ActiveForm для распространения Интернет приложений в Интернет или Интранет.
Простой откомпилированный ActiveForm проект может оказаться в .OCX размером свыше 300 Kb, даже если были использованы совсем немного контролов и всего лишь несколько строк кода. Компиляция с пакетами, VCLx0 (стандарт) или VCLDBx0 (data-aware) может уменьшить этот размер до 50 Kb, более мене функциональные ActiveForm будуь порядка 100 Kb. Пакеты значительно увеличивают размер (VCLx0 пакет это более мегабайта), но они должны ставиться у клиента только один раз, и могут быть уже предустановленны у клиента, что позволяет уменьшить время загрузки.
Поскольку ActiveForm это просто другое Win32 приложение, то даже когда оно запускается из Internet Explorer то могут произойти неприятные вещи у неискушенных пользователей. По одной причине, ActiveForm имеет доступ ко всей машине, и если пользователь зарегистрировался в сети, то ActiveForm, подобно вирусу может сделать все что угодно на вашей машине (отформатировать жесткий диск? Послать e-mail? Разрушить базу данных? Все что вы в состоянии представить и еще более). Поэтому при загрузке из Интернета (но не внутренней сети компании), мы должны считать ActiveForm или любой ActiveX орган потенциальным вирусом. Авторы ActiveForm и ActiveX контролов могут использовать цифровую подпись, которая только подтверждает, что данная вещь принадлежит автору, но ничего не говорит о самом органе. Internet Explorer имеет некоторые настройки безопасности, которые могут быть установлены в максимум (не принимать не подписанные ActiveX), в средние (давать предупреждение, но позволить решать пользователю) или слабые (принимать все без предупреждения). Разработчики подобно нам могут использовать средние, но конечный пользователь должен всегда использовать максимальный настройки безопасности.
Отвлекаясь от проблем с безопасностью, ActiveForm также требуется BDE на локальной машине (клиентская сторона) при использовании локальных баз и таблиц. Даже если алиас указывает, что база расположена на файл-сервере, BDE все равно должен быть установлен на клиентской машине. Использую MIDAS, TClientDataSets, DataSetProvider и Connection components, мы можем превратить ActiveForm в multi-tier приложение, когда база данных расположена на web сервере (или даже на отделном сервер баз данных).
Поэтому, наиболее правильным решением будет использовать ActiveForms только внутри Интранет, где мы можем контролировать клиентские машины и предоставлять им алиас до базы данных на файл сервере. При этом мы в состоянии обеспечить, что бы на клиентской машине были установлены все необходимые пакеты, и нам не нужно тратить большие деньги на обеспечение безопасности (внутри компании, я надеюсь, что все ActiveForms разработаны своими работниками).
Можно констатировать, что Delphi ActiveForm прекрасная вещь для Intranet.
Bug Report: ActiveX Controls in Internet Explorer 4.0 (or higher)
По заявлению Microsoft, "в связи с архитектурными изменениями в Internet Explorer 4.0 (и выше), что требуется для поддержки более широкого спектра более эффективных контролов, некоторые ActiveX контролы могут выполняться не совсем так, как это было в Explorer 3.0. Основная причина в том, что эти контролы разработаны не в Apartment Model Aware."
В Delphi 4 эта проблема разрешена и ActiveForm сделанные в Delphi 4 (и выше) теперь поддерживают Apartment threading model.
5. Delphi Web Modules (internet)
С помощью JBuilder возможно разрабатывать 100% pure Java апплеты, приложения., но мы не должны забывать и о том, что с помощью Дельфи так же можно создавать интересные Интранет решения используя такие вещи как ActiveForms и web modules…
5.1. Web Modules
ActiveForm это великое решение для Интранет, когда само приложение исполняется на клиентской машине. Для подлинно независимых от платформы решений, мы должны сфокусировать наше внимание на web сервера. В этом случае, мы можем использовать Delphi для написания CGI или WinCGI приложений, или ISAPI/NSAPI (Internet или Netscape Server API) DLL расширений для web сервера. Мы можем использовать HTML на клиентской стороне, с помощью CGI форм посылая данные от клиента на сервер, в то же время в ответ генерирует динамические HTML страницы.
Написание CGI, WinCGI или ISAPI/NSAPI с помощью Дельфи не совсем тривиальная задача. Особенно переключение от одного решения к другому может оказаться очень трудным, так как поставщики продуктов третьих сторон, часто используют различные пути поддержки своих серверных Интернет приложений, например WebHub.
Delphi 3 и 4 Client/Server (а также Delphi 4 Professional с дополнениями) и Delphi 5 Professional часто приходят со специальными мастерами (Wizard) и компонентами для поддержки такого рода серверных приложений, называемых как Web Modules (или также известные под названием WebBroker). Используя Web Module, мы можем создавать CGI, WinCGI и ISAPI/NSAPI серверные приложения, и в этом случае мы можем переходить от одного типа к другому, самом приложение полностью абстрагируется от деталей реализации. Единственная разница (учитывая тот факт, что ISAPI DLL остается загруженным на Web сервере, а CGI EXE нет) в том что, ISAPI приложение легче отлаживать, используя IntraBob, чем CGI приложение. В существующем проекте с Web модулем отсутствует возможность определения, что используется, CGI или ISAPI/NSAPI приложение; только главный модуль проекта содержит эту информацию (которую можно изменить, что бы перейти к другому типу Web серверного приложения). Я думаю, что очень важная вещь: программист использует один набор компонент для обработки WebActions, WebRequests, WebResponses и т.д.