16

私はここドイツのかなり大きな会社に雇われており、メインのウェブサイトを作成する仕事に就いています。

  • 静的コンテンツ。情報とプレゼンテーション
  • 従業員エリア (約 6000 人の従業員)
  • ここにリストできない他の動的なものが多すぎます

私はこの仕事に COBOL を使用することにしました。非常に過小評価されているかもしれませんが、特にビジネス アプリケーションや、同僚が言うように Web (2.0) 開発では非常に強力な言語です。

また、会社のすべてのバックエンドおよびトランザクション システムが COBOL でプログラムされているため、COBOL を使用する必要があります (いくつかの小さな部分も LISP でプログラムされていましたが、正確な理由はわかりません)。また、MySQL で COBOL を簡単に使用できるようにする API も受け取りました。

これは大規模なプロジェクトであり、プログラミングにはおそらく 2 か月以上かかるでしょう。

  • COBOL で巨大な Web アプリを構築する場合、何を期待する必要がありますか?
  • COBOL 用の Web フレームワークはありますか? ある種のMVC?
  • COBOL を使用した実用的な Web 開発に適したリソースはありますか?

前もって感謝します

4

6 に答える 6

18

COBOL で巨大な Web アプリを構築する場合、何を期待する必要がありますか?

時間がかかります。Django、Ruby on Rails、CodeIgniter などのフレームワークは、Web サイトを短時間で作成できるように特別に設計されています。

これらのフレームワークのほとんどは、機能する動的コンテンツ Web サイトを 20 分で構築できます。COBOL はできません。非常に速く入力できない限り、最新のツールを使用してサイトを学習および構築できる時間内に実行可能なコードはほとんどないでしょう。

COBOL 用の Web フレームワークはありますか? ある種のMVC?

この質問をすることは、COBOL を使用するという選択が非常に悪い考えであることを示しています。

通常の戦略は、最初にフレームワークを選択することです。フレームワークを選択したら、そのフレームワークを活用するために必要な言語に耐えます。

ただし、常にhttp://www.coboloncogs.org/HOME.HTMがあります。

COBOL を使用した実用的な Web 開発に適したリソースはありますか?

http://search.barnesandnoble.com/COBOL-Programming-Using-the-NET-Framework/Ronald-D-Reeves/e/9780130668431

実際の Web 開発は、Web 固有のフレームワークで行われます。多数の Python Web フレームワーク、Ruby on Rails、任意の PHP フレームワーク、任意の Java フレームワーク。彼らは、Web サイトを迅速かつ安価に構築することに高度に特化しています。

COBOL は、このために高度に特化されていません。また (i シリーズ以外では) Web 開発に COBOL を真剣に検討する人もいません。

できるだけ多くの外部ライブラリを使用し、できるだけ少ない COBOL を作成することをお勧めします。OpenCOBOL の COBOL to C 機能を多用して C 言語 API を操作し、事実上、COBOL ラッパーを使用して C でサイトを構築する必要があります。

于 2010-03-29T17:21:13.740 に答える
12

このためにCOBOLを使用しないでください。将来このサイトをサポートしなければならない人は誰でも、もっと...最新のツールを選んでくれてありがとう。

Webフレームワークを使用して、PHP、ASP.NET MVCなどのフロントエンドを作成することをお勧めします。次に、そのツールを許可するAPI(または必要に応じて何らかのインターフェイスを備えた別のプロセス)を作成します。 COBOLバックエンドと通信します。これにより、フロントエンドでWebフレームワークを使用できるようになります。これにより、企業のCOBOLへの多額の投資を活用できるようになります。

于 2010-03-29T17:04:27.807 に答える
8

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>

加えて、OpenCOBOL FAQ でこれをテストしたとき、Vala WebKit バインディングを利用して、COBOL に組み込まれた WebKit ブラウザーを使用していました。魅力を発揮します。CGIを処理するブラウザを制御するCOBOL。

于 2012-12-02T16:38:54.330 に答える
5

ほとんどの人が COBOL で Web アプリケーションを開発したときの最初の反応は非常に否定的です。

一般的に、フロント エンドの Web 開発に COBOL を使用しないことをお勧めします。これは、この種のアプリケーションを構築するための事前にパッケージ化されたサポートが多数付属しているツールが他にあるためです。サポートは通常、ライブラリ アドオンと Web サービスへの事前構築済みインターフェイスを通じて提供されます。実装言語自体はそれほど重要ではありません。

