СGI приложение в Builder 6
посетитель сайта выбирает нужные ему товары из этой таблицы, нажимает кнопку и получат окно с расчетом общей стоимости выбранных товаров. Как легче всего реализовать такую технологию? Что использовать JavaScript, или с помощью Builder 6 реализовать CGI приложение? В каком правильном направлении начать двигаться (задача в дальнейшем может усложняться) для решения подобных задач? Языки типа php, perl я не знаю.
Можно ли реализовать СGI приложение в Builder 6 используя компонеты СLX потому что сам сервер Linux?
Имеется таблица с ценами. Надо организовать следующее:
посетитель сайта выбирает нужные ему товары из этой таблицы, нажимает кнопку и получат окно с расчетом общей стоимости выбранных товаров. Как легче всего реализовать такую технологию? Что использовать JavaScript, или с помощью Builder 6 реализовать CGI приложение? В каком правильном направлении начать двигаться (задача в дальнейшем может усложняться) для решения подобных задач? Языки типа php, perl я не знаю.
Можно ли реализовать СGI приложение в Builder 6 используя компонеты СLX потому что сам сервер Linux?
потому, что гладиолус... нельзя. потому что CGI сценарий должен исполнятся на сервере, соответственно должен быть исполняемым файлом ELF или COFF формата.
так что учите perl (php), либо пишите на С++ но под Линукс.
потому, что гладиолус... нельзя. потому что CGI сценарий должен исполнятся на сервере, соответственно должен быть исполняемым файлом ELF или COFF формата.
так что учите perl (php), либо пишите на С++ но под Линукс.
Сервер находится у нас.
Сервер находится у нас.
я вас с этим поздравляю.
работать с exe форматом исполняемых файлов ваш сервер от этого все равно не научится ;)
я вас с этим поздравляю.
работать с exe форматом исполняемых файлов ваш сервер от этого все равно не научится ;)
Я конечно ландух в этих делах, но: squirL, CLX - специально сделано для работы в винде и линуксе. Другое дело, насколько гарантированно и правильно оно будет там работать.
CLX - специально сделано для работы в винде и линуксе
Сундуки! Подразумевается совместимость на уровне исходников, но никак не результирующего кода.
работать с exe форматом исполняемых файлов ваш сервер от этого все равно не научится ;)
Можно научить, и наверное, ты даже в деталях знаешь, как. Вот только нужно ли - большой вопрос.
нельзя в среде C++ Builder 6 написать CGI приложение, используя межплотформенные компоненты CLX?
Значит окончательное резюме такое:
нельзя в среде C++ Builder 6 написать CGI приложение, используя межплотформенные компоненты CLX?
Можно, но в виде сорцов для компиляции на платформе под которую пишется приложение.
Вопрос на засыпку. Леночка, если бы с переносимостью на уровне исполняемого кода все было так просто, JRE и иже с ними умерли бы во младенчестве
Можно научить, и наверное, ты даже в деталях знаешь, как. Вот только нужно ли - большой вопрос.
можно и тараканов научить строем ходить... ИМХО - если можно, но через ... и вопрос - нужно ли вообще, то нельзя.
Скажите напоследок, среда разработки Kylix это решение моей задачи?
Сам не пробовал , но теоретически -да.
А еще есть возможность запуска Win приложений в
*.nix это должен знать Ваш админ...
А еще можно сделать TCP/IP туннель через *.nix
сервер на другой - Win server, на котром
работает твой сервис.
Для специалиста, владеющего необходимыми
знаниями все равно - на какой OS это делать.
Есть успешные бизнес решения и на Windows и на *nix.
Выбор зависит от специалиста - как ему удобнее реализовывать.
Можно даже и свой порт открыть на IdHTTPServer
(что важно для бизнеса - он может и SSL шифрование поддерживать)...
Если будет интересно скину тестовый исходник
(для столь очаровательной и любознательной девушки исходников не жалко :) ).
Старайся выполнить как можно больше работы
на стороне клиента - используй JavaScript (DHTML)
Чем меньше обращений к серверу - тем лучше .
Сразу почувствуешь разницу на медленном интернете.
Смотри как работают другие сайты в интернете -
что хорошо и что плохо...
Кстати вот одна из серьзных ошибок , допущеных
разработчиками Web интерфейса почтового
сервера CommuniGate Pro - когда пользователь
хочет отметить все сообщения, чтобы что-то с
ними сделать - удалить, переместить и т. п.
- отправляется запрос на сервер, и вся страница
обновляется (20-40 сек), а можно было-бы
выполнить JavaScript локально за 0.5 сек...
(так я сделал в своем Web Mail Server.
Мой почтовый Web сайт работает на IdHTTPServer+SSL
и повторяет интерфейс программы
OutlookExpress , при этом работает по- максимуму
на стороне клиента используя DHTML)
Все что я умею по вопросу CGI это создать его в Windows c нужной функциональностью. Как это делать для Линукс я теперь смутно представляю благодаря форуму:
1. Мне нужно установить Kylix. (Что он из себя представляет? Там есть VCL?)
2. Сделать в этом самом Kylix-е нужное мне приложение CGI.
3. Разместить его на сервере Линукс.
Или:
1. Сделать CGI приложение в Builder 6 на основе CLX компонентов.
2. Протестировать его в среде Windows.
3. Получить еще один исполняемый файл откомпилировав исходный код моего CGI приложения в компиляторе для Линукс (в том же Kylix-e). (Какое на выходе получиться расширение? Сможет ли Kylix откомпилировать CLX компоненты?)
4. Этот файл надо установить на сервере Линукс.
Какой подход более правленый. В первом варианте придется изучать Kylix чтобы написать в нем CGI приложение, что весьма не хочется.
:(
в Линуксе понятие расширения отсутствует.
все что вам нужно - написать прогу и получить исполняемый файл. дальше - дело вашего системного администратора.
*nix это не файлы, а обобщенное название
операционных ситем
семейства Linux (RedHat, BSD, Unix...)
:)
Все не так сложно, и опять-же - спросить всегда можно. Если есть конкретный вопрос....
P.S.
А с передачей файлов как сделала - используешь
компоненты Indy или Server/ClientSocket ?
Удачи.
:)
По поводу пересылки файлов, я оставила код, который в конечном итоге стал для меня самым понятным и коротким:
Вот он (Indy):
Отправка:
try{
IdTCPClient1->Connect();
IdTCPClient1->WriteLn(OpenDialog1->FileName);
TFileStream *f = new TFileStream(OpenDialog1->FileName,fmOpenRead);
Screen->Cursor = crHourGlass;
IdTCPClient1->OpenWriteBuffer();
IdTCPClient1->WriteStream(f,true,true);
Screen->Cursor = crDefault;
IdTCPClient1->CloseWriteBuffer();
delete f;
IdTCPClient1->Disconnect();
}
catch(...)
{
ShowMessage("Не удалось!");
return;
}
}
Прием:
void __fastcall TForm1::IdTCPServer1Execute(TIdPeerThread *AThread)
{
AnsiString C_Path = "C:\\CHAT\\" + ExtractFileName(AThread->Connection->ReadLn());
TFileStream *f;
if(!FileExists(C_Path)){
f = new TFileStream(C_Path,fmCreate);
}
else
{
f = new TFileStream(C_Path,fmOpenWrite);
}
AThread->Connection->ReadStream(f,-1,true);
delete f;
}
Ну а пересылкой текста занимаются компоненты Server/ClientSocket, которые меня так измучили, что я готова была их убить!:)
Большое всем спасибо! Наконец-то в моей голове наступило прояснение, после Ваших ответов!
ну, как говориться, одна голова хорошо... а с телом лучше. :)
CGI - это независящий от платформы интерфейс. поэтому где вы напишите код - неважно.
Еще прошу не много разъяснений.
В Builder можно создать CGI как exe файл, также можно создать как альтернативу ISAPI как DLL.
Как было сказано выше надо использовать для создания CGI компоненты CLX в Builder 6, но если как сказал squirL что CGI - это независящий от платформы интерфейс, то получается можно использовать любые компоненты, ведь после компиляции Builder превратит приложение CGI в независящее от платформы?! Дайте разъяснение, так ли это? Хочется приступит к работе с пониманием того, что собираюсь делать :)
Еще прошу не много разъяснений.
В Builder можно создать CGI как exe файл, также можно создать как альтернативу ISAPI как DLL.
Как было сказано выше надо использовать для создания CGI компоненты CLX в Builder 6, но если как сказал squirL что CGI - это независящий от платформы интерфейс, то получается можно использовать любые компоненты, ведь после компиляции Builder превратит приложение CGI в независящее от платформы?! Дайте разъяснение, так ли это? Хочется приступит к работе с пониманием того, что собираюсь делать :)
ну я немного не то имел ввиду. дело не в любых компонентах, и не в том, что Builder сделает. упрощенно CGI - это интерфейс, позволяющий писать программы, обрабатывающие данные с HTML форм, и выдающие результат на страницу. не зависящий от платформы (и языка) значит - что все что надо, это предусмотреть корректную "точку входа" для параметров, и корректную "точку выхода" для результата. а на каком языке вы будете это делать, под какой Web-сервер или ОС - большой роли не играет. поэтому если у вас будет корректный участок кода принимающий параметры со страницы, то внутренняя логика работы приложения ничем не будет отличаться от обычного.