2010-03-29 6 views
17

내가 독일에서 여기에 상당히 큰 회사에 고용과 기능을 것 그것의 주요 웹 사이트를 만들 수있는 작업 가지고있어 :코볼 웹 개발/호스팅 자원

  • 정적 내용을; 정보 및 일정, 작업 설명, 그룹의 어떤 종류의 다양한 일들을 갖춘 발표
  • 직원 영역 (6000 주위 명)
  • 너무 많은 다른 동적 일들이 여기 나열 할 수 없습니다

나는 결정했다 이 작업에 COBOL을 사용하는 것은 매우 과소 평가 될 수 있지만 특히 비즈니스 앱용으로는 매우 강력한 언어이며 동료 (web) (2.0) 개발에서도 그렇습니다.

또한 회사의 모든 백엔드 및 트랜잭션 시스템이 프로그래밍되어 있기 때문에 COBOL을 사용해야합니다 (일부 작은 부분은 LISP에서도 프로그래밍되었으므로 정확히 이유는 모르겠습니다). 또한 MySQL에서 COBOL을 쉽게 사용할 수있는 API를 받았습니다.

이것은 큰 프로젝트이며 프로그래밍하는 데 2 ​​개월 이상 걸릴 것입니다.

  • 거대한 웹 응용 프로그램을 COBOL로 만들 때 무엇을 기대해야합니까?
  • COBOL 용 웹 프레임 워크가 있습니까? MVC의 일종?
  • COBOL을 이용한 실질적인 웹 개발을위한 훌륭한 자료가 있습니까? 사전에

덕분에

+1

플랫폼은 IBM i 시리즈 (AS/400이라고도 함)입니까? –

+0

Pete Duncanson :이 질문에 대한 농담이 아닙니다.이 프로젝트에 COBOL을 사용해야하고 모든 사람들이 말하는 것처럼 나쁘지 않다고 들었습니다. S.Lott : 아니, OpenCobol을 사용하여 프로젝트를 컴파일 한 다음 CGI에 바인딩합니다. 프로젝트의 시작일 뿐이므로이 프로세스에 익숙하지 않습니다. 나쁜 영어로도 유감스럽게 생각합니다. 독일어 도요. – felixm

답변

16

거대한 웹 응용 프로그램을 COBOL로 빌드 할 때 무엇이 ​​필요합니까?

시간이 오래 걸립니다. Django, Ruby on Rails 또는 CodeIgniter와 같은 프레임 워크는 웹 사이트를 만들 때 특별히 설계되었습니다.

이러한 프레임 워크의 대부분은 20 분 내에 작동중인 동적 콘텐츠 웹 사이트를 구축 할 수 있습니다. 코볼은 할 수 없습니다. 정말 빨리 입력 할 수있는 것이 아니라면, 더 이상 현대적인 도구로 사이트를 학습하고 구축 할 수있는 시간에는 거의 코드를 작성하지 못할 것입니다.

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로 작성하는 것이 가장 좋습니다. C 언어 API로 작업하고 COBOL 랩퍼를 사용하여 C로 사이트를 빌드하려면 Open COBOL의 COBOL-C 기능을 많이 사용해야합니다.

+6

풀 타임 "하드 코어"COBOL 프로그래머이자 "소규모"웹 개발자로서, 나는 S.Lott에 동의해야합니다. 프론트 엔드 웹 개발에 COBOL을 사용하지 마십시오! 그것은 정말로 상처를 입을 것입니다! 반면에 COBOL 시스템을 활용하여 웹 기반 응용 프로그램에 백엔드 지원을 제공하는 것이 합당한 선택 일 수 있습니다. – NealB

+0

@NealB : 많은 사람들은 정확하게 웹 프론트 엔드가 COBOL 프로그램을 통해 백엔드 처리를 시작합니다. –

+0

NealB와 마찬가지로 COBOL을 사용하여 기존 백엔드 시스템과 인터페이스합니다. 웹 파트는 COBOL이 만들어진 응용 프로그램 유형과 매우 다릅니다. 웹 서버와의 인터페이스, HTTP 사용, 원시 양식 데이터 처리, HTML 및 JSON 생성에 대해 생각해보십시오. COBOL이 다른 시스템이 기본적으로 지원하는 작업을 수행하는 데 많은 시간이 소요됩니다. 웹 프레임 워크로 이동하여 기존 시스템의 기능을 노출하고 COBOL을 사용하여 해당 서비스를 구현하는 REST 또는 SOAP 기반 서비스 계층을 작성하십시오. – Kwebble

9

, 이것에 대한 COBOL을 사용하지 마십시오 제발, 제발. 앞으로 사이트를 지원해야하는 사람은 더 현대적인 도구를 선택해 주셔서 감사합니다.

웹 프레임 워크를 사용하여 PHP, ASP.NET MVC 등과 같은 프론트 엔드를 작성하는 것이 좋습니다. 그런 다음 API (또는 필요한 경우 인터페이스의 일종으로 별도의 프로세스)를 만듭니다. 도구가 COBOL 백엔드와 대화 할 수있게 해줍니다. 이렇게하면 프론트 엔드에서 웹 프레임 워크를 사용할 수 있습니다 (어디에서 빛나는 지). 회사에서 COBOL에 대한 막대한 투자를 활용할 수 있습니다.

+0

나는 COBOL을 사용해야한다고 말했다. – felixm

+5

@felixm : "COBOL을 사용하기로 결정했습니다"라는 잘못된 결정을 내린 것처럼 들립니다. "COBOL을 사용해야합니다."다른 사람이 나쁜 결정을 내리는 것처럼 들립니다. 누가 특히 -이 나쁜 결정을 내리고 있습니까? 왜 COBOL을 사용해야합니까? 누가 당신을 강하게 끌고 있습니까? –

+2

사용하기로 결정했다고 생각 했습니까? 어쨌든 PHP, ASP.NET MVC 등과 같은 프론트 엔드를 작성하는 웹 프레임 워크를 사용하는 것이 좋습니다. 그런 다음 API (또는 필요한 경우 인터페이스의 일종으로 별도의 프로세스)를 만듭니다. COBOL 백엔드와 대화 할 수있는 도구. 이렇게하면 프론트 엔드에서 웹 프레임 워크를 사용할 수 있습니다 (어디에서 빛나는 지). 회사에서 COBOL에 대한 막대한 투자를 활용할 수 있습니다. –

1

Microfocus은 COBOL이 웹 서비스와 상호 작용할 수있게 해주는 Enterprise Server라는 제품을 제공합니다.

COBOL 프로그램 A와 다른 COBOL 프로그램 B와 A가 인터페이스 섹션을 통해 B를 호출하면이 도구를 사용하여 B의 인터페이스 섹션을 웹 서비스로 노출 할 수 있습니다.

프로그램 A의 경우 클라이언트 프록시를 생성하고 A는 이제 웹 서비스를 통해 B를 호출 할 수 있습니다.

물론 B가 웹 서비스를 가지고 있기 때문에 다른 유형의 프로그램 (명령 줄, Windows 응용 프로그램, Java, ASP 등)도 이제 호출 할 수 있습니다.

또한 COBOL 프로그램 용 .NET IL에 대한 인터프리터를 제공하는 다른 제품 "COBOL.Net"이 있습니다.

이 .NET 플랫폼에 있기 때문에, 당신은 믹스 앤 매치 할 수 있습니다 C 번호 등

이 당신에게 두 세계의 최고 수 있습니다로. 기존 COBOL 백엔드를 유지하지만 최신 도구로 웹 응용 프로그램을 개발할 수 있습니다. ASP/MVC/Struts/JSP. 그리고 두 가지를 웹 서비스와 함께 연결합니다.

+0

원본 포스터에서 작성한 의견에 따르면 기본적으로 COBOL에서 C 로의 번역자 인 OpenCOBOL을 사용하고있는 것처럼 보입니다. 어쩌면 그들은이 "기능"을 활용하여 COBOL 상자에서 벗어날 것입니다. – NealB

1

일부 기존 COBOL API와 통합해야하기 때문에 Cobol을 사용해야하는 경우 Cobol을 사용하여 RESTful (또는 유사한) API를 통해 데이터를 노출하는 방법은 어떨까요? 그런 다음 Django와 같은 최신 웹 응용 프로그램을 작성하십시오 (매우 좋습니다). 그러면 Python 웹 앱은 Cobol에서 제공하는 RESTful API를 통해 필요한 데이터에 쉽게 액세스 할 수 있습니다.

이렇게하면 각 작업에 맞는 도구를 사용할 수 있습니다. 웹 앱용 최신 웹 앱 프레임 워크와 Cobol API 만있는 데이터를 표시하는 일부 Cobol 코드.

4

