ネットワークとミドルウェア

ネットワークとミドルウェア

   エンタープライズアプリケーションは、ネットワークを介して互いに通信を行います。単純なソケットベースの通信を使う場合ではソケットをシンプルに 利用できるのでRubyやその他のスクリプト言語が優れています。その他のエンタープライズアプリケーションは、CorbaやJava 2 Enterprise Edition、メインフレーム、あるいは様々なメッセージングの方式を利用しています。

   この本では最初に単純なソケットの例をあげて、HTTPベースのRubyアプリケーションを簡単に作ることができることを示しています。Rubyの HTTPクライアントがシンプルに作れると期待されているかもしれませんが、むしろHTTPサーバが容易に開発できることを示しています。

   Ruby WEBrickフレームワークは、ビジネスロジック以外のHTTPサーバとしての複雑な動作をカバーします。WEBrickのアプリケーションモデルは、 受信したHTTPリクエストによってフレームワーク上に実装された特定のメソッドを呼び出すところがJavaのサーブレットモデルとよく似ています。

   例えばHTTP GETリクエストに応答する場合、WEBrickフレームワークはこのリクエストを処理するために作成されたRubyサーブレット上のdo_GETオペ レーションを呼び出します。またWEBrickは、ファイルの処理(File-Handlerサーブレット)やCGIスクリプトの実行 (CGIHandlerサーブレット)などの様々なサーブレットを提供しています。

   WEBrickのような機能では、XML-RPCやSOAPのようなHTTPベースのプロセス間通信をRubyアプリケーションが非常に簡単に処理 できるようになります。もしXML-RPCアプリケーションと通信しなければならなかったり、システムにXML-RPCのサポート機能を追加するときは、 XML-RPCの完全な実装を備えているxmlrpc4rモジュールを使うと簡単に実現できます。同様にRubyはSOAP 1.1を実装したsoap4rライブラリをサポートしています。

   WSDLベースのサービスとのインテグレーションでは、soap4rが提供するWSDLDriverFactoryクラスがWSDLファイルを参照 し、WSDLが定義しているサービスに対する実行時のクライアントプロキシとスタブを生成します。またsoap4rが、WSDL文章で定義されたサービス をベースとしてRubyのコードを生成する「wsdl2ruby」と呼ばれる個別のツールを提供します。

   同じように、WSDLからJavaやC++のコードを生成するツールを提供しているWebサービスシステムは数多くあります。そのような同様のツー ルをよく知っている開発者にとって、wsdl2rubyの機能は、エンタープライズアプリケーションをRubyで開発するためのよい導入ポイントとなりま す。

   この本で記述されているすべての事柄をお薦めしたいと思っているのですが、ただCorbaの記述はいくつか問題があります。1991年から Corbaに関わり続けてきたこともあり、私は平均的な分散アプリケーションの開発関係者より多少知識があると思っています。特にCorbaの仕様につい ては、数年に渡ってかなりの貢献をしてきました。

   この本では、Schmidt氏はCorbaのような仕様は大変複雑であり、「SunやBorland、IBMのような大きな企業だけがCorbaを 実装する力のあり、そのような企業でさえも時々正しく利用することができない」と記述されています。しかし私の所属するアイオナテクノロジーズは、 1993年から一貫してCorba市場のリーダであり、もっとも拡大したときでも500名弱の従業員で構成されていました。このことから、明らかに Corbaの実装が大きな企業に限られていることにはなりません。

   さらにこの本は、次のようにCorbaについて記述しています。

   「結果的に、現状では混乱しています。ほんの少しのプログラミング言語にしか対応しておらず、ベンダーの個別の拡張のために多くのシステムが相互運 用できていません。このような古い"標準"は、すっかり、XML-RPCのような、新しくて新鮮な後継者に置き換わっています」

   この文章の中の3つの指摘はすべてが間違っています。まずCorbaの実装は、C、C++、Java、Smalltalk、Lisp、Ada、 Cobol、PL/I、PhthonやPerlといった様々なプログラミング言語の環境でサポートされています。次に異なるCobraの実装の間の相互運 用性は、実際にはScmidt氏が問題視しているよりも非常に良好です、最後に私は個人的にもXML-RPCに置き換えられたCorbaのプロジェクトを 知りません。

   このようなテクノロジの性能やユーティリティ機能は、実効的に比較することができない程に異なっているのです。現在でもCorbaは多くのテレコム と金融アプリケーションで稼動しています。さらに高い応答性能と拡張性で、これらのアプリケーションをカバーしていて、すぐに置き換えられることはありま せん。

   Corbaの歴史や記述の誤りにも関わらず、この本ではRubyとCorbaのインテグレーションへの理にかなったアプローチを紹介しています。 Rubyで完全なオブジェクトリクエストブローカ(ORB)を開発しようとするのではなく、Ruby Javaブリッジ(RJB)によってCorbaのJavaクライアントとRubyをインテグレーションすることを薦めています。

   RJBによってRubyアプリケーションはJavaのクラスをインポートし、Java Native Interface(JNI)を介して透過的に呼び出すことができます。これによりクライアントは簡単にCorbaサーバのアプリケーションを呼び出すこ とが可能です(この本では、この他のアプローチとして、Java virtual machine(JVM)上でのRubyの実装であるJRubyを利用するとCorbaクライアントにRubyを組み込むことを紹介しています)。

   またSchmidt氏は、CorbaクライアントがWEBrickサーバとなり、効率的にCorbaアプリケーションへアクセスするHTTPのルートを提供する方法も示しています。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30