Web サービスは、分散環境内の異種アプリケーションとシステム間の通信とデータ交換を可能にするコンピュータ プログラムです。したがって、これは、人間の介入なしに、アプリケーションまたはマシンによって、インターネットまたはイントラネット上で、アプリケーションまたはマシンのために、リアルタイムで公開される一連の機能です。
「Web サービス」という用語の背後には、いくつかのテクノロジーがあります。
- REST スタイルの Web サービスは、これらの機能を、HTTP プロトコルの構文とセマンティクスによって識別およびアクセスできる一連のリソース (URI) として完全に公開します。したがって、REST タイプの Web サービスは、Web のアーキテクチャとその基本標準である HTTP と URI に基づいています。
- WS-* Web サービスは、これらと同じ機能をリモートで実行可能なサービスの形式で公開します。その仕様はSOAPおよび WSDL 標準に基づいており、ミドルウェアの世界から引き継がれた統合の問題を相互運用性の目標に変換します。 WS-* 標準は、その祖先である CORBA、RMI、または DCOM と同様に、しばしば批判されます。これらの標準は、古い RPC 原則から継承された複雑なテクノロジであり、強く結合されており、異種環境での相互運用が困難です。逆に言えば、Web は本質的に相互運用可能なプラットフォームです。
REST型Webサービス
導入
World Wide Web は、 REST アーキテクチャを使用して設計されたアプリケーションです。したがって、Web のアーキテクチャでは、クライアントとサーバーアプリケーションの概念がエージェントとリソースの概念に置き換えられます。エージェントはリソースと対話して、リソースを作成、アクセス、変更、または削除します。これまでは、主にユーザー エージェント間の対話、主にブラウザーとリソースについて説明してきました。
今日、私たちはリソースエージェント間の対話についてますます話しています。つまり、リソース間の関係です。リソースは別のリソースのエージェントになりますが、それ自体は他のエージェントからアクセス可能なリソースのままです。これはまさに、マッシュアップ アプリケーションの実装例で説明されているアーキテクチャです。
したがって、 Web サービスは、Web の従来の動作モードがユーザー エージェントを指すリソース エージェントを扱います。ただし、両方の概念は同じアーキテクチャ、REST に基づいています。
したがって、ブラウザとリソースの対話とWeb サービスとリソースの対話には基本的な違いはありません。主な違いはデータ表現の形式にあります。ブラウザまたはユーザー エージェントの場合は HTML、 Web サービスまたはリソース エージェントの場合は XML または JSON などです。
したがって、 Web サービスは、URL によって識別され、インターネット プロトコルを使用してアクセスできるリソースのソフトウェア実装として定義できます。エージェントは、コンテンツ タイプではなく、コンテンツ、つまりエージェントの状態の表現を重視します。したがって、 Web サービスは、単なるサービス プロバイダーとしてではなく、情報を操作する手段として見なされなければなりません。

WS-* Web サービス
導入
WS-* Web サービスは、WS-* 仕様のソフトウェア実装を指し、すべて異種環境でのアプリケーション間のデータ交換に使用される一連の基本プロトコルと標準に基づいています。
- メッセージを交換するための SOAP プロトコル。
- メッセージの説明用の WSDLファイル、そのデータ型…
- UDDIディレクトリ内のエントリの可能性
これらの WS-* Web サービスも、SOA アーキテクチャ タイプに従って定義されます。
さまざまなプログラミング言語およびさまざまなプラットフォームで記述されたソフトウェアは、 WS-* Web サービスを使用して、インターネットなどのコンピュータ ネットワーク上でデータを交換できます。 OASISとWorld Wide Web Consortium (W3C) は、Web サービスのアーキテクチャと標準化を担当する調整委員会です。 Web サービス実装間の相互運用性を向上させるために、WS-I組織は関連する将来の標準を進化させる一連のプロファイルを開発しました。
使用される規格
- WS-* Webサービス仕様一覧
利点
- Web サービスは、さまざまなプラットフォーム上で実行されるさまざまなソフトウェア プログラム間の相互運用性を提供します。
- Web サービスはオープン標準とプロトコルを使用します。
- プロトコルとデータ形式は可能な限りテキスト形式であるため、交換が全体的にどのように機能するかを理解しやすくなります。
- HTTP プロトコルに基づいて、Web サービスはフィルタリング ルールを変更することなく、多くのファイアウォールを通過できます。
短所
- 一部の分野の Web サービス標準は現在新しいものです。
- Web サービスは、RMI、CORBA、DCOM などの他の分散コンピューティングアプローチと比較してパフォーマンスが低いという問題があります。
- HTTP プロトコルを使用すると、Web サービスはファイアウォールによって実装されたセキュリティ対策をバイパスできます。
シナリオ
Web サービスは、標準 (主に TCP/IP、URI/URN/URL、MIME、HTTP/SMTP/…、SOAP、SSL /TLS など) を使用して消費可能なビジネスロジック(Web サービスを消費する ⇒ 使用する) を実装します。 ..トランスポート用、次にコンテンツ用の XML) を使用すると、これらの標準を使用するあらゆるテクノロジがそれを利用できるようになり、アプリケーションの相互運用性が容易になります。
Web サービスの作成は、サービス指向アーキテクチャ、つまり、ユーザーから隠されたビジネス ロジックを実装したサービスにアクセスできるようにするという要望によって正当化されます。
Business to Business (企業 ↔ 企業) のデータ交換契約のコンテキストでは、Business to Consumer (企業 ↔ クライアント/ユーザー) と同様に、Web サービスが使用されるもう 1 つの関心事は、Web サービスが HTTP プロトコルに基づいているという事実です (デフォルトではポート 80を使用します)。これを理解するには、多くの企業がセキュリティ上の理由から、多くのインターネット トラフィックをフィルタリングしてブロックするファイアウォールを使用して自社を保護していることを念頭に置いてください。この環境では、多くの (ほぼすべての) ポートが受信トラフィックと送信トラフィックに対して閉じられており、これらのファイアウォールの管理者はポートを開くことに熱心ではありません。ただし、ポート 80 は Web ブラウザで使用される HTTP プロトコルで使用されるため、常に開いています。この利点により、Web サービスは一種のトンネリングを表します。
プラットフォーム
Web サービスは、アプリケーション サーバーソフトウェアを使用して展開できます。
- Java EEのリファレンス実装を構成するJAX-WS 2.xはオープンソースであり、 GlassFishに統合されており、他の環境でも利用可能です。そのWSIT拡張機能 (「Project Tango」とも呼ばれます) は、WS-ReliableMessaging、WS-SecureConversation、WS-Trust などの実装を提供します。
- Axis とJakarta Tomcat サーバー (Apache Software Foundation の 2 つのオープンソース プロジェクト)
- CodeHaus のXFire は、Axis とは異なるアプローチの Javaフレームワークを提供します: http://xfire.codehaus.org/
- マクロメディアColdFusion MX
- Microsoft IIS HTTP サーバー (.NET Framework を使用)
- BEA WebLogic
- IBM WebSphere Application Server (Apache サーバーおよび J2EE プラットフォームに基づく)
- Oracle Corporationの Oracle Application Server
- Novell ZenWorks
- PHP NuSOAPの Web サービス開発者向けライブラリ
- gSOAP : C++ の Web サービス開発者用ライブラリ
- JBoss のJBossアプリケーション サーバー。 JEMS (JBoss Enterprise Middleware System) のコンポーネント。Hibernate リレーショナル永続フレームワークも含まれます。
