私はSOAについて読んでいるところですが、サービスレジストリ/UDDIについては定期的に言及されています。いい感じですが、実際にはどのように使われていますか?
- レジストリは、論理サービスをその物理的な実装(ポート、URLなど)から切り離すことを目的としていますか?
- レジストリは、遊ぶための興味深いサービスを探している人間が閲覧することを目的としていますか?
- アプリケーションを使用するサービスに配線するのは「間違っている」でしょうか?
私はSOAについて読んでいるところですが、サービスレジストリ/UDDIについては定期的に言及されています。いい感じですが、実際にはどのように使われていますか?
実用的というよりも、理論的に役立つと思います。これはめったに実装されず、めったに使用されません。実際には、DNS は、ネットワーク上のリソースの場所を把握するための十分な抽象化ツールを提供します。
サービス レジストリは、利用可能なすべてのサービスに関する情報を格納および公開します。主に、それらのインターフェイスの説明と現在の URI (IP、ポートなど) です。このようにして、アプリケーションはレジストリに必要なサービスを要求するだけで、適切なサービス実装の詳細を取得して接続できます。
サービスのレジストリを取得する方法は UDDI だけではありません。ただし、UDDI は Web サービスのみを対象としているため、SOA が Web サービスのみで構成されている場合にのみ役立ちます。
1) 正しい。
2) いいえ、実際には人間の目用ではありません。確かに、ディレクトリを参照するためのツールがありますが、それらは主にレジストリが必要なサービスを取得しているかどうかなどを調べるためのものです。実際の使用は、アプリケーション/サービスとレジストリの間で直接行われます。
3) それはあなたが達成したいことによります。SOA を構築したい場合、これは SOA の疎結合パラダイムと矛盾するため、それは「間違っている」と考えます。これがあなたの唯一のサービスであり、それを使用する唯一のアプリケーションであり、サービスがそのURIを変更しない可能性が高い場合、それを配線することに間違いなく問題はありません-しかし、おそらくこのサービスを分離する必要はありません:)
マルチキャストを使用してサービスを発見するのはどうですか? jgroups や SLP を使用するのが好きですか? すべてのサービスが互いを検出し、必要なサービスをプロキシに挿入します。次に、実際のトランスポート実装の上に抽象化を構築します。(例: rest、soap、rmi)