本文へジャンプ

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

送信されたすべての情報は安全です。

  • 閉じる [x]

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む


送信されたすべての情報は安全です。

  • 閉じる [x]

企業単位のSOAにてWebサービスを扱う 第2回: 外部Webサービス・インターオペラビリティーを最大化

Judith M. Myerson, Systems Engineer and Architect
Judith M. Myerson はシステム・アーキテクト兼システム・エンジニアです。ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、RFID テクノロジー、そしてプロジェクト管理を含む数多くの分野を得意としています。

概要: 外部と内部のWebサービス間にある複数のSOAの外部Webサービスとのインターオペラビリティーを最大化しましょう。Judith Myerson氏は、それぞれのWebサービスのためのプラットフォーム、ロケーション、そしてサービスの種類をどのようにして変更できて、作成されるアプリケーションのビジネス・プロセスを実装するかを説明します。

日付:  2005年 2月 24日
レベル: 中級 この記事の原文:  英語
アクティビティー: 1259 ビュー
お気軽にご意見・ご感想をお寄せください: 


はじめに

企業単位のSOA(サービス指向アーキテクチャー、Service-Oriented Architecture)に関する記事のシリーズの第1回(「企業単位のSOAにてWebサービスを扱う 第1回: 複数のSOAで企業システムのギャップを埋める」、参考文献)を参照)では、複数のSOAからWebサービス(データ中心(data-centric)またはビジネス・ロジック)を再利用して企業内の制御のもとにある複合アプリケーションとして結合する方法を示すことにより、企業システムのギャップを埋めるシナリオについて考察しました。

Webサービスが企業の制御の外側にある場合、共有されたセマンティックと契約の義務に沿うかたちでWebサービスが外部的に相互運用することを保証すべきです。(例えばプロプラエタリーのような)セマンティックの誤解そして(マルチプラットフォームの相違点のような)契約上の抜け穴が、外部の企業Webサービス間にあるインターオペラビリティーの問題の原因となります。

この記事では、MRP(Manufacturing Resource Planning)そしてCRM(Customer Relationship Management)サービスを実装する4つの下記の例を示します。

  1. 企業のレガシー・アプリケーション
  2. 外部Webサービスへのダイナミック・リンク
  3. 外部WebサービスへのREST/SOAP(REpresentational State Transfer/Simple Object Access Protocol)要求の共存
  4. IBM® WebSphere® Application ServerまたはMicrosoft® Visual Studio .Netを使用するWebサービス・インターオペラビリティー

様々な兼ね合いを考慮するだけではなく、SOAのオーバーロードを回避するためにもシステムが抱え込む事ができる相互作用するSOAの最大数を判断するのも大切な事です。


企業のレガシー・アプリケーション

企業のレガシー・アプリケーションがビジネス・プロセスのモジュラー・コンポーネントに分割されていると想定します(図1を参照)。アプリケーションにある2つの重要なコンポーネント(MRPとCRM)は、長期的なアプリケーションの再コンパイルそして頻繁な変更を必要とします。


図1. 企業のレガシー・アプリケーション
図1. 企業のレガシー・アプリケーション

Webサービスへのダイナミック・リンク

運用の効率をあげるには、アプリケーションからそれらのコンポーネントを抽出してから外部Webサービスとして再構築するのがより道理にかなっていると思われます。そうすれば、大型で複雑かつ長期的なアプリケーションを再コンパイルせずとも、両方のWebサービスのコードを変更できます。

SOA#1(図2を参照)にてよりコンパクトにまとめられたアプリケーションはSOA#2にある外部企業のMRPのWebサービスとのダイナミック・リンクを確立でき、その次にそれはSOA#3にある外部企業のCRMのWebサービスに向けられます。要求を受信すれば、CRMのWebサービスはさらなる処理のためにアプリケーションに要求と情報を送信します。


図2. Webサービスへのダイナミック・リンク
図2. Webサービスへのダイナミック・リンク

それぞれのリンクのメカニズムは、要求またはメッセージの送信、応答の受信、またはSQLやHTTPのオペレーションの実行としての形を成します。MRPのコンポーネントに欠けるアプリケーションをラップして、それがMRPのWebサービスに要求を送信するようにすることも可能です。


ソフトウェア・フレームワーク

ひとつのプロトコルから別のプロトコル、そしてひとつのソフトウェア・フレームワークから別のソフトウェア・フレームワークに切り替える場合に、プラットフォーム間のインターオペラビリティーの問題が発生することもあり得ることを念頭に置いてください。SOAP、REST、.Net Framework、EJB(Enterprise Java Beans)、そしてJMS(Java Messaging Service)は、その例の一部です。

HTTPを介する.NetのWebサービスを呼び出す方法には3種類(HTTP GETオペレーション、HTTP POSTオペレーション、SOAP)あります。Webサービスを早急に呼び出す必要があり直ぐにSOAPクライアントが使用可能ではない場合には、GETとPOSTのオペレーションは便利です。RESTを使うことにより、PerlスクリプトにてHTTPを介してGET、POST、PUT、そしてDELETEを実行できます。このスクリプトでは、SQLクエリーそして簡素なメッセージ・キューを指定できます。

