1

UDDIとは何かを完全には理解していないかもしれませんが、提供されているすべてのサービスを1つのサーバーに公開する手法を考えていますか?

「サーバー」とは、物理アドレス(などwww.example.com)を理解する必要がありますか、それともプログラムされたツール(たとえば、NuSOAPについてPHPファイルを含むnusoap.php)を理解する必要がありますか?

したがって、サーバーが単なるPHPファイルの場合、ファイルに追加?wsdlすると、登録されているすべての関数のリストが表示されます。これはすでにUDDIと呼ばれるものですか?

そして最後に、NuSOAPはUDDIをサポートしていますか?

4

1 に答える 1

2

混乱しているようですので、混乱を解消してみましょう。最初にいくつかの定義!

Webサービスは、マシン間の通信を可能にする方法です。ネットワークを介して一部の操作を公開すると、Webサービスが作成されます。他のマシンは、これらの操作を使用してマシンと「通信」し、Webサービスのクライアントになります。クライアントはあなたのウェブサービスに情報を要求し、彼らはあなたのウェブサービスを「消費する」と言われています。そしてもちろん、プロバイダーなしでコンシューマーを持つことはできないので、Webサービスの「プロバイダー」があります。

しかし、マシンはどのようにして互いに通信する方法を知っているのでしょうか?

SOAPは、情報を交換するためのプロトコルです。これは、メッセージを標準のエンベロープ+ヘッダー+本文の要求でラップすることにより、共通の議論の場(マシンは同じ言語を話します)を定義します。

しかし、メッセージ自体はどうですか?それはどのように定義されていますか?Webサービスを公開するときは、クライアントを実装する方法を他の人に伝える必要があります(つまり、操作と、送信または期待するメッセージを文書化します)。たとえば、操作、メッセージ形式、パラメーターのタイプなどを詳しく説明するPDFを使用してこれを行うことができます。しかし、より良い方法があります。その場でクライアントを生成できる方法です。WSDL(慣例により、?wsdlWebサービスエンドポイントアドレスを追加します)。

WSDLは、サービスを呼び出す方法、サービスが期待するパラメーター、およびサービスが返すもの(基本的に、サービスを呼び出すことができるようにするために尊重する必要があるコントラクト)の機械可読な説明を提供します。WSDLを読み取り、Webサービスクライアントのコードを作成するか、メッセージの低レベルの操作に頼ることなくWebサービスを簡単に呼び出すことができるユーティリティ関数を提供できるツールがあります。

NuSOAPはそのようなツールです。これは、SOAPWebサービスを利用できるようにするPHPクラスのセットです。

しかし、電話をかけるために必要なものがすべて揃ったら、その電話をかけるためのWebサービスアドレスがどこにあるかをどうやって知ることができますか?

ヒントとして、WSDL内で見つけることができますが、常に信頼できるとは限らないため、Webサービスプロバイダーから入手する必要があります。次に、そのアドレスを使用して、Webサービスを何度も何度も呼び出します。

しかし、プロバイダーがインフラストラクチャに変更を加え、Webサービスが別のアドレスで公開されている場合はどうなるでしょうか。古いアドレスで接続しているため、クライアントは機能しなくなります。ここでも、プロバイダーからアドレスを取得する必要があります。実行時にこのアドレスをなんとかして見つけて、Webサービスに接続できればもっと簡単ではないでしょうか。

プロバイダーが(バックアップとして)異なるアドレスで同じサービスを複数回公開している場合はどうなりますか?1つに接続し、問題が発生した場合は、同じ契約を公開している別のWebサービスを検索できます。

しかし、契約について話しているのなら、なぜ自分を単一のプロバイダーに限定するのでしょうか。プロバイダーに関係なく、特定の契約を公開するサービスを検索してみませんか?....そして、人々がWebサービスの黄色(実際には3色)ページとして機能するレジストリを使用してサービスが自発的に相互に接続する世界を想像したので、この時点で物事はちょっと手に負えなくなりました。

UDDIは、プロデューサーがWebサービスを登録し、コンシューマーがレジストリにクエリを実行して特定の契約を持つWebサービスを見つけ、後で見つけたものに接続するレジストリです。相互作用は次のようになります。

ここに画像の説明を入力してください
http://juddi.apache.org/docs/3.x/userguide/html/chap-UDDI_Registry.html

このアイデアは、契約を定義して実装を作成する企業内でうまく機能し、すべてのWebサービスは既知の品質と機能を備えています。しかし、オンラインでは機能しません。

適切な事前テストと検証、およびWebサービスが望ましくない方向に進化したり、まったく進化を停止したりしないことを保証するものがなければ、サービスが実際に宣伝していることを実行しているかどうかを検証する適切な方法はありません。 。

その結果、(パブリック)UDDIは実際には実際には使用されませんが、企業では(プライベート)UDDIから返されるものが本物であることを保証するルールを定義する契約に署名するため、企業である程度使用されます。 。

結論として(私があなたの質問に完全に対処したことを確認するために)UDDIは、プロバイダーがWebサービスに関する情報を公開する場所です。これには、仕様、インターフェイスなど、およびエンドポイントアドレスが含まれます。これはWebサービスに関する情報であり、Webサービス自体でnusoap.phpはないため、レジストリに公開されません。

UDDIをサポートするNuSOAPについては、それによって何が理解できるかは明確ではありません。UDDIはSOAPAPIを使用してアクセスできるため、NuSOAPを使用して、UDDIへのアクセスを簡単にすることができます。

于 2013-02-08T22:02:22.753 に答える