そして近年では、オブジェクト分散技術の流れを組んだ「SOA(Service Oriented Architecture、サービス指向アーキテクチャ)」と呼ばれる形態のシステムが一般的になってきました。SOAとは、アプリケーションの機能を「サービス」という単位で部品化して、それらを用途に合わせて組み合わせてシステムを構築する設計手法です。分散オブジェクト技術と大きく異なる点は、「処理を行う単位が“サービス”だ」ということです。
さらにサービスを自由に組み合わせられる柔軟性や、1つのサービスをさまざまなシステムから呼び出せる再利用性なども大きな特徴です。非常に有用なシステム形態ですが、基本的に疎結合で非同期通信のため、リアルタイムで処理を行うシステムには向いていません。
実は、SOAは新しい設計手法ではありません。以前は前述した分散オブジェクト技術のCORBAや、マイクロソフトが定めた「DCOM(Distributed Component Object Model)」などで実現しようとされていました。当時はCORBAの仕様が複雑だったことや、DCOMのプラットフォームがWindowsに限られているなどの理由でSOAの考え方は普及しませんでした。
しかし、「XML Webサービス」(以下、「Webサービス」)という技術の登場によりSOAが再注目され出しました。
Webサービスとは、ネットワーク上に分散しているアプリケーションをXML形式のフォーマットを用いた“メッセージ”の送受信によってほかのアプリケーションと連携させる仕組み、またはその連携するアプリケーションのことです。
インターネットの標準技術を使用できることや、クロスプラットフォーム対応、レガシーシステムとの連携や、コストが低いことも普及している要因でしょう。Webサービスは基本的に以下の3つの概念で構成されています。
Javaでは「JAX-WS(Java API for XML-Based Web Services)」と呼ばれるSOAPをベースにしたWebサービスを扱うためのAPIがあります。JCP(Java Community Process)でJSR-224として仕様が策定されています。JAX-WSでやりとりするメッセージはXMLベースのため、プラットフォームに依存もしません。
またJavaとXMLをデータバインディングする「JAXB(Java Architecture for XML Binding)」という仕様もあるため、ユーザーは意識せずに相互変換してマッピングできます。
また近年では、企業の業務システムのWebサービスにSOAPよりもREST(REpresentational State Transfer)スタイルのWebサービスが選ばれることが増えてきています。RESTとはWebサービスをリソースと見なして、そのWebサービスを示すURLによって一意に識別するという手法です。
RESTでは基本的なCRUD(Create(作成)/Read(読み取り)/Update(更新)/Delete(削除))を以下のプロトコル・メソッドを使用します。
RESTが選ばれるのは、HTTPプロトコルを使用することや、SOAPよりXMLの記述が簡易であることが理由でしょう。
Javaには「JAX-RS(Java API for XML-based RESTful Web Services」と呼ばれるRESTfulなWebアプリケーションを開発するためのAPIもあります。後述する「java.net」コミュニティで開発が行わている「Jersey」というリファレンス実装もあります。
一方、.NETでは分散型アプリケーションを統合的に提供する技術として「WCF(Windows Communication Foundation)」というフレームワークがあります。WCFもSOAに対応すべく設計・構築されています。
WCF導入前に提供されていた以下の仕様は通信要件によって提供され、互換性がありませんでした。
そこで通信方式を共通化して扱えるようにしたフレームワークがWCFです。WCFは表の通信方式をサポートしています。
表1 WCFで使用可能な通信方式(書籍「Visual Studio 2010 スタートアップガイド」翔泳社刊より引用) | ||||||||||||||||||
|
WCFでは、通信を提供する側を「サービス」、サービスを呼び出す側を「クライアント」と呼びます。このサービス・クライアント間で相互にメッセージをやりとりすることでアプリケーション間の通信を実現しています。このサービスの提供口のことを「エンドポイント」といいます。
エンドポイントは、以下の4つの要素で構成されています。
またエンドポイントは用途に応じてサービス内に複数持つことができ、通信方式やバインディングが異なるエンドポイントを構成可能です。
Webサービスを使うことにより、Javaと.NETの連携も可能になりました。例えばUI部分を.NETのWPF(Windows Presentation Foundation)でリッチクライアントにし、Java EEサーバと連携するシステムの場合は、以下のように構築できます(図の「J2EE」は、現在のJava EEのことです)。
WPFのフロントエンドとJavaのバックエンドとのやりとりに、WCFも使用可能です。
また企業間でJavaと.NETの連携を実践している例もあります。NTTデータイントラマートとマイクロソフトです。NTTデータイントラマートのWebアプリケーションの構築や運用、帳票作成やワークフロー管理ができる「intra-mart」とマイクロソフトのOffice製品とMicrosoft Office SharePoint Server(MOSS)を連携させるソリューションを発表しました。
WS-*による通信技術の向上も手伝い、今後はさらに相互運用性の高い技術が増えるかもしれません。
Copyright © ITmedia, Inc. All Rights Reserved.