SOAPクライアントが使用可能であれば、RESTとSOAPのどちらを使用するかの簡潔な選択法をここに示します。アプリケーションがリソース・ベース(resource-based)であれば、RESTを選択しましょう。アプリケーションがアクティビティー・ベース(activity-based)であれば、SOAPに決まりです。RESTでは、複数のオペレーションがHTTPを介してリソースのシリーズにて実行されることをクライアントは要求するかも知れません。SOAPベースの要求では、(クライアントが実行を要求する可能性のある)それぞれのアクティビティー指向のサービスに呼び出しオペレーションを1つだけ必要とします。


呼び出しフレームワーク(WSIF)

SOAP要求を構成するには、(Webサービスにどのようにしてアクセスしてそれがどのオペレーションを実行するかを記述する言語である)WSDL(Web Services Description Language)を必要とします。Webサービスのコードをカスタマイズせず、レガシー・アプリケーションを再コンパイルせずとも、サービスの種類を指定できます。

WSDLが多種にわたるソフトウェア・フレームワークと機能することを保証するには、異種類のソフトウェアの正規化された記述としてWSDLを使用することを可能にするIBMのWSIF(Web Services Invocation Framework)を活用する方法があります。それは、記述言語の周辺にあるAPIを介してプロトコルやロケーションと関係ない形でWSDLにアクセスできることを意味します。また、多種にわたる条件や例外のもとにあるプロトコルまたはロケーションの切り替えを可能にするWSDLを使用する複合アプリケーションとして、Webサービスを結合することが可能であることも意味します。

WSIFを構築するには、どのプロバイダーを使用するかに関係なく、最小要件を満たさなくてはなりません。オプションは下記の項目を含みます。

  • JAXP XMLパーサー
  • Java APIのWSDL
  • Apache SOAP
  • Apache Axis

RESTとSOAPの共存

SOAP要求と異なり、REST要求はWSDLに依存しませんが、RESTオペレーションを検証するにはXMLスキーマを必要とします。WSDLはスキーマ仕様をサポートしますので、RESTとSOAPは(複合Webサービス・アプリケーションから外部Webサービスへの)要求として共存できます。

例えば、SOA#1にあるアプリケーション(図3参照)はまずSOA#2にあるMRPのWebサービスからアクティビティー指向サービスを呼び出すためにSOAP要求を送信し、それから同一のMRPのWebサービスへリソース指向サービスのシリーズを操作するためのREST要求を送信します。すべてのSOAPベースの要求はIBM WSIFをベースにしています。


図3. RESTとSOAPの共存
図3. RESTとSOAPの共存

ご覧のとおり、SOA #1にあるアプリケーションはUnixまたはLinuxのサーバーにて実行され、SOA#2にあるMRPのWebサービスはIBM WebSphere Application Server(Application Server)にて実行されます。SOAPベースの要求においては、WSDLの正規化されたバージョンにあるロケーションとサービスの種類を変更するのにWSIFを使うことができます。


WebSphereと.Netの製品のインターオペラビリティー

より巨大な企業システムにあるLinuxまたはWindowsのプラットフォームでの開発プロジェクト用に更に複雑なWebサービスを作成するのであれば、IBM Rational® Application Developer for Websphere Softwareを考慮してみてください。それはUML(Universal Modeling Language)Visual Editor for Java™ and EJBと一緒に手に入れられ、Eclipseのオープン・ソース・プラットフォームにて実行できますので、開発環境の拡張を可能にします。Microsoft Visual Studio.Netを使用することもできます。

複数のビジネス・プロセスにあるモジュラーのWebサービス・コンポーネントとしてアプリケーション・ロジックを区切るのに、どちらのソフトウェアを使用するのも大丈夫です。Webサービス・トランザクションと視覚的に相互作用することを可能にするWeb Services Navigator(Rational Application Developerのプラグイン)を提供することにより、IBMはその上のレベルを目指します。

もしもMicrosoft .NetのプラットフォームにてWebサービス作成のためにVisual Studio.Netを使用しているのであれば、Application ServerにてそのWebサービスを実行できます。それは、2つのプラットフォーム(参考文献を参照)の間にてWebサービス・インターオペラビリティーの契約を結べることを意味しますので、あとは両方のプラットフォームに共通するWSDLを作成するのみです。

例えば、UnixまたはLinuxのサーバーにて実行されるアプリケーションはまずSOAP要求を送信し、Application Serverにて実行されるMRPのWebサービスからアクティビティー指向サービスを呼び出します(図4を参照)。それからアプリケーションはリソース指向サービスのシリーズを操作するためにREST要求を同一のMRPのWebサービスに送信します。要求を受信すれば、SOA#3にあるCRMのWebサービスは元々のアプリケーションに向けて要求または情報を送信します。


図4. 複数プラットフォームを伴う外部Webサービス
図4. 複数プラットフォームを伴う外部Webサービス

