Подтвердить что ты не робот

Ресурсы для веб-разработки/хостинга Cobol

Я работаю в довольно большой компании здесь, в Германии, и получил работу по созданию на ней основного веб-сайта, который будет включать:

  • Статическое содержимое; Информация и презентации
  • Область сотрудников (около 6000 сотрудников), в которых представлены различные вещи из календарей, описания должностных обязанностей, какие-то группы.
  • Слишком много других динамических вещей, которые я не могу перечислить здесь

Я решил использовать COBOL для работы, это может быть очень недооценено, но это очень мощный язык, особенно для бизнес-приложений, и, как говорят мои коллеги, создание веб-версии (2.0).

Мне также нужно использовать COBOL, потому что в нем запрограммирована вся бэкэнд-система и транзакция компании (некоторые мелкие части были запрограммированы также в LISP, я точно не знаю почему). Я также получил API, который позволяет легко использовать COBOL с MySQL.

Это большой проект, и, вероятно, потребуется более 2-х месяцев его программирования.

  • Что я должен ожидать при создании огромного веб-приложения в COBOL?
  • Доступны ли веб-фреймы для COBOL? Какой-то MVC?
  • Есть ли хорошие ресурсы для практического веб-разработки с COBOL?

Заранее спасибо

4b9b3361

Ответ 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.