대부분의 사람들이 웹 응용 프로그램을 개발하는 초기 반응은 COBOL에서 입니다.

일반적으로 프런트 엔드 웹 개발에 COBOL을 사용하지 않는 것이 좋습니다. 에 대한 많은 패키지 된 지원이 함께 제공되므로이 응용 프로그램을 빌드하십시오. 지원은 일반적으로 라이브러리 과 웹 서비스에 대한 사전 구성된 인터페이스를 통해 제공됩니다. 구현 언어 자체는 그다지 중요하지 않습니다.

예를 들어, Ruby on Rails는 Ruby (언어) 을 사용하는 MVC 모델을 기반으로하는 응용 프로그램 프레임 워크로, 모두 함께 "붙입니다". Rails 프레임웍을 고수하는 한, 개발 노력의 상당 부분은 으로 증발합니다. 그러나 프레임 워크 을 깨면 잘게됩니다. Ruby on Rails와 같은 프레임 워크를 사용합니다. 처음부터 모든 것을 제어하는 ​​새로운 개발에 이상적입니다.

귀하의 상황 은 다소 다를 수 있습니다. 제대로 이해했다면, 에는 COBOL 응용 프로그램과 새로운 웹 응용 프로그램 에 통합되어야하는 mySQL 데이터베이스가 있습니다. Rails 프레임 워크는 특히 이거나이 컨텍스트에서 유용하지 않을 수도 있습니다. 그것은 모두 당신이 "어떻게 만나는가"에 달려 있습니다. 강력한 웹 기반 도구를 사용하여 COBOL 기반 백엔드를 사용하여 웹 응용 프로그램을 프런트 엔드 웹 응용 프로그램에 사용하는 것이 일반적인 업계 관례입니다. 두 가지를 함께 만들려면 은 플랫폼에 따라 다릅니다. 아트 형식입니다.

다른 웹 응용 프로그램 프레임 워크와 도구 세트에도 동일한 주석이 적용됩니다. 나는 단지 를 Ruby on Rails를 예로 들어 사용했습니다. 요점은 많은 사람들 (그들 중 나) 은 COBOL을 사용하여 웹 응용 프로그램에 대해 많은 생각을 해왔다.

위 내용을 무시하고 귀하의 가게에서 openCobol을 사용하고있는 것으로 나타났습니다. 이것은 COBOL 전용 솔루션 을 합리적인 전망으로 만들 수 있습니다. 많은 COBOL 구현과 달리 openCobol은 "웹 준비가 완료되었습니다"이며 은 database independent abstract layer 입니다. 따라서 mySQL 데이터베이스를 사용하는 것은 상당히 힘들어집니다. 웹 준비 상태는 부분적으로 C 응용 프로그램 바이너리 인터페이스 (ABI)를 사용하는 openCobol의 결과입니다. C ABI는 혼합 언어 환경에서 작업을 매우 용이하게해야하며 CGI (Common Gateway Interface)와의 상호 작용이 매우 수월합니다. ; 이 example에서 볼 수 있습니다.

OpenCobol을 사용하면 웹 응용 프로그램을 구현할 수 있지만 실용적입니까? 이전에 언급했듯이 에 문서화 된 웹 응용 프로그램 프레임 워크가없는 경우 은 직접 처리해야합니다. 질문을 게시 할 때 이미이 결론에 도달했을 수도 있습니다. 내가 알 수있는 한, 그러한 프레임 워크를 개발하면 도 가능하지만 아직 존재하지 않습니다. 이 프로젝트를 계속 진행한다면 어쩌면 openCobol 용 웹 응용 프로그램 프레임 워크 개발에 기여할 수 있습니다.

난 당신이 심각한 질문 물어 완전히 심각한 대답을 자격, 허용 대답 에서 "코볼 톱니의"참조 조금 불공평 발견했다.이 유형의 참조는 아마도 COBOL에 대한 "빨간색 넥킹 된"마음의 비트 을 반영 할 것입니다 (예, 준비가되었으므로 다운을 예상합니다).

5

CGI 및 AJAX 용 OpenCOBOL 샘플을 게시 한 후 추가하고 싶습니다. 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> 

그리고 나는 그것이 발라 웹킷 바인딩을 활용 COBOL에 포함 된 웹킷 브라우저로했다 OpenCOBOL 자주 묻는 질문이 테스트를 할 때 그냥 추가. 매력을 발휘합니다. CGI를 처리하는 브라우저를 제어하는 ​​COBOL.