図のとおり、SOA#3にあるCRMのWebサービスは.Netプラットフォームで実行されApplication Serverにアクセスします。CRMのWebサービスはSOA#1にあるアプリケーションに要求または情報を送信します。Visual Studio.NETにVisual Perlプラグインを追加できます。スクリプトの複雑性によっては、RESTベースのPerlスクリプトのUnix-to-Windows(UnixからWindows)のマイグレーションのコマンド・レベルPerlを使い、Visual Perlの環境に順応させることもできます。


Visual Studio

Visual Studio .Netを使えば、COMコンポーネントとしてUnixアプリケーションをカプセル化するためにKornshell、Visual Basic、C++、またはJavaを使用するよりも事は簡単です。WindowsアプリケーションがUnixのシェル・スクリプトに対して機能するようにアプリケーションを作成したり、WindowsプラットフォームにUnixアプリケーションをマイグレーションして外部Webサービスと接続するようにするよりも、Visual Studio .Netを使って作業する方が簡単です。

ここでいくつかヒントを与えましょう。まず、パブリック・ロケーション(public location)にて独自のWSDLを公開してインターオペラビリティーの相違点を解決すべきです。Rational Application Developerの「ボトムアップ」のアプローチ(Bottom Up approach)または、Visual Studio .Netの「WSDL第一(WSDL First approach)」のアプローチにて、自動生成されたWSDLファイルをスキップできます。Rational Application Developerのスケルトン(Skeleton)または「トップダウン」のアプローチ(Top Down approach)を使ってWSDLファイルから始めてJava Class実装を満たすことも可能です。別の方法として、Visual Studioの「WSDL第一」のアプローチでのWSDLファイルの自動生成を使用不可(disable)にして独自のWSDLを公開することもできます。

次に、作業できるWSDLテンプレートを自らに供給するのでしたら、Rational Application Developerの(Java Beanからの)ボトムアップのアプローチ、(クラス・モデルをベースにしたテンプレート・コードを生成するための)Rational XDE、または(Webサービスのためにコードを書き出すことにより開始した後にテンプレート・コードを生成するための)Visual StudioのImplementation First Approach(実装からのアプローチ)を考慮しましょう。Rational Application DeveloperはWSDLエディターを提供しますが、Visual Studio.Netはそうしないかも知れません。


SOAの数は?

EAIアプリケーションとリンクするのに使えるSOAの数は、プロジェクトの複雑性、インターオペラビリティーの問題、ビジネス・プロセス、そしてローディングのパフォーマンスに関する問題の間で行なわれる兼ね合いに依存します。SOAPオーバーヘッドを回避するように、開発のライフ・サイクルを通してSOAオーバーロードが発生しないことを保証しなくてはなりません。サイクルのそれぞれの時点にてオーバーロードの有無をテストすべきです。


まとめ

マルチプラットフォームSOAの間にある外部Webサービス・インターオペラビリティーの最大化においては、どれだけの数のSOAが作成可能かの制限を設定するなど先回りをして計画することが必要です。ビジネス・アナリストとIT専門家のグループと連絡を取り、多種にわたるパフォーマンスの問題や議論を交わすべきです。インターオペラビリティーの問題の解決が、アプリケーション作成の作業をかなり楽にしてくれることに気付かれることでしょう。それぞれが異なるプラットフォームそして要求されたプロトコルを使用できる外部Webサービスを作成できます。問題の解決がマルチプラットフォームSOAのシステムを設計そして分析するという作業をさらに簡単にしてくれることに、アナリストは気付くでしょう。どのプラットフォームで SOAオーバーロードを背負い込まずに Webサービスが実行可能かを判断することもできます。


参考文献

著者について

Judith M. Myerson はシステム・アーキテクト兼システム・エンジニアです。ミドルウェア・テクノロジー、企業単位のシステム、データベース・テクノロジー、アプリケーション開発、ネットワーク管理、セキュリティー、RFID テクノロジー、そしてプロジェクト管理を含む数多くの分野を得意としています。

不正使用の報告のヘルプ

不正使用の報告

ありがとうございます。 このエントリーは、モデレーターの注目フラグが設定されました。


不正使用の報告のヘルプ

不正使用の報告

不正使用の報告の送信に失敗しました。


developerWorks: サイン・イン


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


お客様が developerWorks に初めてサインインすると、プロフィールが作成されます。 プロフィールで選択した情報は公開されますが、いつでもその情報を編集できます。 お客様の姓名(非表示設定にしていない限り)とディスプレイ・ネームは、投稿するコンテンツと一緒に表示されます。

表示名をお選びください

developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

(半角英数字で3文字以上31文字以下にする必要があります)


「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 利用条件

 


この記事を評価する

コメント

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=SOA and web services
ArticleID=243804
ArticleTitle=企業単位のSOAにてWebサービスを扱う 第2回: 外部Webサービス・インターオペラビリティーを最大化
publish-date=02242005

タグ

Help
このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。

スライダーバーを使用することで、より多く(少なく)タグを表示します。

人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。

マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。

このタグで、My developerWorks のすべてのタイプのコンテンツを見つけるために検索フィールドを使用します。人気のタグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するトップのタグを表示します。マイ・タグは、この特定のコンテンツ・ゾーン(例えば、Java テクノロジー、Linux や WebSphere など)に対するお客様ご自身のタグを表示します。