Главная » Статьи » Программирование в Delphi |
Произведение Web-приложений в среде Delphi
период web-дизайна, подчас наиважнейшим квиталось возможность втиснуть на страницу как можно больше программы и сразить пользователя обширностью фантазии дизайнера, канула в лету. В моде - информационный дизайн и различные удобности ради пользователя. поганым тоном ограниченном считается одно только то, точно на сайте нет форума или гостевой книги, и самое страшное - о, боже - вы до сих пор верстаете каждую страницу вручную, вместо того, будто бы доверить сеё тоскливое и утомительное занятие скрипту. период первопроходцев HTML в недалеком времени закончится и решительно , и их место одолжатся профессионалы-программисты. собственно программисты, ибо уже в большей уровня от их умения построить удобный в использование сайт зависит его успех. Кроме прочего, теперь сайты образовывают совсем уж как программные продукты: объектом кто занят наполнением содержанием, ограниченном может не опасаться потеряться в html, java, cgi и иных ипостасях интернет-ноу-хау - администрирование сайта останавливается таким же привычным и удобным, ровно работа с текстовыми процессорами. Пока, правда, испытывается явный нехватка законченных продовольствий , на рамена которых можно было бы возложить все функции по поддержанию сайта в животрепещущем состоянии, забыв себе лишь вопросы по наполнению его содержанием. покудова же тяжелое бремя по созданию предоставленных систем, на основе которых будет действовать сайт, падает на рамена программистов, единственно вот-вот угнавшихся изумится потенциалами языка Perl или Java. И многие из них, проронить без гиперболизации , вышли, словно из гоголевской "Шинели", из Delphi. подлинно , данная сфера разработчика, дающая удобный интерфейс для зрительного программирования и широкие потенциала Object Pascal, столь мила сердцу российских программистов. однако , похоже, точно времена видоизменяются , и Delphi из общества создания обыкновенных настольных придатков , может пригодиться и в другом графике : для написания прикладных web-кодов . И действительно, что может иметься лучше: ограниченном знакомая слой разработки, вдоль и назло изученный слог , да и достаточно обширный круг док по программированию в Delphi - настоящее ли не плюсы творения web-приложений на Delphi. вожусь конечно и минусы: построенные программы навряд ли смогут удовлетворить тех, кто-то считает, что лучший web-сервер, данное сервер не от Microsoft. однако что поделаешь - вариация Delphi под Unix отсрочена пока до лучших пор . Зато посудите сами: передвижка программ в будущем ясном будущем можно будет сделать с незначительной кровью. однако отложим пока теорию в сторону, и обратимся к практике. Итак, творение web-приложения в среде Delphi, что называется акция за действием . образец из учебника В отличие от прочих аспектов создания дополнений в Delphi, о создании дополнений для web написано немного . Так ужасно мало, как из фолианта в книжку , из учебника в учебник путешествует один-одинешенек и тот же образчик . Не полно оригинальничать и мы - чем тривиальнее , тем лучше. Вообще, простейшее web-приложение на Delphi мало чем выдается , а правильнее ничем не отличается от создания программы для старинною доброй DOS. данное - простейшее консольное дополнение , запускаемое на стороне сервера и взаимодействующие с пользователем (в случае нужды ) через броузер. постройте в Delphi новый расписание - ту самую ограниченном давно запущенную всем Console Application. Вы получите ведомый со школьной скамьи, роль обычной паскалевской программы: program primer; {$APPTYPE CONSOLE} uses SysUtils; begin // Insert user code here end. ниже еще тривиальнее . Организуем решение кода HTML с подмогой команды writeln. writeln ('CONTENT-TYPE: TEXT/HTML'); writeln; writeln ('<html>'); writeln ('<head>'); writeln ('<meta HTTP-EQUIV="Content-Type" Content="text-html; charset=windows-1251">'); writeln ('<title>Delphi the best facility for making web-publications!</title>'); writeln ('</head>'); writeln ('<body bgcolor="white">'); writeln ('Hello, world!'); writeln ('</body>'); writeln ('</html>'); адресуете внимание на строку CONTENT-TYPE: TEXT/HTML, которая определяет отображение последующего содержимого, а именно шифра HTML. посланце CONTENT-TYPE: TEXT/HTML, надобно вывести малосодержательную строку иначе броузер может выдать уведомление об погрешности . нынче , когда дополнение закончено, осталось его скомпилировать и апробировать . Для проверки работоспособности кода вам потребоваться веб-сервер. Можно особо не утруждаться, наступит любой, даже стандартный ручной веб-сервер от Microsoft. придаток надо довольно разместить в папке изданий сервера (обыкновенно это - C:\Inetpub\ wwwroot) и запустить сам сервер. Теперь, если вы передадитесь по адресу http://localhost/primer.exe в броузере, вы должны хватить результат деяния данной кода - строку Hello, world! Вот и всё, простейшее web-приложение на Delphi намерено . трансляция параметров На самом процессе нам бы вряд ли понадобилось Delphi, ради создания сходных программ. Конечно, можно генерировать страницы исходя из различных соглашений , но тема в книге , как сведения условия отдать программе. И здесь попадает не всё так сложно, довольно вспомнить трансляцию параметров дополнению с поддержкой командной строки и попасть соответствующе. стремясь это, разумеется, увертка . Это ради приложения Delphi мы режем командной строкой, для пользователя же это адресная строка в броузере, то есть url. познаем на образчике . Необходимо построить приложение, какое выдает разнообразную информацию (к примеру, период , дату или то и другое сообща ) в подвластности от параметров, направленных в адресной строке броузера. чисто известно, вне данные в параметрах отзываются такие функции, будто ParamCount и ParamStr. Их-то мы и будем применять . program CgiDate; {$APPTYPE CONSOLE} uses SysUtils; begin writeln ('CONTENT-TYPE: TEXT/HTML'); writeln; writeln ('<HTML><HEAD>'); writeln ('<TITLE>Cgidate</TITLE>'); writeln ('</HEAD><BODY>>'); writeln ('<H1>образец передачи параметров</H1>'); writeln ('<HR>'); writeln ('<H4> if ParamCount >0 then begin if ParamStr (1) = 'date' then writeln (FormatDateTime('"настоящее " dddd, mmmm d, yyyy', Now)) else if ParamStr (1) = 'time' then writeln (FormatDateTime('"период " hh:mm:ss AM/PM', Now)) else if ParamStr (1) = 'both' then writeln (FormatDateTime('"настоящее " dddd, mmmm d, yyyy,' + '"<p> и время" hh:mm:ss AM/PM', Now)) else writeln ('Ошибка! неуверенный параметр: ' + ParamStr (1) + '.') end else writeln ('Параметр отсутствует.'); writeln ('</BODY></HTML>'); end. Не правда ли просто? ныне , если в адресной строке броузера вы наберете, сказать http://localhost/cgidate/exe?time, довольно сгенерирована страница, отражающая текущее период , http://localhost/cgidate/exe?date - соответственно дата, а при трансляции параметра both - протекающая дата и время. В случае если никакой из параметров дан не водился или он был неверен - возникнет сообщение об этом. предоставленные адреса и параметры можно непосредственно направить в кодировке HTML и генерировать потребные изменения на странице либо другие страницы переходя по соответствующим высылкам . подобает обратить интерес на то, словно передавать сведения через url. симптом вопроса изолирует параметр от адреса файла, с помощью симптома равенства web-дополнению передается важность данного параметра. столь как в адресной строке нельзя употреблять пробел, он заменяется на шестнадцатеричный кодировку в таблице ASCII, то есть %20. однако на самом деле, если некие сведения передаются от пользователя web-придатку , то обычно для настоящего используют конфигурации , а не url (вожделея одно второму не размешивает ). Попробуем и мы сотворить приложение, которое бы зарабатывало данные от пользователя, закинутые им в форму. Для начала, естественно, необходимо создать сам код HTML в каком бы наличествовала форма с полями ввода, кнопкой отправки и прочими нужными атрибутами. При этом form action обязан содержать адрес программы, которая будет зарабатывать данные. значительность method может быть одинаково как GET, так и POST. На самом тяжбе GET - это и есть трансляция параметров спустя url, надбавляя их к адресной строке, так как POST передает их приложению посредством стандартного потока ввода. которой из них лучше и удобней - решать вам, однако чаще итого метод GET используется собственно для генерации страниц (довольно взглянуть на url который возникает при работе на поисковых серверах), тогда как другой для - передачи предоставленных , отображать какие в адресной строке водилось бы ужасно накладно. далее необходимо построить приложение, которое бы адекватно смогло воспринять все настоящие данные со стороны пользователя. В случае если данные вручались с поддержкой метода GET проблем не будет - можно действовать как в предыдущем образце . Если же приложение зарабатывает данные от пользователя с помощью POST, всё несколько иначе. надобно будет считывать данные из переменной слоя , а для этого мы, натурально , должны знать данные переменчивые . Гюльчитай, обнаружь личико Нет в обществе тайн. необычно их наперечет у пользователя от web-дополнения . И если мы не знаем о пользователе какое -чисто личное, все прочее броузеры с воздушностью отдают web-серверу, решительно не беспокоясь о приватности и вожделениях того самого пользователя. данное , конечно, худо для пользователя, однако хорошо для разработчика web-дополнения , поскольку для него знания - немалая вещь. значит , данные от пользователя web-дополнению можно дать через непостоянные окружения. Вот список наиболее часто применяемых : GATEWAY_INTERFACE Поддерживаемая версия CGI. REQUEST_METHOD способ запроса, возможно быть чисто GET так и POST. HTTP_REFERER Адрес страницы (url), активирующей текущее придаток на web-сервере. PATH_INFO стезя переданный придатку расположенный между именем придатка и строкой запроса. QUERY_STRING Строка запроса, если метод - GET, добавляеться к url. REMOTE_HOST Имя хоста вытащенного пользователя. REMOTE_USER Имя удаленного пользователя. REMOTE_IDENT IP-адрес удаленного пользователя. HTTP_USER_AGENT Имя и вариант броузера вытащенного пользователя. С помощью предоставленных переменных можно получить исчерпывающую информацию о пользователе и передаваемых предоставленных для преданного проектирования вашего web-приложения. Конечно, настоящего хватит в том эпизоде , если вы не коллекционируетесь подобно большущему Брату выслеживать за каждым телодвижением пользователя. однако вернемся к поставленной проблеме - трансляции данных дополнению от пользователя через конфигурацию . Данные, какие передаются спустя QUERY_STRING в дополнение с подмогой метода POST, довольно просто выудить для приложения . жирнее листинг кода , выдающий копия некоторых изменчивых окружения и их значительности . Узнайте которое -что о домашнем броузере и web-сервере. program CgiVars; {$APPTYPE CONSOLE} uses Windows; сonst VarList: array [1..17] of string [30] = ('SERVER_NAME', 'SERVER_PROTOCOL', 'SERVER_PORT', 'SERVER_SOFTWARE', 'GATEWAY_INTERFACE', 'REQUEST_METHOD', 'PATH_TRANSLATED', 'HTTP_REFERER', 'SCRIPT_NAME', 'PATH_INFO', 'QUERY_STRING', 'HTTP_ACCEPT', 'REMOTE_HOST', 'REMOTE_USER', 'REMOTE_ADDR', 'REMOTE_IDENT', 'HTTP_USER_AGENT'); var I: Integer; ReqVar: string; VarValue: array [0..200] of Char; begin writeln('Content type: text/html'); writeln; writeln('<HTML><HEAD>'); writeln('<TITLE>CGI Variables</TITLE>'); writeln('</HEAD><BODY>'); writeln('<H1>CGI Variables</H1>'); writeln('<HR><PRE>'); for I := Low (VarList) to High (VarList) do begin ReqVar := VarList[I]; if (GetEnvironmentVariable (PChar(ReqVar), VarValue, 200) > 0) then else VarValue := ''; writeln (VarList[I] + ' = ' + VarValue); end; writeln('</PRE></BODY></HTML>'); end. За кадром В этой статье мы не коснулись второй и уж наверняка более обширной и сложной предмета , как творение ISAPI-приложений на Delphi. Вышеприведенные способы произведения приложений пригодны лишь в том эпизоде , если вам необходимо скорое , компактное и не слишком сложное web-дополнение . Если же вам надобен , к образцу , доступ к базам предоставленным , то аналогичный путь неприемлем. Для создания полномасштабных приложений для интернета в Delphi живет специальный помощник - Web Server Application. С его поддержкой можно сотворить приложение генерируещее динамические web-страницы, созданные на CGI, NSAPI или ISAPI. Единственное накладываемое ограничение - прямо web-сервер обязан работать на базе Windows. один-один-один-один-одинехонек из первостепенных преимуществ творения подобных дополнений именно в среде Delphi является то, словно вы продолжаете работать с визуальными элементами - настоящее значительно тривиальнее , чем произведение приложений в других мирах - вероятность ошибки в больших планах , где употребляется визуальное проектирование меньше, чем в тех, где-либо всё рисуется исключительно шифром . Кроме того, лекарства создания web-дополнений позволяют придатков уже живущие приложения в интернет-среду, словно , согласитесь, судьбоносно . Пока, бесспорно , Delphi не обладает большущим набором ингредиентов для web-дополнений , но, вероятно , уже должно версия данной среды заведет необходимыми. да и безотложно Delphi можно считать довольно удобным инструментом для произведения приложений, взаимодействующих с интернетом. Источник: http://www.yandex.ru | |
Просмотров: 1591 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |