Ресурсы для веб-разработки/хостинга Cobol
Я работаю в довольно большой компании здесь, в Германии, и получил работу по созданию на ней основного веб-сайта, который будет включать:
- Статическое содержимое; Информация и презентации
- Область сотрудников (около 6000 сотрудников), в которых представлены различные вещи из календарей, описания должностных обязанностей, какие-то группы.
- Слишком много других динамических вещей, которые я не могу перечислить здесь
Я решил использовать COBOL для работы, это может быть очень недооценено, но это очень мощный язык, особенно для бизнес-приложений, и, как говорят мои коллеги, создание веб-версии (2.0).
Мне также нужно использовать COBOL, потому что в нем запрограммирована вся бэкэнд-система и транзакция компании (некоторые мелкие части были запрограммированы также в LISP, я точно не знаю почему). Я также получил API, который позволяет легко использовать COBOL с MySQL.
Это большой проект, и, вероятно, потребуется более 2-х месяцев его программирования.
- Что я должен ожидать при создании огромного веб-приложения в COBOL?
- Доступны ли веб-фреймы для COBOL? Какой-то MVC?
- Есть ли хорошие ресурсы для практического веб-разработки с COBOL?
Заранее спасибо
Ответы
Ответ 1
Что я должен ожидать при создании огромное веб-приложение в COBOL?
Это займет много времени. Такие структуры, как Django, Ruby on Rails или CodeIgniter, разработаны специально для создания веб-сайтов за очень короткое время.
Большинство этих фреймворков могут создавать рабочие сайты динамического контента за 20 минут. COBOL не может. Если вы не наберете очень быстро, у вас, вероятно, будет очень мало работоспособного кода за время, которое вы могли бы изучить, и создать сайт с помощью любого более современного инструмента.
Существуют ли веб-фреймы для COBOL доступный? Какой-то MVC?
Задавая этот вопрос, теперь указывает, что выбор использования COBOL - действительно, действительно плохая идея.
Обычная стратегия - сначала выбрать структуру. После выбора рамки, мы переносим язык, необходимый для использования этой структуры.
Однако всегда http://www.coboloncogs.org/HOME.HTM
Есть ли хорошие ресурсы для практическая веб-разработка с COBOL?
http://search.barnesandnoble.com/COBOL-Programming-Using-the-NET-Framework/Ronald-D-Reeves/e/9780130668431
Практическая веб-разработка осуществляется с помощью веб-фреймворков. Любая из десятков веб-фреймворков Python, Ruby on Rails, любая из фреймворков PHP, любая из фреймворков Java. Они очень специализированы, чтобы быстро и дешево создавать веб-сайты.
COBOL для этого не специализируется. Кроме того, за пределами i-Series никто серьезно не рассматривает COBOL для веб-разработки.
Ваша лучшая надежда будет заключаться в том, чтобы использовать как можно больше внешних библиотек и писать как можно меньше COBOL. Вы должны активно использовать функции COBOL для C OpenCOBOL для работы с API-интерфейсом на языке C и, в сущности, - создать свой сайт на C с помощью COBOL-обертки.
Ответ 2
Пожалуйста, пожалуйста, не используйте для этого COBOL. Любой, кто должен поддерживать сайт в будущем, поблагодарит вас за выбор более... современного инструмента.
Я рекомендую вам использовать веб-фреймворк для написания front-end, например PHP, ASP.NET MVC и т.д. Затем создайте API (или отдельный процесс с каким-то интерфейсом, если потребуется), который будет позвольте этому инструменту поговорить с вашим COBOL. Это позволит вам использовать веб-фреймворк на переднем конце - там, где он будет сиять, позволяя вам использовать значительную инвестицию вашей компании в COBOL.
Ответ 3
Выложив образец OpenCOBOL для CGI и AJAX, я бы просто хотел добавить, иди для этого. COBOL может делать интерфейсы.
>>SOURCE FORMAT IS FIXED
******************************************************************
* Author: Brian Tiffin, Francois Hiniger
* Date: 30-Aug-2008
* Purpose: Display the CGI environment space
* Tectonics: cobc -x cgienv.cob
* Move cgienv to the cgi-bin directory as cgienv.cgi
* browse http://localhost/cgi-bin/cgienv.cgi or cgienvform.html
******************************************************************
identification division.
program-id. cgienv.
environment division.
input-output section.
file-control.
select webinput assign to KEYBOARD.
data division.
file section.
fd webinput.
01 postchunk pic x(1024).
working-storage section.
78 name-count value 34.
01 newline pic x value x'0a'.
01 name-index pic 99 usage comp-5.
01 value-string pic x(256).
01 environment-names.
02 name-strings.
03 filler pic x(20) value 'AUTH_TYPE'.
03 filler pic x(20) value 'CONTENT_LENGTH'.
03 filler pic x(20) value 'CONTENT_TYPE'.
03 filler pic x(20) value 'DOCUMENT_ROOT'.
03 filler pic x(20) value 'GATEWAY_INTERFACE'.
03 filler pic x(20) value 'HTTP_ACCEPT'.
03 filler pic x(20) value 'HTTP_ACCEPT_CHARSET'.
03 filler pic x(20) value 'HTTP_ACCEPT_ENCODING'.
03 filler pic x(20) value 'HTTP_ACCEPT_LANGUAGE'.
03 filler pic x(20) value 'HTTP_COOKIE'.
03 filler pic x(20) value 'HTTP_CONNECTION'.
03 filler pic x(20) value 'HTTP_HOST'.
03 filler pic x(20) value 'HTTP_REFERER'.
03 filler pic x(20) value 'HTTP_USER_AGENT'.
03 filler pic x(20) value 'LIB_PATH'.
03 filler pic x(20) value 'PATH'.
03 filler pic x(20) value 'PATH_INFO'.
03 filler pic x(20) value 'PATH_TRANSLATED'.
03 filler pic x(20) value 'QUERY_STRING'.
03 filler pic x(20) value 'REMOTE_ADDR'.
03 filler pic x(20) value 'REMOTE_HOST'.
03 filler pic x(20) value 'REMOTE_IDENT'.
03 filler pic x(20) value 'REMOTE_PORT'.
03 filler pic x(20) value 'REQUEST_METHOD'.
03 filler pic x(20) value 'REQUEST_URI'.
03 filler pic x(20) value 'SCRIPT_FILENAME'.
03 filler pic x(20) value 'SCRIPT_NAME'.
03 filler pic x(20) value 'SERVER_ADDR'.
03 filler pic x(20) value 'SERVER_ADMIN'.
03 filler pic x(20) value 'SERVER_NAME'.
03 filler pic x(20) value 'SERVER_PORT'.
03 filler pic x(20) value 'SERVER_PROTOCOL'.
03 filler pic x(20) value 'SERVER_SIGNATURE'.
03 filler pic x(20) value 'SERVER_SOFTWARE'.
02 filler redefines name-strings.
03 name-string pic x(20) occurs name-count times.
procedure division.
* Always send out the Content-type before any other IO
display
"Content-type: text/html"
newline
end-display.
display
"<html><body>"
end-display.
display
"<h3>CGI environment with OpenCOBOL</h3>"
end-display.
display
'<a href="/cgienvform.html">To cgienvform.html</a>'
"<p><table>"
end-display.
* Accept and display some of the known CGI environment values
perform varying name-index from 1 by 1
until name-index > name-count
accept value-string from environment
name-string(name-index)
end-accept
display
"<tr><td>"
name-string(name-index)
": </td><td>"
function trim (value-string trailing)
"</td></tr>"
end-display
if (name-string(name-index) = "REQUEST_METHOD")
and (value-string = "POST")
open input webinput
read webinput
at end move spaces to postchunk
end-read
close webinput
display
'<tr><td align="right">'
"First chunk of POST:</td><td>"
postchunk(1:72)
"</td></tr>"
end-display
end-if
end-perform.
display "</table></p></body></html>" end-display.
goback.
И вот форма, которая добавляет немного AJAX в микс.
<html>
<head>
<title>Simple Ajax Example</title>
<script language="Javascript">
function xmlhttpPost(strURL) {
var xmlHttpReq = false;
var self = this;
// Mozilla/Safari
if (window.XMLHttpRequest) {
self.xmlHttpReq = new XMLHttpRequest();
}
// IE
else if (window.ActiveXObject) {
self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
self.xmlHttpReq.open('POST', strURL, true);
self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function() {
if (self.xmlHttpReq.readyState == 4) {
updatepage(self.xmlHttpReq.responseText);
}
}
self.xmlHttpReq.send(getquerystring());
}
function getquerystring() {
var form = document.forms['f1'];
var word = form.word.value;
qstr = 'w=' + escape(word); // NOTE: no '?' before querystring
return qstr;
}
function updatepage(str){
document.getElementById("result").innerHTML = str;
}
</script>
</head>
<body>
<form name="f1">
<p>word: <input name="word" type="text">
<input value="Go" type="button" onclick='javascript:xmlhttpPost("/cgi-bin/cgienv.cgi")'></p>
<div id="result"></div>
</form>
</body>
</html>
И просто добавив, когда я тестировал это для FAQ OpenCOBOL, он был с браузером WebKit, встроенным в COBOL, используя привязки Vala WebKit. Работает очарование. COBOL, управляющий браузером, который обрабатывает CGI.
Ответ 4
Первоначальная реакция большинства людей на разработку веб-приложения
в COBOL очень негативно!
В общем, я согласен и рекомендую не использовать COBOL для веб-разработки для веб-сайтов просто
потому что есть другие инструменты, которые поставляются с большим количеством предварительно упакованной поддержки для
построение такого рода приложений. Поддержка обычно осуществляется через библиотеку
надстройки и встроенные интерфейсы для веб-служб.
сам язык реализации менее важен.
Как один из примеров, Ruby on Rails является
основанная на модели MVC с использованием Ruby (язык)
"склеить" все это вместе. Справедливая часть ваших усилий по развитию испаряется
пока вы придерживаетесь рамки Rails. Однако нарушить структуру
и это может очень сильно нарушить вас. Я вижу использование таких фреймворков, как Ruby on Rails
идеально подходит для новой разработки, где вы все контролируете с нуля.
Ваша ситуация может быть несколько иной. Если я правильно понял, вы
имеют базу приложений COBOL и базу данных mySQL, которые необходимо интегрировать в
новое веб-приложение. Рамка Rails может быть или не быть особенно
полезны в этом контексте. Все зависит от того, как вы "встречаетесь посередине". это
довольно распространенная отраслевая практика использования мощных веб-инструментов для интерфейсов
веб-приложения с основами на основе COBOL. Сочетание двух
является довольно формальной формой искусства.
Те же комментарии относятся к любой другой структуре веб-приложений и набору инструментов. я просто
в качестве примера использовался Ruby on Rails. Суть в том, что не так много людей (я среди них)
много размышляли о том, чтобы открыть веб-приложение с помощью COBOL.
Не обращая внимания на вышеизложенное, я заметил, что вы используете openCobol в своем магазине.
Это может сделать строительство
единственное решение COBOL - разумная перспектива. В отличие от многих реализаций COBOL,
openCobol приходит "веб-готово" и
имеет независимый от базы данных абстрактный слой
поэтому получение вашей базы данных mySQL должно быть довольно безболезненным.
Готовность к Интернету частично является следствием openCobol, используя
C Application Binary Interface (ABI). C ABI должен значительно облегчить работу в
смешанной языковой среде и взаимодействует с CGI (Common Gateway Interface) довольно
много тривиально; как видно из этого примера .
OpenCobol делает возможным создание веб-приложения, но насколько он практичен? Как отмечалось ранее,
за исключением случаев, когда имеется документально оформленная структура веб-приложений,
в конечном итоге сделает многое из этого самостоятельно. Я думаю, вы, возможно, уже пришли к этому
заключение при отправке вашего вопроса. Насколько я могу судить, разработка такой структуры
также возможно, но еще не существует. Если вы продолжите работу над этим проектом,
возможно, вы могли бы внести вклад в разработку структуры веб-приложений для openCobol.
Я нашел ссылку "Cobol on Cogs" в принятом ответе
немного несправедливо, вы задали серьезный вопрос
и заслужил вполне серьезный ответ. Этот тип ссылок, вероятно, немного отражает
"красной шеи" замкнутой ориентации на COBOL (да, я готов и ожидаю
вниз голосов на этом).
Ответ 5
Microfocus предоставляет продукт под названием Enterprise Server, который позволяет COBOL взаимодействовать с веб-службами.
Если у вас есть программа COBOL A, а другая программа COBOL B и A вызывает B через секцию интерфейса, инструмент позволяет вам открыть раздел интерфейса B в качестве веб-службы.
Для программы A вы затем создаете клиентский прокси, и A теперь может вызывать B через веб-службу.
Конечно, поскольку у B теперь есть веб-служба, любой другой тип программы (командная строка, приложение Windows, Java, ASP и т.д.) теперь также может вызвать его.
У них также есть другой продукт "COBOL.Net", который предоставляет интерпретатор .NET IL для программ COBOL.
Поскольку это на платформе .NET, вы можете смешивать и сопоставлять с С# и т.д.
Это дает вам лучшее из обоих миров. Вы сохраняете существующий COBOL-сервер, но можете разрабатывать веб-приложение с помощью современных инструментов, например. ASP/MVC/Struts/JSP. И вы соединяете их вместе с веб-службой.
Ответ 6
Если вы хотите использовать Cobol, потому что вам нужно интегрироваться с некоторыми устаревшими API-интерфейсами COBOL, как насчет того, как вы используете Cobol для предоставления данных через некоторый API RESTful (или аналогичный). Затем напишите свое веб-приложение в чем-то современном, как Django (что очень приятно). Затем веб-приложение Python могло легко получить необходимые данные через API RESTful, который вы предоставляете в Cobol.
Это позволит вам использовать правильный инструмент для каждого задания: современная структура веб-приложений для веб-приложения и некоторый код Cobol для предоставления данных, к которым у вас есть только API Cobol.