一例として、Ruby on Rails は、Ruby (言語) を使用してすべてを「接着」する MVC モデルに基づくアプリケーション フレームワークです。Rails フレームワークに固執している限り、開発作業のかなりの部分が蒸発します。ただし、フレームワークを壊すと、壊れてしまう可能性があります。Ruby on Rails などのフレームワークの使用は、すべてをゼロから制御する新しい開発に理想的です。

あなたの状況多少異なる場合があります。私の理解が正しければ、新しい Web アプリケーションに統合する必要がある COBOL アプリケーションと mySQL データベースのベースができました。Rails フレームワークは、このコンテキストで特に役立つ場合とそうでない場合があります。それはすべて、「途中で会う」方法に依存します。強力な Web 対応ツールを使用して、COBOL ベースのバックエンドで Web アプリケーションをフロントエンドすることは、かなり一般的な業界慣行です。この 2 つを一緒にすることは、かなりプラットフォーム固有の芸術形式です。

同じコメントが他の Web アプリケーション フレームワークとツール セットにも当てはまります。例として Ruby on Rails を使用しました。要するに、COBOL を使用して Web アプリケーションを作成することについてあまり考えたことがない人 (その中には私も含まれています) がいます。

上記にもかかわらず、あなたのショップでは openCobol を使用していることに気付きました。これにより、COBOL のみのソリューションを構築することが妥当な見通しになる可能性があります。多くの COBOL 実装とは異なり、openCobol は「Web 対応」になっており、データベースに依存しない抽象レイヤーを備えて いるため、mySQL データベースを取得するのは非常に簡単です。Web 対応は、C アプリケーション バイナリ インターフェイス (ABI) を使用する openCobol の結果の一部です。C ABI は、混合言語環境での作業を大幅に容易にし、CGI (Common Gateway Interface) との対話をほとんど簡単にします。この例からわかるように。

OpenCobol は Web アプリケーションの構築を実現可能にしますが、実用的でしょうか? 前述のように、文書化された Web アプリケーション フレームワークを利用できる場所がない限り、多くのことを自分で行うことになります。質問を投稿するときに、すでにこの結論に達している可能性があると思います。私の知る限り、そのようなフレームワークを開発することも可能ですが、まだ存在していません。このプロジェクトを進めると、openCobol の Web アプリケーション フレームワークの開発に貢献できるかもしれません。

受け入れられた回答の「Cobol on Cogs」の参照が少し不公平であることがわかりました。あなたは深刻な質問をし、完全に深刻な回答に値しました。このタイプの参照は、おそらく、COBOL に対する「赤い首」の閉鎖的な考え方を反映している可能性があります (はい、私は準備ができており、これに対する反対票を期待しています)。

于 2010-03-30T20:31:25.543 に答える
4

いくつかのレガシー COBOL API と統合する必要があるために Cobol を使用する必要がある場合は、Cobol を使用して、RESTful (または同様の) API を介してデータを公開するのはどうですか。次に、Web アプリを Django のような最新の方法で作成します (これは非常に優れています)。その後、Python Web アプリは、Cobol で提供している RESTful API を介して必要なデータに簡単にアクセスできます。

これにより、ジョブごとに適切なツールを使用できるようになります。つまり、Web アプリ用の最新の Web アプリ フレームワークと、Cobol API しかないデータを公開するためのいくつかの Cobol コードです。

于 2010-03-29T22:32:07.610 に答える
1

Microfocusは、COBOL が Web サービスとやり取りできるようにする Enterprise Server と呼ばれる製品を提供しています。

COBOL プログラム A と別の COBOL プログラム B があり、A がインターフェイス セクションを介して B を呼び出す場合、このツールを使用すると、B のインターフェイス セクションを Web サービスとして公開できます。

次に、プログラム A に対してクライアント プロキシを生成すると、A は Web サービスを介して B を呼び出すことができます。

もちろん、B には Web サービスがあるため、他の種類のプログラム (コマンド ライン、Windows アプリケーション、Java、ASP など) もそれを呼び出すことができます。

また、COBOL プログラム用の .NET IL へのインタープリターを提供する別の製品 "COBOL.Net" もあります。

これは .NET プラットフォーム上にあるため、C# などと組み合わせることができます。

これにより、両方の長所を活かすことができます。既存の COBOL バックエンドを維持しながら、ASP / MVC / Struts / JSP などの最新ツールを使用して Web アプリケーションを開発できます。そして、この 2 つを Web サービスで連鎖させます。

于 2010-03-29T19:51:14.973 に答える